美文网首页
Kubernetes Dashboard 操作指南

Kubernetes Dashboard 操作指南

作者: 流雨声 | 来源:发表于2021-05-06 09:13 被阅读0次

    背景提要

    k3s/K8S集群部署成功了,如何对集群进行可视化管理呢?搭建kubernetes-dashboard来解决这个问题。
    目前网络上流传太多个人色彩的监控解决方案,但是操作手册良莠不齐,很多时候这样的文章反而会造成用户的使用成本指数增加,本人很讨厌虎头蛇尾的文章编辑,我综合整理了比较通用的容器化集群管理方案的落地实践手册,希望可以给初入云原生领域的同学一些参考指导。

    安装部署dashboard

    • 1.预检集群
    kubectl get cs
    kubectl get pods -A  -o wide
    
    image
    • 2.获取资源
    # 获取部署资源
    mkdir -p /home/work/k3s-dashboard && cd /home/work/k3s-dashboard
    wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml
    # 自定义证书文件
    mkdir dashboard-certs
    # 管理员用户
    touch dashboard-admin.yaml
    # 为管理员用户赋权
    touch dashboard-admin-bind-cluster-role.yaml
    
    image

    说明: 可以调整获取资源的版本号从而获取到不同的版本信息资源,从而进行产品升级部署。

    • 3.资源编辑
      vim 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
          nodePort: 30000 #增加
      selector:
        k8s-app: kubernetes-dashboard
    ---
    #因为自动生成的证书很多浏览器无法使用,所以我们自己创建,如果存在就注释掉kubernetes-dashboard-certs对象声明
    ---
    
    • 4.部署检查
    ************   创建证书   ************  
    mkdir dashboard-certs
    cd dashboard-certs/
    
    # 创建命名空间
    kubectl create namespace kubernetes-dashboard
    
    # 创建key文件
    openssl genrsa -out dashboard.key 2048
    
    # 证书请求
    openssl req -days 36000 -new -out dashboard.csr -key dashboard.key -subj '/CN=dashboard-cert'
    
    # 自签证书
    openssl x509 -req -in dashboard.csr -signkey dashboard.key -out dashboard.crt
    
    # 创建kubernetes-dashboard-certs对象
    kubectl create secret generic kubernetes-dashboard-certs --from-file=dashboard.key --from-file=dashboard.crt -n kubernetes-dashboard
    
    # 安装kubernetes-dashboard
    cd ../
    kubectl create -f recommended.yaml
    注: 这是因为我们在创建证书时,已经创建了kubernetes-dashboard命名空间,如果有命名空间已存在的报错,直接忽略即可。
    

    资源检查:


    image
    • 5.创建管理用户
    # 创建dashboard-admin.yaml文件。
    vim dashboard-admin.yaml
    
    # 保存退出后执行如下命令创建管理员。
    kubectl create -f ./dashboard-admin.yaml
    
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      labels:
        k8s-app: kubernetes-dashboard
      name: dashboard-admin
      namespace: kubernetes-dashboard
    
    # 创建dashboard-admin-bind-cluster-role.yaml文件。
    vim dashboard-admin-bind-cluster-role.yaml
    
    # 保存退出后执行如下命令为用户分配权限。
    kubectl create -f ./dashboard-admin-bind-cluster-role.yaml
    
    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
    
    • 6.获取登录信息
    # 在命令行执行如下命令
    kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep dashboard-admin | awk '{print $1}')
    
    # 具体执行情况如下所示
    [root@vm3290 k3s-dashboard]# kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep dashboard-admin | awk '{print $1}')
    Name:         dashboard-admin-token-65w26
    Namespace:    kubernetes-dashboard
    Labels:       <none>
    Annotations:  kubernetes.io/service-account.name: dashboard-admin
                  kubernetes.io/service-account.uid: 7aed6a0e-3c24-475a-a50b-a70b9193788d
    
    Type:  kubernetes.io/service-account-token
    
    Data
    ====
    ca.crt:     570 bytes
    namespace:  20 bytes
    token:      eyJhbGciOiJSUzI1NiIsImtpZCI6InZYVjV1NHJxU3hZNk9SZmdpMWdvU01
    
    # 可以看到,此时的Token值为:
    eyJhbGciOiJSUzI1NiIsImtpZCI6InZYVjV1NHJxU3hZNk9SZmdpMWdvU01
    
    • 7.管理平台
      在浏览器中打开链接 https://可以访问到的集群ip:30000 ,如下所示。


      image
    image

    扩展阅读

    问题点:
    网上流传了太多别人整理的文档,但是因为没有深入,所以没有吃透证书的配置,导致了,打开页面无法登录访问的窘境。
    kubernetes-dashboard 的证书需要自己手动生成以后用于访问才可以,这个点很关键,最然可以通过流量代理的方案进行映射,但是毕竟是外门邪道,反而让入门的同学觉得讨厌。

    treafik 如何配置带有证书的配置,我们需要深入探讨下,但是建议 kubernetes-dashboard 不要通过 ingress 对外暴露,直接通过 Ip:Port对外访问效果会比较好。

    关于集群配置文件的位置:

    # k8s配置文件位置
    /etc/kubernetes/admin.conf
    
    # k3s配置文件位置
    /etc/rancher/k3s.k3s.yaml
    
    # 改变配置文件的服务器地址
    如果不是集群主机访问集群,就需要修改配置文件的server字段,只需将server的IP改成master的主机IP即可
    

    相关文章

      网友评论

          本文标题:Kubernetes Dashboard 操作指南

          本文链接:https://www.haomeiwen.com/subject/cqyakltx.html