• k8s入门:kubernetes-dashboard 安装


    系列文章


    第一章:✨ k8s入门:裸机部署 k8s 集群
    第二章:✨ k8s入门:部署应用到 k8s 集群
    第三章:✨ k8s入门:service 简单使用
    第四章:✨ k8s入门:StatefulSet 简单使用
    第五章:✨ k8s入门:存储(storage)
    第六章:✨ K8S 配置 storageclass 使用 nfs 动态申领本地磁盘空间
    第七章:✨ k8s入门:配置 ConfigMap & Secret
    第八章:✨ k8s入门:k8s入门:Helm 构建 MySQL
    第九章:✨ k8s入门:kubernetes-dashboard 安装


    参考:https://blog.csdn.net/u013068377/article/details/106673434/
    k8s 官网:https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/

    一、简介

    Dashboard 是一个基于 Web 的 Kubernetes 用户界面。您可以使用 Dashboard 将容器化应用程序部署到 Kubernetes 集群、对容器化应用程序进行故障排除以及管理集群资源。您可以使用 Dashboard 了解集群上运行的应用程序的概览,​​以及创建或修改单个 Kubernetes 资源(例如 Deployment、Jobs、DaemonSet 等)。例如,您可以使用部署向导扩展部署、启动滚动更新、重新启动 pod 或部署新应用程序。

    仪表板还提供有关集群中 Kubernetes 资源状态以及可能发生的任何错误的信息。

    在这里插入图片描述

    二、安装 kubernetes-dashboard

    使用官网提供的 deploy/recommended.yaml 清单安装 kubernetes-dashboard, 或者使用 Helm 安装,可参考 Artifact Hub 地址:https://artifacthub.io/packages/helm/k8s-dashboard/kubernetes-dashboard

    1、下载配置文件

    可使用如下命令下载 recommended.yaml 修改默认配置

    wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.0/aio/deploy/recommended.yaml
    
    • 1

    默认配置安装 kubernetes-dashboard

    kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.0/aio/deploy/recommended.yaml
    
    • 1
    2、 修改默认配置

    修改其中 kubernetes-dashboard 的 service ,指定 nodePort 端口为 18443

    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: 18443
      selector:
        k8s-app: kubernetes-dashboard
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    3、安装 kubernetes-dashboard
    [root@master dashboard]# kubectl apply -f recommended.yaml 
    namespace/kubernetes-dashboard created
    serviceaccount/kubernetes-dashboard created
    service/kubernetes-dashboard created
    secret/kubernetes-dashboard-certs created
    secret/kubernetes-dashboard-csrf created
    secret/kubernetes-dashboard-key-holder created
    configmap/kubernetes-dashboard-settings created
    role.rbac.authorization.k8s.io/kubernetes-dashboard created
    clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created
    rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
    clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
    deployment.apps/kubernetes-dashboard created
    service/dashboard-metrics-scraper created
    deployment.apps/dashboard-metrics-scraper created
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    4、访问 web

    访问指定的 18443 端口,master 节点 IP 为 192.168.25.100,则访问地址:https://192.168.25.100:18443/

    在这里插入图片描述

    5、获取 token

    K8S有两种用户:User 和 Service Account,User 给人用,Service Account 给进程用,让进程有相关权限,Dashboard 是一个进程,我们就可以创建一个Service Account 给它

    kubectl get serviceaccount  -n kubernetes-dashboard
    kubectl describe serviceaccount/kubernetes-dashboard -n kubernetes-dashboard
    kubectl get secret -n kubernetes-dashboard
    kubectl describe secret/kubernetes-dashboard-token-28jqz -n kubernetes-dashboard
    
    • 1
    • 2
    • 3
    • 4

    如下,上面命令可以简化为一条命令(kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep kubernetes-dashboard | awk '{print $1}')
    在这里插入图片描述

    6、测试登录

    使用查询到的 token 登录 kubernetes dashboard,登陆成功
    在这里插入图片描述
    出现上述问题的原因是因为,kubernetes-dashboard 这个账户的角色权限不够

    7、创建新用户

    创建 dashboard-adminuser.yaml

    cat > dashboard-adminuser.yaml << EOF
    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  
    EOF
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    创建登录用户

    [root@master dashboard]# kubectl apply -f dashboard-adminuser.yaml
    serviceaccount/admin-user created
    
    • 1
    • 2

    说明:上面创建了一个叫 admin-user 的服务账号,并放在kubernetes-dashboard 命名空间下,并将 cluster-admin 角色绑定到admin-user账户,这样admin-user账户就有了管理员的权限。默认情况下,kubeadm创建集群时已经创建了cluster-admin角色,我们直接绑定即可。

    查看admin-user账户的token

    [root@master dashboard]# kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')
    Name:         admin-user-token-6wkxr
    Namespace:    kubernetes-dashboard
    Labels:       <none>
    Annotations:  kubernetes.io/service-account.name: admin-user
                  kubernetes.io/service-account.uid: a90464fd-83bb-4435-90ee-c59493b81889
    
    Type:  kubernetes.io/service-account-token
    
    Data
    ====
    ca.crt:     1099 bytes
    namespace:  20 bytes
    token:      eyJhbGciOiJSUzI1NiIsImtpZCI6InhGU29vbVM3TG90R1NzTzZfT2VlTUVWZTIySXlGbHZxUW5laVZ5T29lRTAifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLTZ3a3hyIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiJhOTA0NjRmZC04M2JiLTQ0MzUtOTBlZS1jNTk0OTNiODE4ODkiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZXJuZXRlcy1kYXNoYm9hcmQ6YWRtaW4tdXNlciJ9.gaqvh1E1yH0SmKT-cDhzGOl_-g5aZmiH7SuRLXuAnIdBRAhC1dYFFqmkUenspepRb4zkMX0vojYjq0twGKAP3IAI4h0H24QVXhOBMiMWH1IyZdprZ32K3j2egdCuRkb3BEwm1M0zR8XZlLZRI-__Hl5QCntNwO6Lh21nmRx-f9rG1T-omGSWiZnRn4ZW0kS0N0sunAYFfsRWNKh6Pnd3WzfNqa3rBNaULOeDStlL1DfcO_fhqWbeuWWwnA66Q7fX7Xa3oP5qymt-C_lvM_hod8N3TVzVKY2ToiqMPmGAflQoHf4P-iYdH2sG38_hYM0LJvpmy8zdVvZSo9LNBHsEeQ
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    注销重新使用 admin-user 服务账号的 token 登录即可

    在这里插入图片描述

  • 相关阅读:
    使用python来访问Hadoop HDFS存储实现文件的操作
    Android 9 自动恢复出厂设置问题(auto-recovery)
    Kubectl 使用详解——k8s陈述式资源管理
    提升树与GBDT的详细算法过程(建议收藏版)
    【路径规划-VRP问题】基于遗传算法求解出租车网约车接送客车辆路径规划问题附matlab代码
    如何防止游戏通讯数据被篡改
    CAUSE: 加载证书时出错PKCS12 key store mac invalid - wrong password
    ROS学习(30)自定义移动机器人模型gazebo仿真(激光雷达+kinect)
    C++——无锁链表的探索
    C#中的数组探究与学习
  • 原文地址:https://blog.csdn.net/qq_41538097/article/details/125561769