安装 Kubernetes Dashboard

README-2021-10-16-19-01-32

Kubernetes Dashboardopen in new window是 Kubernetes 集群通用的、基于 Web 的 UI。它允许用户管理集群中运行的应用程序并对其进行故障排除,以及管理集群本身。

安装

添加 kubernetes-dashboard 仓库

helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/

生成 values.yaml

helm show values kubernetes-dashboard/kubernetes-dashboard > values.yaml

修改 values.yaml

# kubernetes-dashboard/values.yaml
metricsScraper:
  ## Wether to enable dashboard-metrics-scraper
  enabled: true

如果想查看将要部署的资源清单,可以执行以下命令

helm template kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard -n kubernetes-dashboard -f values.yaml > kubernetes-dashboard.yaml

安装 kubernetes-dashboard

helm install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard -n kubernetes-dashboard --create-namespace -f values.yaml

等待安装完成

kubectl get pods -n kubernetes-dashboard -w

# NAME                                    READY   STATUS    RESTARTS   AGE
# kubernetes-dashboard-795569787f-s2h8f   2/2     Running   0          11s

通过 Ingress 访问

我们可以通过给 Dashboard 配置 Ingress,通过域名的方式来访问。

创建 ingress 清单文件

# ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: dashboard-ingress
  namespace: kubernetes-dashboard
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt-dns01 # 配置自动生成 https 证书
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/backend-protocol: HTTPS
    nginx.ingress.kubernetes.io/ssl-redirect: 'true' # 强制跳转 https
    nginx.ingress.kubernetes.io/secure-backends: 'true'
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  tls:
    - hosts:
        - 'k8s.todoit.tech'
      secretName: dashboard-letsencrypt-tls
  rules:
    - host: k8s.todoit.tech
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: kubernetes-dashboard
                port:
                  number: 443
kubectl apply -f ingress.yaml

Host 映射

README-2021-10-17-11-23-40

等待 HTTPS 证书签发完成

kubectl get certificate -n kubernetes-dashboard -w

# NAME                        READY   SECRET                      AGE
# dashboard-letsencrypt-tls   False   dashboard-letsencrypt-tls   65s
# dashboard-letsencrypt-tls   True    dashboard-letsencrypt-tls   2m32s

创建 Admin 用户

Kubernetes Dashboard 需要较大的权限才能够访问所有资源,所以我们可以创建一个 admin-user 的 ServiceAccount 来获取对应的 token。

# admin-user.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.yaml

获得访问 Token

在浏览器输入 k8s.todoit.techopen in new window 即可访问 Kubernetes Dashboard。

运行如下命令

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

拷贝 token,填充到刚才打开的页面,即可进入仪表板。现在好好探索一番吧。

README-2021-10-16-18-58-37

README-2021-10-17-11-51-59

修改 Token 有效时间

Dashboard Token 的默认有效时间是 15 分钟,到期后会自动退出登陆,不方便学习探索。

修改配置如下,将 token 有效时间设置为 12 小时。

# kubernetes-dashboard/values.yaml
extraArgs:
  - --token-ttl=43200 # 增加这一行,设置 token 过期时间为12小时

更新部署

helm upgrade kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard -n kubernetes-dashboard -f values.yaml

参考

上次更新: