zoukankan      html  css  js  c++  java
  • 【五】K8s-Dashboard 安装(K8s Web管理界面)

    一、在 master 节点操作

    由于 K8s 版本不同,具体去这里查看对应的版本

    https://github.com/kubernetes/dashboard/releases

    image-20210531140916607

    如果使用 wget 命令无法下载,可以使用迅雷下载好上传到 K8s-Master 节点上

    [root@k8s-master01 ~]# wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.2.0/aio/deploy/recommended.yaml
    

    构建 Pod

    [root@k8s-master01 dashboard]# kubectl apply -f recommended.yaml
    

    查看 Pod 状态

    [root@k8s-master01 ~]# kubectl get pods --all-namespaces | grep dashboard
    NAMESPACE              NAME                                         READY   STATUS    RESTARTS   AGE
    kubernetes-dashboard   dashboard-metrics-scraper-6ddd77bc75-qfddn   1/1     Running   0          37s
    kubernetes-dashboard   kubernetes-dashboard-8c9c48775-v229s         1/1     Running   0          37s
    

    image-20210531141331176

    删除现有的 dashboard 服务,dashboard 服务的 namespace 是 kubernetes-dashboard,但是该服务的类型是ClusterIP,不便于我们通过浏览器访问,因此需要改成 NodePort 类型的

    [root@k8s-master01 dashboard]# kubectl get svc --all-namespaces
    NAMESPACE              NAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                  AGE
    default                kubernetes                  ClusterIP   10.96.0.1       <none>        443/TCP                  19h
    default                nginx-deployment            ClusterIP   10.102.181.9    <none>        80/TCP                   17h
    kube-system            kube-dns                    ClusterIP   10.96.0.10      <none>        53/UDP,53/TCP,9153/TCP   19h
    kubernetes-dashboard   dashboard-metrics-scraper   ClusterIP   10.108.52.150   <none>        8000/TCP                 10s
    kubernetes-dashboard   kubernetes-dashboard        ClusterIP   10.110.11.43    <none>        443/TCP  
    
    [root@k8s-master01 dashboard]# kubectl delete service kubernetes-dashboard --namespace=kubernetes-dashboard
    service "kubernetes-dashboard" deleted
    

    创建配置文件dashboard-svc.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
    

    创建该 Service

    [root@k8s-master01 dashboard]# kubectl apply -f dashboard-svc.yaml 
    service/kubernetes-dashboard created
    

    再次查看服务

    [root@k8s-master01 dashboard]# kubectl get svc --all-namespaces
    NAMESPACE              NAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                  AGE
    default                kubernetes                  ClusterIP   10.96.0.1       <none>        443/TCP                  19h
    default                nginx-deployment            ClusterIP   10.102.181.9    <none>        80/TCP                   17h
    kube-system            kube-dns                    ClusterIP   10.96.0.10      <none>        53/UDP,53/TCP,9153/TCP   19h
    kubernetes-dashboard   dashboard-metrics-scraper   ClusterIP   10.108.52.150   <none>        8000/TCP                 48s
    kubernetes-dashboard   kubernetes-dashboard        NodePort    10.101.88.219   <none>        443:30323/TCP  
    

    image-20210531141732135

    创建 kubernetes-dashboard 管理员角色,dashboard-svc-account.yaml内容如下:

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: dashboard-admin
      namespace: kube-system
    ---
    kind: ClusterRoleBinding
    apiVersion: rbac.authorization.k8s.io/v1beta1
    metadata:
      name: dashboard-admin
    subjects:
      - kind: ServiceAccount
        name: dashboard-admin
        namespace: kube-system
    roleRef:
      kind: ClusterRole
      name: cluster-admin
      apiGroup: rbac.authorization.k8s.io
    

    执行创建

    [root@k8s-master01 dashboard]# kubectl apply -f dashboard-svc-account.yaml 
    serviceaccount/dashboard-admin created
    Warning: rbac.authorization.k8s.io/v1beta1 ClusterRoleBinding is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 ClusterRoleBinding
    clusterrolebinding.rbac.authorization.k8s.io/dashboard-admin created
    

    获取 token,就可以在浏览器登录了

    [root@k8s-master01 dashboard]# kubectl get secret -n kube-system |grep admin|awk '{print $1}'
    dashboard-admin-token-b4frj
    [root@k8s-master01 dashboard]# kubectl describe secret dashboard-admin-token-b4frj -n kube-system|grep '^token'|awk '{print $2}'
    eyJhbGciOiJSUzI1NiIsImtpZCI6IndDX2MyTE...
    

    二、浏览器访问 K8s Web管理界面

    查看外部访问端口,也就是刚刚我们创建的 Service

    [root@k8s-master01 ~]# kubectl get svc --all-namespaces | grep dashboard
    

    image-20210531142304373

    浏览器输入https://x.x.x.x:30323

    image-20210531142451593

    登录后的界面

    image-20210531142551387

    参考博客:https://blog.csdn.net/mshxuyi/article/details/108425487


    作者:神奇二进制
    文章出处:https://www.cnblogs.com/l-hh/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。
    文章如有叙述不当的地方,欢迎指正。如果觉得文章对你有帮助,可以精神上的支持 [推荐] 或者 [关注我] ,一起交流,共同进步!

  • 相关阅读:
    PHP 缓存技术
    redis雪崩
    【Redis】- 缓存击穿
    Memcache 与 Memcached 的区别
    数据库设计:范式与反范式
    Thinkphp5多数据库切换
    PHP 分布式集群中session共享问题以及session有效期的设置
    Nginx使用upstream实现动静分离
    rsync 服务快速部署手册
    tp5 为什么使用单例模式
  • 原文地址:https://www.cnblogs.com/l-hh/p/14833146.html
Copyright © 2011-2022 走看看