每天分享技术栈,开发工具等
(Master+Node架构)
本文将手把手教你在CentOS 7.9系统的两台服务器(Master和Node)上安装Kubernetes Dashboard,这是一个官方提供的Web可视化工具,能让你像操作手机App一样管理Kubernetes集群。 前置条件:一个有用的链接
目标:确保Kubernetes集群已正常工作,避免后续安装失败。
检查集群节点状态
# 在Master节点执行:
kubectl get nodes
期望输出:
NAME STATUS ROLES AGE VERSION
masterReadymaster5d v1.19.0
node1 Ready <none>5d v1.19.0
原理:若节点状态为Ready
,说明集群网络、组件运行正常。
确认kubectl配置正确
kubectl cluster-info
期望输出:显示Master节点的API Server地址(如[https://192.168.1.100:6443](https://192.168.1.100:6443)
)。
目标:部署Dashboard的Pod和服务,暴露访问端口。
下载官方部署文件
# 在Master节点执行:
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
注意:v2.7.0
是兼容Kubernetes 1.19的Dashboard版本,若下载失败可替换为国内镜像源地址。
修改配置文件
vi recommended.yaml
修改点:
原理:
NodePort允许通过服务器IP访问Dashboard。
kind:Service
apiVersion:v1
metadata:
labels:
k8s-app:kubernetes-dashboard
name:kubernetes-dashboard
namespace:kubernetes-dashboard
spec:
ports:
-port:443
targetPort:8443
type:NodePort# 修改这里,原值为ClusterIP
spec:
containers:
-name:kubernetes-dashboard
image:registry.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v2.7.0# 替换此行
部署Dashboard
kubectl apply -f recommended.yaml
输出示例:
namespace/kubernetes-dashboard created
serviceaccount/kubernetes-dashboard created
service/kubernetes-dashboard created
...(略)
检查Pod状态
kubectl get pods -n kubernetes-dashboard -o wide
期望输出:Pod状态为Running
,且运行在Master或Node节点上。
目标:创建管理员账号并获取登录Token。
创建管理员账号
cat | kubectl apply -f -
apiVersion: v1
kind: ServiceAccount
metadata:
name: dashboard-admin
namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: dashboard-admin
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: dashboard-admin
namespace: kubernetes-dashboard
EOF
原理:
ServiceAccount
:代表一个服务账号。ClusterRoleBinding
:将账号绑定到cluster-admin
角色(最高权限)。获取登录Token
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep dashboard-admin | awk '{print $1}')
输出示例:
Name: dashboard-admin-token-abcde
Type: kubernetes.io/service-account-token
Data:
token: eyJhbGciOiJSUzI1NiIsImtpZCI6I...(长字符串)
复制token
字段的值,这就是登录密码。
目标:通过浏览器打开Dashboard界面。
查看NodePort端口号
kubectl get svc -n kubernetes-dashboard
输出示例:
NAME TYPE CLUSTER-IP PORT(S) AGE
kubernetes-dashboard NodePort 10.96.123.456443:30001/TCP 5m
记录端口号(此处为30001
)。
https://Node节点:30001
Token
登录方式,粘贴复制的Token。
注意:浏览器可能提示证书不安全,点击“高级”→“继续访问”即可。镜像拉取失败(ImagePullBackOff)
docker pull registry.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v2.7.0
docker tag registry.aliyuncs.com/... kubernetesui/dashboard:v2.7.0 # 修改标签匹配配置文件
Dashboard页面无法打开
firewall-cmd --zone=public --add-port=30001/tcp --permanent
firewall-cmd --reload
kubectl get pods -n kube-system | grep kube-proxy
Token无效或过期
通过以上步骤,你已成功在CentOS 7.9集群上部署了Kubernetes Dashboard,现在可以:
遇到问题先检查:
kubectl get pods
)。原创声明:本文步骤经多环境实测,引用Kubernetes官方文档及社区实践,如有疑问欢迎留言讨论!