k8s 创建可视化管理面板 dashboard

kubernetes 开发了一个基于web的用户界面(Dashboard)。用户可以使用Dashboard部署容器化的应用,还可以监控应用的状态,执行故障排查以及管理kubernetes中各种资源。

本次安装的环境:k8s 集群版本为 v1.25,dashboard 的版本是 v2.7.0。

1. 下载 yaml 文件

wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml

2. 修改 Service

这一步主要是为了暴露 dashboard 服务端口。

kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  type: NodePort  # 新增
  ports:
    - port: 443
      targetPort: 8443
      nodePort: 30010  # 新增
  selector:
    k8s-app: kubernetes-dashboard

修改 Service 类型为 NodePort 类型,然后指定端口为 30010。

3. 创建 dashboard

# 创建
kubectl apply -f recommended.yaml
# 查看 pod 状态
kubectl get pod -n kubernetes-dashboard

4. 创建用户

创建一个 dashboard-admin 用户,并绑定角色 cluster-admin,用以获取登录的 token。

# 创建 dashboard-admin 用户
kubectl create serviceaccount dashboard-admin -n kubernetes-dashboard
# 绑定 clusterrolebinding
kubectl create clusterrolebinding dashboard-admin-rb --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard-admin

5. 创建 token

在以前版本的 kubernetes 中,进行了创建 serviceaccount 会自动生成一个 Secret 里面存放 token 值,但是新版本不会这样做了。可以参考之前的文章 k8s 手动管理 ServiceAccount 的 Secret

# dashboard-admin-token.yaml
cat > dashboard-admin-token.yaml<<EOF
kind: Secret
metadata:
  name: dashboard-admin-secret
  namespace: kubernetes-dashboard
  annotations:
    kubernetes.io/service-account.name: dashboard-admin
type: kubernetes.io/service-account-token
EOF
# 创建 token
kubectl apply -f dashboard-admin-token.yaml

6. 获取 token 登录页面

[root@master sa]# kubectl describe secret dashboard-admin-secret -n kubernetes-dashboard
Name:         dashboard-admin-secret
Namespace:    kubernetes-dashboard
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: dashboard-admin
              kubernetes.io/service-account.uid: 86a0f643-c6e5-44a3-93f1-cd28aa090be9

Type:  kubernetes.io/service-account-token

Data
====
token:      eyJhbGciOiJSUzI1NiIsImtpZCI6IlJlaHp4U0syRTJzSWYzcnlxV2NXX0NCWUhpampSWjU4bjdtdG1yeXBuX3cifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tc2VjcmV0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRhc2hib2FyZC1hZG1pbiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6Ijg2YTBmNjQzLWM2ZTUtNDRhMy05M2YxLWNkMjhhYTA5MGJlOSIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlcm5ldGVzLWRhc2hib2FyZDpkYXNoYm9hcmQtYWRtaW4ifQ.kwMoelHZYpo8-S27-LhfcA75kwUj_xRE7hN2bshfMcyo8X1VvHoq7UQ_qk97NwFXMSF93wzdfcr0mVn12czaQkYxlLcdE6YVNNl8wcUq21YPMJmrwxj2yCR5fPUqh_2zAUJcVNlSbis3MCO_TiN3t5ljVMyWpeBXYbcxd7Sh_wcGNmgi6jb1u_7lnZL1XOd2jq9Wm2QupqQKtF_s-U80RIYE20g8pR-Qz9u65W-bU__khtIkJGMsWuyLUN-G8Jnx90ypXs3a18CaAfdaH6SVOJcWTnRisX1QhlUnP4OsO8cQ40r1gUWmDYQJr-mqBJ_MaYjBA5XnTm9ABtO5FIu36Q
ca.crt:     1070 bytes
namespace:  20 bytes

访问 https://任一节点ip:30010 端口,将 token 填写进行登录即可,页面如图所示:

post-805-63afbac1bc981

post-805-63afbac1ce92c

7. 简单使用 dashboard

登录面板以后,可以很方便的集群的各种资源如 pod、deployment、configmap 等进行查看。同时,提供了多种创建资源的方式。

post-805-63afbac1ce92c

接下来用表单创建一个 nginx 的 deploy。

post-805-63afbac2e9a1d

可以看见已经创建完成。

post-805-63afbac3d741f

阅读剩余
THE END