本次安装的环境:k8s 集群版本为 v1.22.2,dashboard 的版本是 v2.4.0。
1. 下载 yaml 文件
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.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. 创建pod
kubectl apply -f recommended.yaml
查看pod状态
kubectl get pod -n kubernetes-dashboard
4. 创建sa账号并绑定
vi admin-user-clusterrolebinding.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
---
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
kubectl apply -f admin-user-clusterrolebinding.yaml
5. 生成一个Secret(旧版本的 kubernetes 中,进行了创建 serviceaccount 会自动生成一个 Secret 里面存放 token 值,但是新版本不会这样做了。可以参考之前的文章 k8s 手动管理 ServiceAccount 的 Secret)
dashboard-admin-token.yaml
apiVersion: v1
kind: Secret
metadata:
name: dashboard-admin-secret
namespace: kubernetes-dashboard
annotations:
kubernetes.io/service-account.name: admin-user
type: kubernetes.io/service-account-token
kubectl apply -f dashboard-admin-token.yaml
5.获取token访问页面
kubectl describe secret dashboard-admin-secret -n kubernetes-dashboard