10、为k8s集群配置dashboard服务

  1. $ cd /etc/kubernetes/ && wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml
  2. #将名称空间修改为默认system
  3. $ sed -i '/namespace/ s/kubernetes-dashboard/kube-system/g' recommended.yaml
  4. $vi kubernetes-dashboard.yaml
  5. #修改service类型为NodePort类型
  6. .......
  7. kind: Service
  8. apiVersion: v1
  9. metadata:
  10. labels:
  11. k8s-app: kubernetes-dashboard
  12. name: kubernetes-dashboard
  13. namespace: kube-system
  14. spec:
  15. type: NodePort #添加一行
  16. ports:
  17. - port: 443
  18. targetPort: 8443
  19. nodePort: 31260 #添加一行
  20. selector:
  21. k8s-app: kubernetes-dashboard
  22. ......

对于有些kubernetes-dashboard中使用官方镜像无法拉取的情况,可以更改为国内源。

  1. 比如:image: k8s.gcr.io/google_containers/kubernetes-dashboard-amd64:v1.10.1
  2. 可以将镜像仓库地址k8s.gcr.io改成registry.aliyuncs.com/google_containers
  3. 即:
  4. image: registry.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.10.1

11、访问集群

image.png

11.1 通过令牌方式访问

  1. mkdir key && cd key
  2. #生成证书
  3. openssl genrsa -out dashboard.key 2048
  4. openssl req -new -out dashboard.csr -key dashboard.key -subj '/CN=172.17.3.141'
  5. openssl x509 -req -in dashboard.csr -signkey dashboard.key -out dashboard.crt
  6. #删除原有的证书secret
  7. kubectl delete secret kubernetes-dashboard-certs -n kube-system
  8. #创建新的证书secret
  9. kubectl create secret generic kubernetes-dashboard-certs --from-file=dashboard.key --from-file=dashboard.crt -n kube-system
  10. #查看pod
  11. kubectl get pod -n kube-system
  12. #删除pod,启动新pod生效
  13. kubectl delete pod kubernetes-dashboard-5b9dd4f974-ztp89 -n kube-system
  14. #编辑文件vim k8s-admin.yaml
  15. kind: ClusterRoleBinding
  16. apiVersion: rbac.authorization.k8s.io/v1beta1
  17. metadata:
  18. name: admin
  19. annotations:
  20. rbac.authorization.kubernetes.io/autoupdate: "true"
  21. roleRef:
  22. kind: ClusterRole
  23. name: cluster-admin
  24. apiGroup: rbac.authorization.k8s.io
  25. subjects:
  26. - kind: ServiceAccount
  27. name: admin
  28. namespace: kube-system
  29. ---
  30. apiVersion: v1
  31. kind: ServiceAccount
  32. metadata:
  33. name: admin
  34. namespace: kube-system
  35. labels:
  36. kubernetes.io/cluster-service: "true"
  37. addonmanager.kubernetes.io/mode: Reconcile
  38. kubectl create -f k8s-admin.yaml
  39. kubectl get serviceaccount -n kube-system
  40. kubectl describe serviceaccount admin -n kube-system
  41. kubectl describe secret admin-token-2frfz -n kube-system
  42. #保存最后一步命令查看到的token密钥,就是登录dashboard需要的令牌,完成登陆

11.2 通过kubeconfig 方式访问

  1. DASH_TOCKEN=$(kubectl get secret -n kube-system admin-token-mcqj5 -o jsonpath={.data.token}|base64 -d)
  2. kubectl config set-cluster kubernetes --server=10.0.0.11:6443 --kubeconfig=/root/dashbord-admin.conf
  3. kubectl config set-credentials admin --token=$DASH_TOCKEN --kubeconfig=/root/dashbord-admin.conf
  4. kubectl config set-context admin --cluster=kubernetes --user=admin --kubeconfig=/root/dashbord-admin.conf
  5. kubectl config use-context admin --kubeconfig=/root/dashbord-admin.conf

image.png