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 填写进行登录即可,页面如图所示:
7. 简单使用 dashboard
登录面板以后,可以很方便的集群的各种资源如 pod、deployment、configmap 等进行查看。同时,提供了多种创建资源的方式。
接下来用表单创建一个 nginx 的 deploy。
可以看见已经创建完成。
阅读剩余
THE END