【kubernetes系列】Kubernetes之配置dashboard安装使用

概述

Dashboard 是基于网页的 Kubernetes 用户界面。 你可以使用 Dashboard 将容器应用部署到 Kubernetes 集群中,也可以对容器应用排错,还能管理集群资源。 你可以使用 Dashboard 获取运行在集群中的应用的概览信息,也可以创建或者修改 Kubernetes 资源 (如 Deployment,Job,DaemonSet 等等)。但是一般还是图形化界面一般还是给开发或者对kubernetes不太熟悉的人查看使用。

安装部署

可以安装自己所需版本下载。和k8s具体的使用版本关系部大,可任意选择。我此次测试使用的是v2.7.0版本。

默认安装

#下载所需yaml文件
[root@k8s-m1 certs]# wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml#修改recommended.yaml中service的相关部分,可以临时使用nodeport的方式访问
kind: Service
apiVersion: v1
metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboardnamespace: kubernetes-dashboard
spec:type: NodePortports:- port: 443targetPort: 8443nodePort: 32443selector:k8s-app: kubernetes-dashboard获取登录的token
[root@k8s-m1 certs]# kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep dashboard-token | awk '{print $1}')

登录查看

使用集群任意节点的ip地址登录,端口上面暴露的32443。认证方式使用token,具体的为上面命令获取。
在这里插入图片描述

通过登录发现,只能查看default命名空间下的资源,下面我们通过自己创建账户查看集群内所有资源,并手动添加证书(貌似新版本已经不需要手动添加了,如果浏览器不支持自动生成的证书,可以手动创建)。

自定义安装

创建证书

[root@k8s-m1 k8s-dashboard]# (umask 077;openssl genrsa -out dashboard.key 2048)
Generating RSA private key, 2048 bit long modulus
...........+++
................................+++
e is 65537 (0x10001)
[root@k8s-m1 k8s-dashboard]# openssl req -nodes -newkey rsa:2048 -keyout certs/dashboard.key -out certs/dashboard.csr -subj "/C=/ST=/L=/O=/OU=/CN=kubernetes-dashboard"
Generating a 2048 bit RSA private key
...............+++
..................................+++
writing new private key to 'certs/dashboard.key'
-----
No value provided for Subject Attribute C, skipped
No value provided for Subject Attribute ST, skipped
No value provided for Subject Attribute L, skipped
No value provided for Subject Attribute O, skipped
No value provided for Subject Attribute OU, skipped[root@k8s-m1 k8s-dashboard]# openssl x509 -req -sha256 -days 365 -in certs/dashboard.csr -signkey certs/dashboard.key -out certs/dashboard.crt
Signature ok
subject=/CN=kubernetes-dashboard
Getting Private key[root@k8s-m1 k8s-dashboard]# kubectl create secret generic kubernetes-dashboard-certs --from-file=$HOME/certs -n kubernetes-dashboard
secret/kubernetes-dashboard-certs created

修改yaml文件

在上面基础安装上继续修改recommended.yaml,如下。添加使用自己生成的证书,增加token过期实时间。

  containers:- name: kubernetes-dashboardimage: kubernetesui/dashboard:v2.7.0imagePullPolicy: Alwaysports:- containerPort: 8443protocol: TCPargs:- --auto-generate-certificates- --tls-cert-file=/certs/dashboard.crt- --tls-key-file=/certs/dashboard.key- --namespace=kubernetes-dashboard- --token-ttl=604800#- --enable-skip-login
##然后直接部署
[root@k8s-m1 k8s-dashboard]# kubectl apply -f recommended.yaml 
namespace/kubernetes-dashboard unchanged
serviceaccount/kubernetes-dashboard unchanged
service/kubernetes-dashboard unchanged
Warning: kubectl apply should be used on resource created by either kubectl create --save-config or kubectl apply
secret/kubernetes-dashboard-certs configured
secret/kubernetes-dashboard-csrf configured
secret/kubernetes-dashboard-key-holder unchanged
configmap/kubernetes-dashboard-settings unchanged
role.rbac.authorization.k8s.io/kubernetes-dashboard unchanged
clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard unchanged
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard unchanged
clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
deployment.apps/kubernetes-dashboard configured
service/dashboard-metrics-scraper unchanged
deployment.apps/dashboard-metrics-scraper unchanged

创建 admin 账户

创建一个kubernetes-dashboard这个服务使用的serviceAccount,如admin

[root@k8s-m1 k8s-dashboard]# cat dashboard-admin.yaml 
---
apiVersion: v1
kind: ServiceAccount
metadata:name: admin-usernamespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:name: admin-user
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: cluster-admin
subjects:
- kind: ServiceAccountname: admin-usernamespace: kubernetes-dashboard

登录

通过如下命令获取 token ,并通过 https 进行 dashboard 端口访问

[root@k8s-m1 k8s-dashboard]# kubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/admin-user -o jsonpath="{.secrets[0].name}") -o go-template="{{.data.token | base64decode}}"
eyJhbGciOiJSUzI1NiIsImtpZCI6IjJMRm8zNktIWkdvaHRDZ2szX2Vyd3JFQTE5OEZ6TjNuRnUyYTFueGE3emMifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLWd6Nmw0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiI2OTEzMDRjOC1lMGUzLTQ0YzEtOGM3ZC0xYzYwMmZkMTJlMGUiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZXJuZXRlcy1kYXNoYm9hcmQ6YWRtaW4tdXNlciJ9.TafS9ncca0pQwm74MtIUbkmilR_KW3tMmuJIkyUEpm02pn3bptZ4WNwMxge9BeP_WZaDOXkEZ8TQtXLjAzI-oTPY9FP0wGUQ0Ae-OoMtsKefryvJblBZj2g9G5HOVAdUm9vlnl-i0EiwdgYzro-klI5YSvWr4V2-xODlfwTeVvH1lP40__Xu0_uXv7KqdQi6t3Ls_dGHuYnIcRQAQmkDZLx4ADuE0bdA98tOcXWrc88De--aXzWJc8MJtpS4ibJZy71_RgUe5Y1EZjU5aD7PzWJqYSWobuGh9jtrTVR7J91pMp_ubBxAmL0fNdpmzV4tZLVtnsQUEJqMe-zwB_Vnyw
[root@k8s-m1 k8s-dashboard]#

在这里插入图片描述
可以检查一下资源是否正常查看访问。

通过kubeconfig登录dashboard

由于每次登录都去找token的话相当麻烦,下面我们生成一个kubeconfig的文件用于登录。

## 创建cluster集群,注意集群信息,ip、端口写正确
[root@k8s-m1 k8s-dashboard]# kubectl config set-cluster kubernetes --certificate-authority=/etc/kubernetes/pki/ca.crt --server="https://192.168.2.250:8443" --embed-certs=true --kubeconfig=./dashboard-admin.conf## 创建credentials
#创建credentials需要使用上面的kubernetes-dashboard-token-***对应的token信息
[root@k8s-m1 k8s-dashboard]# TOKEN=`kubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/admin-user -o jsonpath="{.secrets[0].name}") -o go-template="{{.data.token | base64decode}}"`[root@k8s-m1 k8s-dashboard]# kubectl config set-credentials dashboard-admin --token=$TOKEN --kubeconfig=./dashboard-admin.conf
## 创建context
[root@k8s-m1 k8s-dashboard]# kubectl config set-context dashboard-admin@kubernetes --cluster=kubernetes --user=dashboard-admin --kubeconfig=./dashboard-admin.conf ## 切换context的current-context
[root@k8s-m1 k8s-dashboard]# kubectl config use-context dashboard-admin@kubernetes --kubeconfig=./dashboard-admin.conf 
##切换后检查用新的上下文是否能正常查看
[root@k8s-m1 k8s-dashboard]# kubectl get pod -A## 把dashboard-admin.conf文件下载到电脑桌面,然后使用dashboard-admin.conf作为kubeconfig登录即可
[root@k8s-m1 k8s-dashboard]# sz dashboard-admin.conf 

如果使用的是dashboard版本v1.10.1或更高的版本,还可以在部署的命令行参数中添加–enable-skip-login跳过登录,相当于免密。但是该配置不建议用于生产环境。

更多关于kubernetes的知识分享,请前往博客主页。编写过程中,难免出现差错,敬请指出

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/28250.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

10.6.5 【Linux】分区命令: split

如果你有文件太大,导致一些携带式设备无法复制的问题,split可以将一个大文件,依据文件大小或行数来分区,可以将大文件分区成为小文件,快速有效。 将文件分区的话,使用-b size来将一个分区的文件限制其大小&…

java模拟MQTT客户端发送消息及EMQX配置

EMQX配置 登录地址 首先打开EMQX的管理界面,界面的地址如下, http://192.168.1.110:18083/ 规则是IP就是MQTT的IP,端口是固定的18083,输入该地址后,展示界面如下: 然后输入用户名和密码,用户…

python_day7_画图

json数据与python字典的相互转换 import json列表,其中每个元素均为一个字典 data [{"name": "张三", "age": 10},{"name": "李四", "age": 13},{"name": "jay", "age&qu…

科技云报道:数字化转型完成后,制造业如何走向“数智”时代?

科技云报道原创。 随着我国数字化转型行动的深入推进和智能制造工程的大力实施,制造业正朝着“数智”时代迈进,生成式AI被视为推动制造业智能化发展的关键驱动力。 据预测,到2027年,将有30%的制造业采用生成式AI来提升产品研发效…

汇编实现1-100累加(ARMv7)

汇编实现1-100累加 代码.text .globl _start _start:mov r0,#0 summationmov r1,#0 autoIncrementbl funadd funadd:cmp r1,#100addccs r0,r1,r0addccs r1,r1,#1mov pc,lr stop:b stop .end运行效果

【LangChain】数据连接(Data connection)

概要 许多LLM申请需要特定于用户的数据,这些数据不属于模型训练集的一部分。 LangChain 为您提供了通过以下方式加载、转换、存储和查询数据的构建块: Document loaders : 从许多不同来源加载文档Document transformers:拆分文档…

React native 已有项目升级兼容web

基础 概念 | webpack 中文文档 | webpack 中文文档 | webpack 中文网 深入理解Webpack及Babel的使用 - 掘金 Introduction to React Native for Web // React Native for Web Webpack 是一个现代的 JavaScript 应用程序的静态模块打包工具,它将应用程序所依赖的各…

Docker本地镜像发布到阿里云

我们构建了自己的镜像后,可以发布到远程镜像提供给其他人使用,比如发布到阿里云 使用build/commit生成新的镜像,并生成自己镜像的版本标签tag,此新的镜像在自己的本地库中,使用push可以将镜像提交到阿里云公有库/私有库…

确认应答机制与超时重发机制【TCP原理(笔记一)】

文章目录 通过序列号与确认应答提高可靠性正常的数据传输数据包丢失的情况确认应答丢失的情况发送的数据 重发超时如何确定 通过序列号与确认应答提高可靠性 在TCP中,当发送端的数据到达接收主机时,接收端主机会返回一个已收到消息的通知。这个消息叫做…

代码随想录算法训练营第十九天 | 动态规划系列5,6,7,8

动态规划系列5,6,7,8 377 组合总和 Ⅳ未看解答自己编写的青春版重点代码随想录的代码我的代码(当天晚上理解后自己编写) 爬楼梯进阶322 零钱兑换未看解答自己编写的青春版写完这道题后的感受重点代码随想录的代码动态规划,也要时刻想着剪枝操作。我的代码(当天晚上理…

通过SSH的方式连接Git仓库

前置条件 git已经安装。 生成公钥私钥 任意调出 git bash 执行: 回车两次,如果已有则需要覆盖确认 Overwrite ssh-keygen -t rsa -C "your_emailexample.com" 生成后的文件路径: C:/user/你的账户/.ssh下,其中 id…

vue写车牌号 自定义键盘

vue写车牌号自定义键盘 <template><div><div class"content-wrapper"><div class"content-top-wrapper"><van-radio-group v-model"radioCarType"><van-radio name"1">蓝牌<imgslot"icon…