dashboard组件为我们提供了一个WebUI,使得K8S集群的管理更加的方便和直观。

篇一篇二分别介绍了如果搭建Kubernetes集群和部署metrics-server指标数据监控组件,本篇介绍如何在Kubernetes集群中部署dashboard组件。

dashboardyaml部署文件位于github仓库 这里这里。同样的,作为K8S插件部署与K8S集群中。

下载yaml部署文件

wget https://raw.githubusercontent.com/kubernetes/kubernetes/master/cluster/addons/dashboard/dashboard.yaml

设置登录过期时间

默认情况下在dashboard界面空闲几分钟没有操作就自动登出了,我们可以通过修改启动参数来修改这个自动登出时长。

修改dashboard.yaml,添加启动参数--token-ttl=86400,即无操作24小时后自动登出

          args:
            - --auto-generate-certificates
            - --namespace=kubernetes-dashboard
            - --token-ttl=86400

使用NodePort暴露端口

默认情况下,Service使用了ClusterIP暴露端口,使得集群外无法直接访问dashboard,需要使用Ingress暴露访问地址,这样一来会比较麻烦,但是生产环境还是建议使用Ingress来暴露访问地址。

修改yaml,将dashboard的Service类型改为NodePort,并且暴露宿主机32443端口

kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  type: NodePort # 添加这行
  ports:
    - port: 443
      targetPort: 8443
      nodePort: 32443 # 添加这行
  selector:
    k8s-app: kubernetes-dashboard

应用yaml清单

如果你的Kubenetes版本在1.18或以及版本,还需要修改以下yaml清单文件

# 删除
      securityContext:
        seccompProfile:
          type: RuntimeDefault
# 往Deployment.spec加入
  annotations:
    seccomp.security.alpha.kubernetes.io/pod: 'docker/default'
kubectl apply -f dashboard.yaml

登录验证

访问集群 https://Node-IP:32443

dashboard登录界面.png

dashboard提供了两种登录方式:Token 或 Kubeconfig,下面介绍如何获取Token和配置Kubeconfig

  • Token

    1. 创建Service Account

      cat <<EOF | kubectl apply -f -
      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: admin-user
        namespace: kubernetes-dashboard
      EOF
    2. 创建ClusterRoleBinding

      cat <<EOF | kubectl apply -f -
      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRoleBinding
      metadata:
        name: admin-user
      roleRef:
        apiGroup: rbac.authorization.k8s.io
        kind: ClusterRole
        name: cluster-admin
      subjects:
      \- name: admin-user # 删掉前面的\,markdown渲染的问题,不加这个\格式会显示错误
        namespace: kubernetes-dashboard
        kind: ServiceAccount
      EOF
    3. 获取Token

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

    • 拷贝.kube/config
    • 修改config,在文件末尾加入token: TOKEN

      # 前面省略
      users:
      - name: kubernetes-admin
        user:
          client-certificate-data: LS...Qo=
          client-key-data: LS...Qo=
          token: ey...OQ # 添加这一行,值是上面获取到的Token内容

登录后的界面,愉快玩耍吧!

dashboard-1.png

标签: none

添加新评论