暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

部署Kubernetes Dashboard

韩公子的Linux大集市 2025-01-31
249

Dashboard概念

这是一个官方的、通用的、基于WebUI,用于管理Kubernetes集群。Kubernetes Dashboard可以让您部署容器化应用到Kubernetes集群中,同时对集群资源进行故障排除,并且管理集群本身


安装Dashboardmaster主节点)

1>安装

root@zhaoyx-k8s-master:~# wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.0/aio/deploy/recommended.yaml

--2025-01-12 11:34:17-- https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.0/aio/deploy/recommended.yaml

正在解析主机 raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.108.133, 185.199.109.133, 185.199.111.133, ...

正在连接 raw.githubusercontent.com (raw.githubusercontent.com)|185.199.108.133|:443... 已连接。

已发出 HTTP 请求,正在等待回应... 200 OK

长度:7621 (7.4K) [text/plain]

正在保存至recommended.yaml

recommended.yaml 100%[=======================================================>]   7.44K  --.-KB/s  用时 0s      

2025-01-12 11:34:18 (90.8 MB/s) - 已保存 “recommended.yaml” [7621/7621])


 

如果无法下载,可以直接访问

raw.githubusercontent.com/kubernetes/dashboard/v2.5.0/aio/deploy/recommended.yaml

打开网页后,在master主节点上创建recommended.yaml文件,将网页代码复制到yaml文件里面,然后apply

root@zhaoyx-k8s-master:~#  kubectl apply -f recommended.yaml

namespace/kubernetes-dashboard created

serviceaccount/kubernetes-dashboard created

service/kubernetes-dashboard created

secret/kubernetes-dashboard-certs created

secret/kubernetes-dashboard-csrf created

secret/kubernetes-dashboard-key-holder created

configmap/kubernetes-dashboard-settings created

role.rbac.authorization.k8s.io/kubernetes-dashboard created

clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created

rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created

clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created

deployment.apps/kubernetes-dashboard created

service/dashboard-metrics-scraper created

deployment.apps/dashboard-metrics-scraper created


 

2>查看,成功创建

查看是否启动dashboardpod

root@zhaoyx-k8s-master:~# kubectl get pod --all-namespaces

NAMESPACE NAME                                         READY   STATUS        RESTARTS       AGE

kube-system calico-kube-controllers-64cc74d646-26rqk     1/1     Terminating   0              20h

kube-system calico-kube-controllers-64cc74d646-4xw7n     1/1     Running       1 (114m ago)   3h2m

kube-system calico-node-4rckb                            1/1     Running       0              20h

kube-system calico-node-ls28t                            0/1     Running       2 (114m ago)   20h

kube-system calico-node-rjrw4                            1/1     Running       0              20h

kube-system calico-node-w76r5                            0/1     Running       0              20m

kube-system coredns-6d8c4cb4d-7nscd                      1/1     Running       1 (114m ago)   3h2m

kube-system coredns-6d8c4cb4d-nks89                      1/1     Terminating   0              23h

kube-system coredns-6d8c4cb4d-ntjj7                      1/1     Running       1 (114m ago)   3h2m

kube-system coredns-6d8c4cb4d-xgs8z                      1/1     Terminating   0              23h

kube-system etcd-zhaoyx-k8s-master                       1/1     Running       3 (114m ago)   23h

kube-system kube-apiserver-zhaoyx-k8s-master             1/1     Running       2 (114m ago)   23h

kube-system kube-controller-manager-zhaoyx-k8s-master    1/1     Running       2 (114m ago)   23h

kube-system kube-proxy-4frsq                             1/1     Running       0              20m

kube-system kube-proxy-wv2zb                             1/1     Running       2 (114m ago)   23h

kube-system kube-proxy-xbscs                             1/1     Running       0              21h

kube-system kube-proxy-xr9kf                             1/1     Running       0              20h

kube-system kube-scheduler-zhaoyx-k8s-master             1/1     Running       3 (114m ago)   23h

kubernetes-dashboard dashboard-metrics-scraper-799d786dbf-gchkd   1/1     Running       0              2m

kubernetes-dashboard kubernetes-dashboard-546cbc58cd-qf84l        1/1     Running       0              2m

tigera-operator tigera-operator-85fdd6cc7f-dlzn7             1/1     Running       0              20h


 

查看dashboard对应服务

root@zhaoyx-k8s-master:~# kubectl get svc --all-namespaces

NAMESPACE NAME                        TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                  AGE

default kubernetes                  ClusterIP   10.96.0.1      <none>        443/TCP                  23h

kube-system kube-dns                    ClusterIP   10.96.0.10     <none>        53/UDP,53/TCP,9153/TCP   23h

kubernetes-dashboard dashboard-metrics-scraper   ClusterIP   10.96.66.162   <none>        8000/TCP                 2m8s

kubernetes-dashboard kubernetes-dashboard        ClusterIP   10.96.17.253   <none>        443/TCP                  2m8s


 

1>删除现有dashboard服务

因为类型为ClusterIP,外部机器无法访问,也不便于我们通过浏览器访问,所以更改类型为NodePort

root@zhaoyx-k8s-master:~# kubectl delete service kubernetes-dashboard --namespace=kubernetes-dashboard

service "kubernetes-dashboard" deleted

service "kubernetes-dashboard" deleted

The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, reload-or-restart, try-reload-or-restart, force-reload, status, condrestart). For other actions, please try to use systemctl.


 

查看是否删除成功

root@zhaoyx-k8s-master:~# kubectl get svc --all-namespaces

NAMESPACE NAME                        TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                  AGE

default kubernetes                  ClusterIP   10.96.0.1      <none>        443/TCP                  23h

kube-system kube-dns                    ClusterIP   10.96.0.10     <none>        53/UDP,53/TCP,9153/TCP   23h

kubernetes-dashboard dashboard-metrics-scraper   ClusterIP   10.96.66.162   <none>        8000/TCP                 7m18s


 

2>创建配置文件(一个nodeportservice

root@zhaoyx-k8s-master:~# vim dashboard-svc.yaml

root@zhaoyx-k8s-master:~# cat dashboard-svc.yaml

kind: Service

apiVersion: v1

metadata:

labels:

k8s-app: kubernetes-dashboard

name: kubernetes-dashboard

namespace: kubernetes-dashboard

spec:

type: NodePort

ports:

- port: 443

targetPort: 8443

selector:

k8s-app: kubernetes-dashboard

root@zhaoyx-k8s-master:~# kubectl apply -f dashboard-svc.yaml 

service/kubernetes-dashboard created

3>再次查看服务成功

root@zhaoyx-k8s-master:~# kubectl get svc --all-namespaces

NAMESPACE NAME                        TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                  AGE

default kubernetes                  ClusterIP   10.96.0.1      <none>        443/TCP                  26h

kube-system kube-dns                    ClusterIP   10.96.0.10     <none>        53/UDP,53/TCP,9153/TCP   26h

kubernetes-dashboard dashboard-metrics-scraper   ClusterIP   10.96.66.162   <none>        8000/TCP                 149m

kubernetes-dashboard kubernetes-dashboard        NodePort    10.96.184.14   <none>        443:31931/TCP            2m4s


 

4>想要访问dashboard服务,就要有访问权限,创建kubernetes-dashboard管理员角色

root@zhaoyx-k8s-master:~# cat dashboard-svc-account.yaml 

apiVersion: v1

kind: ServiceAccount

metadata:

name: dashboard-admin

namespace: kube-system

---

kind: ClusterRoleBinding

apiVersion: rbac.authorization.k8s.io/v1

metadata:

name: dashboard-admin

subjects:

- kind: ServiceAccount

name: dashboard-admin

namespace: kube-system

roleRef:

kind: ClusterRole

name: cluster-admin

apiGroup: rbac.authorization.k8s.io


 

配置完文件后执行以下命令再次apply

root@zhaoyx-k8s-master:~# kubectl apply -f dashboard-svc-account.yaml

serviceaccount/dashboard-admin created

clusterrolebinding.rbac.authorization.k8s.io/dashboard-admin created

 

5>获取token

先获得dashboardsecre对象名字

root@zhaoyx-k8s-master:~# kubectl get secret -n kube-system|grep admin|awk '{print $1}'

dashboard-admin-token-2tfgd


 

获得到secret里的token内容后(token理解为认证密码)

root@zhaoyx-k8s-master:~# kubectl describe secret dashboard-admin-token-2tfgd -n kube-system|awk '/^token/ {print $2}'

eyJhbGciOiJSUzI1NiIsImtpZCI6IjNocHV3djBnVUh3dnI0NHhHRXIwc1lQX0xJazBhbnN3R0k5V3hoNW1IVm8ifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4tMnRmZ2QiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiNWJmMzY1ZmEtM2EzOC00ODlmLTlhYWEtMmQ2Zjg2YTY3MDY4Iiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRhc2hib2FyZC1hZG1pbiJ9.YLW3SiWu32mfZaEvC321wieUqO1A8_F6ZEgIJx9G4Z3H9FTGVM5a5qqFxMky2_Q5GDaudtNk5NN-2EJNLAWf5mM5qR9VJE_nFUqdLB2auQEENv0cL_7-d5PpuIx22_G35J1G-RUEJrCvvLH5zXOBi0H9UHP6fr8-zIpx_zF7mxrcvZFCW51n1AJ2zhJKvVEekqH_QAH6y3bSdflL7QZ4_GHnFpxHvVn50l7301HFT12y8yuJu8LXnP4-fsggtC63LvT_sD7bhdHpctD9EjKItZ_oP9fhx5iKlf8kru2cyVeggF7JgKdnpcLswYVM2EOIiBpu6fqMmqoTJ3AyW1CmRg


 

上述黄色标注和图片红框标注内容为你自己服务secret里的对象名字!!!

6>浏览器访问

查看端口

root@zhaoyx-k8s-master:~# kubectl get svc --all-namespaces

NAMESPACE NAME                        TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                  AGE

default kubernetes                  ClusterIP   10.96.0.1      <none>        443/TCP                  26h

kube-system kube-dns                    ClusterIP   10.96.0.10     <none>        53/UDP,53/TCP,9153/TCP   26h

kubernetes-dashboard dashboard-metrics-scraper   ClusterIP   10.96.66.162   <none>        8000/TCP                 159m

kubernetes-dashboard kubernetes-dashboard        NodePort    10.96.184.14   <none>        443:31931/TCP            11m


 

红框内容对应自己服务器所查看端口

浏览器访问https://172.16.1.1:31931/

蓝色部分为node节点IP地址,黄色部分为所查看端口,协议一定是https

如果浏览器访问不为如下图所示在页面中提示不安全页面时,鼠标点击页面任何地方,键盘直接输入thisisunsafe,不要输入到地址栏


 

选择Token一栏将上述secret里的token内容粘贴到令牌


 


文章转载自韩公子的Linux大集市,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论