安装

GitHub 地址:Kubernetes Dashboard

  1. wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta4/aio/deploy/recommended.yaml

修改配置如下

---

kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  # 修改类型为 NodePort 访问
  type: NodePort
  ports:
    - port: 443
      targetPort: 8443
      # 设置端口号为 30001
      nodePort: 30001
  selector:
    k8s-app: kubernetes-dashboard

---

创建kubernetes-dashboard.yaml

apiVersion: v1
kind: Namespace
metadata:
  name: kubernetes-dashboard
kubectl create -f kubernetes-dashboard.yaml

设置自定义证书dashboard.crtdashboard.key文件存储在$HOME/certs目录下

kubectl create secret generic kubernetes-dashboard-certs --from-file=$HOME/certs -n kubernetes-dashboard

部署到集群

# 部署
kubectl create -f recommended.yaml

# 查看
kubectl -n kubernetes-dashboard get pods
kubectl -n kubernetes-dashboard get service kubernetes-dashboard
kubectl -n kubernetes-dashboard describe service kubernetes-dashboard

访问

需要使用 域名:30001 访问 Dashboard

登录

创建登录账号,创建一个名为 dashboard-adminuser.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 create -f dashboard-adminuser.yaml

打印 Token 信息

kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')

# 输出如下
Name:         admin-user-token-kw8cs
Namespace:    kubernetes-dashboard
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: admin-user
              kubernetes.io/service-account.uid: eb9450ef-bf2f-4be4-ab7b-649f34214f27

Type:  kubernetes.io/service-account-token

Data
====
ca.crt:     1025 bytes
namespace:  20 bytes
token:      eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLWt3OGNzIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiJlYjk0NTBlZi1iZjJmLTRiZTQtYWI3Yi02NDlmMzQyMTRmMjciLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZXJuZXRlcy1kYXNoYm9hcmQ6YWRtaW4tdXNlciJ9.LcJP7Zfs_U-mZAUfqv4qbg3vAwTfItuee76GynKDZ8Jh0dQeLflCq5kl9eBFnYV01uHCGL7tGhXvgCzu-mNLBcdWP2BdQQNECfh8RkZWk5FTRXHYMOXM3v3DvncmHo9dw7S-s61WoqdCSWBrt-1NwvmkbNcFBgWiV4A2GnT2QEvVgB-WRxWFUdqLy8COSgTy3gEfjd8A1NgoNTNbfbaJo1OZ7vuF6abv2PZ1j-MocZ_2XrPPnbyW1fFw4PBV3Tl090pm3UtvX86f8l045YTP5GyBdwE7UwEXtiflRazQLA48qR1hhw4jdSHXO40c-KySU_PHWbWzKqWqj6wqhsv_tw