Kubernetes Dashboard 安装
本文以 Debian 10 , kubernetes 1.19 为例。 kubernetes 安装参考站内另一篇文章 Kubernetes 安装
参考资料:
- 官方文档: Web UI (Dashboard)
- 创建示例用户: Creating sample user
站内相关资料:
1. 部署 Kubernetes Dashboard
部署
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml
通过以下命令查看服务运行情况
kubectl get pods -n kuberenetes-dashboard
2. 配置 Dashboard 服务的访问模式为 NodePort
使用以下命令编辑服务,这里将使用vi编辑器打开服务的yaml定义。
kubectl edit service kubernetes-dashboard -n kubernetes-dashboard
找到 spec
定义,修改其中两处地方,以下是示例
spec: type: NodePort # type 从 ClusterIP 改为 NodePort ports: - port: 443 targetPort: 8443 nodePort: 38080 # 增加该项,定义对外暴露的端口 selector: k8s-app: kubernetes-dashboard
3. 创建账号
按照 Creating sample user 中的示例创建账号。(注意,官方声明这个账号权限过大,仅作为演示使用,风险自担。如果了解规则的话,可以自己创建自己的账号)
认证方面的内容可以参考站内另一篇文章 kubernetes RBAC 鉴权简单介绍
3.1 创建 ServiceAccount
在命名空间 kubernetes-dashboard
下创建一个名为 admin-user
的 ServiceAccount
cat <<EOF | kubectl apply -f - apiVersion: v1 kind: ServiceAccount metadata: name: admin-user namespace: kubernetes-dashboard EOF
3.2 创建 ClusterRoleBinding
把上一步创建的 admin-user
绑定到名字为 cluster-admin
的 ClusterRole
中。这样,admin-user
就具有了 cluster-admin
角色所定义的权限。
cat <<EOF | kubectl apply -f - apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: admin-user roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: admin-user namespace: kubernetes-dashboard EOF
4. 访问 Dashboard
经过第2步之后,就可以通过 https://node-ip:node-port
的方式打开 Dashboard
管理页面。这里需要有 Token 才能登录。
使用以下命令获取登录 Token
# 这里 grep admin-user 需要跟你的实际账号名一致 kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')
此命令会输出类似以下的信息
Name: admin-user-token-v57nw Namespace: kubernetes-dashboard Labels: <none> Annotations: kubernetes.io/service-account.name: admin-user kubernetes.io/service-account.uid: 0303243c-4040-4a58-8a47-849ee9ba79c1 Type: kubernetes.io/service-account-token Data ==== ca.crt: 1066 bytes namespace: 20 bytes token: eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLXY1N253Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIwMzAzMjQzYy00MDQwLTRhNTgtOGE0Ny04NDllZTliYTc5YzEiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZXJuZXRlcy1kYXNoYm9hcmQ6YWRtaW4tdXNlciJ9.Z2JrQlitASVwWbc-s6deLRFVk5DWD3P_vjUFXsqVSY10pbjFLG4njoZwh8p3tLxnX_VBsr7_6bwxhWSYChp9hwxznemD5x5HLtjb16kI9Z7yFWLtohzkTwuFbqmQaMoget_nYcQBUC5fDmBHRfFvNKePh_vSSb2h_aYXa8GV5AcfPQpY7r461itme1EXHQJqv-SN-zUnguDguCTjD80pFZ_CmnSE1z9QdMHPB8hoB4V68gtswR1VLa6mSYdgPwCHauuOobojALSaMc3RH7MmFUumAgguhqAkX3Omqd3rJbYOMRuMjhANqd08piDC3aIabINX6gP5-Tuuw2svnV6NYQ
复制最后 token 的内容,粘贴到 Dashboard 登录页面上,就能成功登录进去了。