k8s-demo集群搭建详细步骤19:部署集群监控客户端 Kubernetes Dashboard v2.5.1

493 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路

一、下载并修改部署文件 dashboard.yaml

[root@master1 ~]# docker pull kubernetesui/dashboard:v2.5.1
[root@master1 ~]# docker tag kubernetesui/dashboard:v2.5.1 harbor.demo/k8s/dashboard:v2.5.1
[root@master1 ~]# docker push harbor.demo/k8s/dashboard:v2.5.1
[root@master1 ~]# mkdir -p /opt/install/dashboard
[root@master1 ~]# cd /opt/install/dashboard
[root@master1 dashboard]# wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.1/aio/deploy/recommended.yaml
[root@master1 dashboard]# cp recommended.yaml dashboard.yaml
[root@master1 dashboard]# vi dashboard.yaml
[root@master1 dashboard]# diff recommended.yaml  dashboard.yaml
39a40
>   type: NodePort
41a43
>       nodePort: 30443
190a193,194
>       imagePullSecrets:
>       - name: harbor-demo-secret
193c197
<           image: kubernetesui/dashboard:v2.5.1
---
>           image: harbor.demo/k8s/dashboard:v2.5.1
[root@master1 dashboard]#

二、部署 Dashboard

[root@master1 ~]# cd /opt/install/dashboard
[root@master1 dashboard]# kubectl apply -f  dashboard.yaml
[root@master1 dashboard]# kubectl create secret docker-registry harbor-demo-secret  \
   --docker-server=https://harbor.demo  --docker-username=admin \
   --docker-password=Harbor12345678 --docker-email=11461337@qq.com -n kubernetes-dashboard
[root@master1 dashboard]# 

三、查看Dashboard 运行状态

[root@master1 ~]# ss -lp | grep 30443
tcp    LISTEN     0      4096    *:30443                 *:*                     users:(("kube-proxy",pid=16349,fd=14))
[root@master1 ~]# kubectl get pods,svc -n kubernetes-dashboard
NAME                                             READY   STATUS    RESTARTS   AGE
pod/dashboard-metrics-scraper-799d786dbf-lpq89   1/1     Running   0          59m
pod/kubernetes-dashboard-77ff5df894-jxvfv        1/1     Running   0          52m

NAME                                TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)         AGE
service/dashboard-metrics-scraper   ClusterIP   10.1.118.31   <none>        8000/TCP        59m
service/kubernetes-dashboard        NodePort    10.1.177.39   <none>        443:30443/TCP   59m
[root@master1 ~]# kubectl -n kubernetes-dashboard get sa
NAME                   SECRETS   AGE
default                1         59m
kubernetes-dashboard   1         59m
[root@master1 ~]# kubectl -n kubernetes-dashboard get secrets
NAME                               TYPE                                  DATA   AGE
default-token-trn9k                kubernetes.io/service-account-token   3      59m
harbor-demo-secret                 kubernetes.io/dockerconfigjson        1      59m
kubernetes-dashboard-certs         Opaque                                0      59m
kubernetes-dashboard-csrf          Opaque                                1      59m
kubernetes-dashboard-key-holder    Opaque                                2      59m
kubernetes-dashboard-token-2l4t4   kubernetes.io/service-account-token   3      59m
[root@master1 ~]#

四、登录 Dashboard

1、登录地址 https://172.16.100.151:30443 IP可以是任意一个宿主机的IP地址

微信图片_20220606160431.png

2、获取Token

[root@master1 ~]# kubectl create sa dashboard-admin -n kube-system
[root@master1 ~]# kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
[root@master1 ~]# ADMIN_SECRET=$(kubectl get secrets -n kube-system | grep dashboard-admin | awk '{print $1}')
[root@master1 ~]# DASHBOARD_LOGIN_TOKEN=$(kubectl describe secret -n kube-system ${ADMIN_SECRET} | grep -E '^token' | awk '{print $2}')
[root@master1 ~]# echo ${DASHBOARD_LOGIN_TOKEN}
eyJhbGciOiJSUzI1NiIsImtpZCI6Ijh6RmZ0ZGM2aEktVVpBbmJzS0ZoelJmOE50aEVxY0tjaW5NNThoZnJKS2cifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4tcXRmazYiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiNzNhMWU4YTItMTlhMy00NTMwLTliZmYtM2YwYWY2YTg3ZmYxIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRhc2hib2FyZC1hZG1pbiJ9.K1hcYdUS0ChtFOWr6wr1oxzayqiMkSw4gqySDqX0LmsAhg99Cuxr3Vk2jp9AUa5vvGtw1_h8IC4lknTomg6y3Ebu4gh9C6cbn01NUIUdSwwPZdNHedHz2pn-u_7dXO5AKRp30r32rgxbHhQoeM9wpgMhAnZESlwYLJTGMJ0FjcOgOuZNNvPCQJDsWsgXMgRZQ_VwsQbxAXxkOUTOW3kSHnhyumoWVzX1jEHC-y4Kxj-mLfwEXVMZ8bBQltcjBqhoxlB2BsBXi1B1XBauo5QfJcaiiDV3qeVdQcZnxYhJoVHc36EzAbL0MkhhWChSKAdu5X2bqaL4e0Fjc0b3GUqyIg
[root@master1 ~]#
  • 复制上述 token,在登录页面粘贴,点击“登录”,进入首页

3、首页

微信图片_20220606160842.png

4、Pod监控页面

微信图片_20220606160955.png

5、ConfigMap页面,可以切换命名空间

微信图片_20220606161131.png

6、查看宿主机列表

微信图片_20220606161314.png

7、查看Node1监控信息

微信图片_20220606161321.png

8、每次获取Token,复制粘贴Token,登录Dashboard比较麻烦,可以创建Kubeconfig文件,用于登录

[root@master1 ~]# cd /opt/install/dashboard
[root@master1 dashboard]# kubectl config set-cluster k8s-demo \
  --certificate-authority=/etc/kubernetes/cert/ca.pem \
  --embed-certs=true \
  --server=${KUBE_APISERVER} \
  --kubeconfig=dashboard.kubeconfig

[root@master1 dashboard]# kubectl config set-credentials dashboard_user_admin \
  --token=${DASHBOARD_LOGIN_TOKEN} \
  --kubeconfig=dashboard.kubeconfig

[root@master1 dashboard]# kubectl config set-context default \
  --cluster=k8s-demo \
  --user=dashboard_user_admin  \
  --kubeconfig=dashboard.kubeconfig

[root@master1 dashboard]# kubectl config use-context default --kubeconfig=dashboard.kubeconfig
  • 设置客户端认证参数,使用前面创建的 Token
  • 把dashboard.kubeconfig文件下载到PC端,例如 sz dashboard.kubeconfig
  • 如果开始不知道怎么修改 dashboard.yaml,可以在成功启动后,登录Dashboard前执行下面的命令
[root@master1 ~]# kubectl  patch svc kubernetes-dashboard -n kubernetes-dashboard \
-p '{"spec":{"type":"NodePort","ports":[{"port":443,"targetPort":8443,"nodePort":30443}]}}'
  • 也可以通过 kubectl proxy 或者 kubectl port-forward 访问,例如
[root@master1 ~]# kubectl port-forward -n kubernetes-dashboard  svc/kubernetes-dashboard 4443:443 --address 0.0.0.0
Forwarding from 0.0.0.0:4443 -> 8443
Handling connection for 4443
Handling connection for 4443
... ... ... ...
  • 上述命令执行后,在浏览器输入登录地址 https://172.16.100.151:4443 ,这个IP只能是执行命令的宿主机IP地址

参考


  • 先用起来,通过操作实践认识kubernetes(k8s),积累多了自然就理解了
  • 把理解的知识分享出来,自造福田,自得福缘
  • 追求简单,容易使人理解,知识的上下文也是知识的一部分,例如版本,时间等
  • 欢迎留言交流,也可以提出问题,一般在周末回复和完善文档
  • Jason@vip.qq.com 2022-6-2