Kubernetes Dashboard就是k8s集群的webui,集合了所有命令行可以操作的所有命令。界面如下所示:(ps:目前自动识别为中文版本)
注意检查dashboard版本与kubernetes版本兼容性:
1 |
https://github.com/kubernetes/dashboard/releases |
Qist大佬推荐用这个
1 |
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.4/aio/deploy/recommended.yaml |
1 2 3 |
yaml提取 链接:https://pan.baidu.com/s/1TCiQnJxNreKYySlLSt_gcw 提取码:sp9y |
安装完成后用以下命令查看
1 2 3 4 5 6 |
kubectl get pod -n kubernetes-dashboard -o wide kubectl get svc -n kubernetes-dashboard -o wide #ssl证书信息,后面ingress部署https要用到 kubectl get secret -n kubernetes-dashboard |
创建证书:(执行完官方的yaml可能会报找不到某个secret,可能需要你手动创建)
1 2 3 4 5 |
mkdir -p /root/k8s/https && cd /root/k8s/https openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=nginxsvc/O=nginxsvc" kubectl create secret tls kubernetes-dashboard-certs -n kubernetes-dashboard --key tls.key --cert tls.crt |
具体创建方式可访问这篇传送门
部署对外访问域名 ingress
1.修改svc对外端口更改为443
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
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: 443 selector: k8s-app: kubernetes-dashboard |
保存后运行
2.编写ingress规则
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
apiVersion: extensions/v1beta1 kind: Ingress metadata: annotations: nginx.ingress.kubernetes.io/backend-protocol: HTTPS nginx.ingress.kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/rewrite-target: / nginx.ingress.kubernetes.io/ssl-redirect: "true" nginx.ingress.kubernetes.io/use-regex: "true" labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard namespace: kubernetes-dashboard spec: rules: - host: dashboard.shooter.com http: paths: - backend: serviceName: kubernetes-dashboard servicePort: 443 pathType: ImplementationSpecific #低于19删除这行 tls: - secretName: kubernetes-dashboard-certs #secret |
执行创建ingress规则
访问域名:https://dashboard.shooter.com

题外:
traefik 2.0 语法

注意:
需要注意的是官方给的按个yaml文件dashboard权限作用域只有它自身创建的kubernetes-dashboard 所以使用他的token登录会报403无其他资源访问权限的错误(默认登录上去是default命名空间)
所以这里我们要自己创建一个最大权限cluster-admin权限并绑定给他的serverAccount 然后我们使用这个sa的secret里的token去登录,或者你直接修改他官方的配置文件也可以。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1beta1 metadata: name: admin annotations: rbac.authorization.kubernetes.io/autoupdate: "true" roleRef: kind: ClusterRole # ClusterRole拥有集群级别权限,于此同时绑定时不能再使用RoleBinding而应该使用ClusterRoleBinding name: cluster-admin #k8s集群最大权限 apiGroup: rbac.authorization.k8s.io subjects: - kind: ServiceAccount name: admin #要绑定的serviceAccount名称 namespace: kubernetes-dashboard --- apiVersion: v1 kind: ServiceAccount metadata: name: admin #serverAccount名称,这个随便起 namespace: kubernetes-dashboard #这里无所谓反正都最大权限 labels: kubernetes.io/cluster-service: "true" addonmanager.kubernetes.io/mode: Reconcile |
创建好新的serviceAccount后,然后我们进行下一步:
web登录界面会告诉你有2种访问方式 一种是通过配置文件 一种是token
1.我们先来看令牌(token)登录
1 2 3 4 |
kubectl -n kubernetes-dashboard get secret | grep admin-token #然后查看secret 当中的 token kubectl describe secret admin-token-z4fmd -n kubernetes-dashboard |

2.config配置通过文件登录
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#获取dashboard secretName kubectl -n kubernetes-dashboard get secret | grep admin-token #将token值赋值给变量 DASH_TOCKEN=$(kubectl get secret -n kubernetes-dashboard admin-token-z4fmd -o jsonpath={.data.token}|base64 -d) #设置生成集群参数(在kubeconfig配置文件中设置一个集群项配置文件) kubectl config set-cluster kubernetes --server=192.168.66.187:6443 --kubeconfig=/root/k8s-demo/dashboard/dashbord-admin.conf #设置认证参数(在kubeconfig配置文件中设置一个用户项。) kubectl config set-credentials dashboard-admin --token=$DASH_TOCKEN --kubeconfig=/root/k8s-demo/dashboard/dashbord-admin.conf #设置上下文将dashboard-admin绑定到kubernetes-admin@kubernetes命名空间下 kubectl config set-context kubernetes-admin@kubernetes --cluster=kubernetes --user=dashboard-admin --kubeconfig=/root/k8s-demo/dashboard/dashbord-admin.conf #设置切换用户 kubectl config use-context kubernetes-admin@kubernetes --kubeconfig=/root/k8s-demo/dashboard/dashbord-admin.conf |
将dashbord-admin.conf配置文件复制到桌面,然后选择配置文件登录 。
- 本文固定链接: https://www.yoyoask.com/?p=4373
- 转载请注明: shooter 于 SHOOTER 发表