• k8s-部署dashboard1.10.1-十七


    一、获取镜像和填坑

      我的k8s是1.13.1,这里dashboard用的1.10.1;

      由于国内不能访问Google,而且大部分人可能也没有其他途径访问;只能在阿里云或者其他镜像网站上获取了;

       镜像获取命令:

        docker pull lizhenliang/kubernetes-dashboard-amd64:v1.10.1

    (1)先填几个坑

      在部署dashboard1.10.1的时候,确实有几个坑,网友也有说的,如下:

      (1)第一个肯定就是镜像问题了,但是有办法解决,问题不大,用上面的命令获取就行,如果失效了,也可以注册账号去阿里云上搜索;

       阿里云镜像搜索链接:https://dev.aliyun.com/search.html

       我这里还有一个奇怪的问题,就是获取到镜像以后,不能重新打标签,如果重新打标签了,pod起不来,不知道什么情况..暂时没看出来;

      (2)证书问题

       生成证书:

        [root@master ~]# mkdir /certs

        [root@master ~]# openssl req -nodes -newkey rsa:2048 -keyout /certs/dashboard.key -out /certs/dashboard.csr -subj "/C=/ST=/L=/O=/OU=/CN=kubernetes-dashboard"

        

        [root@master ~]# ls /certs/

        

        [root@master ~]# cd /etc/kubernetes/pki/

         [root@master pki]# openssl x509 -req -sha256 -days 365 -in /certs/dashboard.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out /certs/dashboard.crt

         

        [root@master pki]# ls /certs/

        

        [root@master pki]# kubectl create secret generic kubernetes-dashboard-certs --from-file=/certs -n kube-system

         

        

       (3)获取kubernetes-dashboard.yaml文件,并修改;

        a、获取kubernetes-dashboard.yaml文件;

          GitHub上k8s-dashboard项目地址:https://github.com/kubernetes/dashboard

          获取kubernetes-dashboard.yaml文件命令:

          kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

        b、修改kubernetes-dashboard.yaml文件中service字段配置,

          将type: ClusterIP改成NodePort,便于通过Node端口访问,文件中可能没有type: ClusterIP字段,不要紧,可以手动加进去,

          还可以添加一个固定端口,如下图:

           [root@master manifests]# vim kubernetes-dashboard.yaml

         

        c、修改镜像地址

         由于我这里不能重新打标签,只能修改kubernetes-dashboard.yaml里面的镜像地址了:

          

        以上步骤,基本上开始的坑就填完了;

    二、部署Kubernetes-dashboard

      (1)token认证方式登录

       a、创建资源

       [root@master manifests]# kubectl apply -f kubernetes-dashboard.yaml

        查看:

        

        可见dashboard的pod已经起来了,service的端口是我们设置的固定端口30001

        全局serviceaccount:

        b、创建serviceaccount并绑定默认cluster-admin管理员集群角色,使用输出的token登录Dashboard

        kubectl create serviceaccount dashboard-admin -n kube-system

        

        kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin

        

        kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

         

         c、web端访问

        a、复制上面的“token”,这个“token”最好保存下来;   

         b、在外部浏览器中输入:https://ip:端口    应该能打开如下页面,选择令牌登录;

        

        c、dang dang dang dang...

        看到如下界面,可以平静一下了...

        

          上面我们创建的serviceaccount是全局性的,它可以访问所有的namespace资源;

        

       局部serviceaccount:

        接下来可以创建一个只有局部权限的serviceaccount,让它只对当前namespace生效;

        a、创建serviceaccount

        [root@master pki]# kubectl create serviceaccount def-ns-admin -n default

        

         b、创建rolebinding,用rolebinding将serviceaccount绑定到admin上(不是cluster-admin);

        [root@master pki]# kubectl create rolebinding def-ns-admin --clusterrole=admin --serviceaccount=default:def-ns-admin

         

         

         c、获取“token”

         [root@master pki]# kubectl describe secret def-ns-admin-token-hc9mf

        

         d、此时我们用这个“token”去令牌登录,发现只能管理默认的namespace

         

      (2)kubeconfig认证方式登录

        a、设置def-ns-admin的集群配置信息  

        [root@master ~]# cd /etc/kubernetes/pki/

        [root@master pki]# kubectl config set-cluster kubernetes --certificate-authority=./ca.crt --server="https://192.168.3.100:6443" --embed-certs=true --kubeconfig=/root/def-ns-admin.conf

         

        查看配置文件:

        

        b、以kubeconfig认证方式登录的时候,可以用开始时创建的私钥作为证书,也可以直接用token作为证书;

        查看帮助:

           

        c、这里用token作为证书;

        

        因为这里的token是base64编码,所以需要进行解码操作:

        

        由于这里的token字段太长,我们 可以把解码后的token字段保存到一个变量里面:

           [root@master pki]# DEF_NS_ADMIN_TOKEN=$(kubectl get secret def-ns-admin-token-hc9mf -o jsonpath={.data.token} |base64 -d)

         d、配置token作为认证

        [root@master pki]# kubectl config set-credentials def-ns-admin --token=$DEF_NS_ADMIN_TOKEN --kubeconfig=/root/def-ns-admin.conf

        

        查看配置文件,可见token已经配置进去了:

        

        e、配置上下文

        [root@master pki]# kubectl config set-context def-ns-admin@kubernetes --cluster=kubernetes --user=def-ns-admin --kubeconfig=/root/def-ns-admin.conf

         

        [root@master pki]# kubectl config use-context def-ns-admin@kubernetes --kubeconfig=/root/def-ns-admin.conf

         

        查看配置文件:

        

        f、将/root/def-ns-admin.conf文件发送到宿主机,浏览器访问时选择Kubeconfig认证,载入该配置文件;

        我用的VMware虚拟机在自己笔记本上做的集群,这里我将/root/def-ns-admin.conf传输到我笔记本的D:k8s_kubeconfig下,

        

        然后,在笔记本上用浏览器访问,选择kubeconfig的方式,再找到配置文件,即可登录:

         

        

        

  • 相关阅读:
    Bootstrap学习笔记系列2-------Bootstrap简单表格处理
    Bootstrap学习笔记系列1-------Bootstrap网格系统
    前端代码规范
    Dev TreeList设置焦点失败解决方法
    las数据集加载las数据
    c# 文件另存为代码
    Dev 饼图
    ASP.NET MVC Json的序列化和反序列化
    服务器重启后导致访问ArcServer地图服务须登录
    jQuery回调函数
  • 原文地址:https://www.cnblogs.com/weiyiming007/p/10494056.html
Copyright © 2020-2023  润新知