1 查看k8s(v18.6)与Dashboard对应的版本

# 查看相应的版本信息
https://github.com/kubernetes/dashboard/releases/tag/v2.0.0

下载yaml文件

# 下载文件,如果下载成功,会在当前目录下出现一个“recommended.yaml”文件
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml

2 创建Dashboard

# 执行模板文件
kubectl apply -f recommended.yaml

# 查看所有的Pod,参数-A可以换成 --all-namespaces
kubectl get pods -A

# 出现以下结果说明成功
NAMESPACE              NAME                                            READY   STATUS    RESTARTS   AGE
..... #省略
kubernetes-dashboard   dashboard-metrics-scraper-6b4884c9d5-88sct      1/1     Running   0          3m13s
kubernetes-dashboard   kubernetes-dashboard-7b544877d5-6bvfr           1/1     Running   0          3m13s

3 修改Dashboard的Service

3.1 查看Service

# 查看所有的service
kubectl get svc -A

# 查询结果如下
NAMESPACE              NAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                  AGE
...... # 省略
kubernetes-dashboard   dashboard-metrics-scraper   ClusterIP   10.11.56.68     <none>        8000/TCP                 6m10s
kubernetes-dashboard   kubernetes-dashboard        ClusterIP   10.11.120.145   <none>        443/TCP                  6m10s

从上面的查询结果(NAME=kubernetes-dashboard,最后一行 ),可以看出Service的类型是ClusterIP,外部无法使用主机节点直接访问,因此需要将Service修改为NodePort。可以不用删除NAME=kubernetes-dashboard的Service。

3.2 新建“kubernetes-dashboard-service.yaml”文件

# kubernetes-dashboard-service.yaml
# 下面的配置文件可以从recommended.yaml中找到
kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  type: NodePort
  ports:
    - port: 443
      targetPort: 8443
  selector:
    k8s-app: kubernetes-dashboard

执行配置文件,不用删除NAME=kubernetes-dashboard的服务,直接执行即可

kubectl apply -f kubernetes-dashboard-service.yaml

查看结果

# Service类型已经修改为NodePort
kubectl get svc -A

# 查询结果
NAMESPACE              NAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                  AGE
...... # 省略
kubernetes-dashboard   kubernetes-dashboard        NodePort    10.11.120.145   <none>        443:30512/TCP            11h

注意上面的端口号"30512"是Dashboard的端口

# 此时可以访问页面,由于没有管理员角色,所以没有访问权限
https://192.168.108.100:30512

4 设置访问权限

4.1 新建“kubernetes-dashboard-account.yaml”

# kubernetes-dashboard-account.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: dashboard-admin
  namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: dashboard-admin-bind-cluster-role
  labels:
    k8s-app: kubernetes-dashboard
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: dashboard-admin
  namespace: kubernetes-dashboard

执行配置文件

kubectl apply -f kubernetes-dashboard-account.yaml

4.2 获取tocken值

# 执行如下命令
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep dashboard-admin | awk '{print $1}')

# 返回结果
Name:         dashboard-admin-token-l49vj
Namespace:    kubernetes-dashboard
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: dashboard-admin
              kubernetes.io/service-account.uid: e1bdcbbc-5d43-479c-be6d-508960413b6a

Type:  kubernetes.io/service-account-token

Data
====
# 注意!!! Tocken值,在登录Dashboard时使用
token:      eyJhbGciOiJSUzI1NiIsImtpZCI6IjhNbjY3S1FMRFhHUkNBS2pYMmE3UHpuZmk4NEEzODJqbWxjUHZ4Mk1xMnMifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4tbDQ5dmoiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiZTFiZGNiYmMtNWQ0My00NzljLWJlNmQtNTA4OTYwNDEzYjZhIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmVybmV0ZXMtZGFzaGJvYXJkOmRhc2hib2FyZC1hZG1pbiJ9.PN0QkyynqW_Me4h__eWGo3hzQPs1RHy47FUZvQIzmi62CCV-uI5GESW5glb8IIKhmmGojvOHCWwJ_zgQCwL2DODFTbj7ZtQ2gj8R6CvU_etP0kOPm_pAQkN-HdiPdJrRt84Hb7Q8yJ3IvAC94dyvges1Z3T4NtTbhcJdBbBzmeQ-79cNPWf9SdCgINrpb5RO8ChNE_SrQ4ppr-olP5drZH8iO8tpha-F3PbHJl1aZemnQggaJioysXSoX9qxrOJ0NlR7d6bP0gdMWCCaGMj7bTmdARGaU5tQgy0im5rpK_mBPyiBegwgzqP0-SQLB-KDBVgDGQSyBWm08r4kKCJUsA
ca.crt:     1025 bytes
namespace:  20 bytes

5 登录Dashboard

输入以下地址,注意端口号是kubernetes-dashboard服务的端口号,我的master节点的IP是“192.168.108.100”

https://192.168.108.100:30512

进入Dashboard

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐