容器之k8s(二)

k8s存储

  1.volume卷

    1)emptyDir(系统默认目录映射到pod里面),pod消亡,目录也会消亡

      1.修改mynginx.yml文件,添加volume配置

        

      2. 需要删除原有pod:kubectl delete pod mynginx

      3. 重新apply: kubectl apply -f mynignx-pod.yaml

      4).检查配置是否生效: kubectl exec mynginx mount|grep mymount

        

 

    2.hostPath(指定本地目录),不随pod的消亡而消亡,但是和物理节点绑定,不支持真正的跨节点高可用

    3.storage provider 基于公有云的磁盘映射

    4.pv -> pvc (persistentVolume(运维) -> persistentVolumeClaim(开发)),最常用

      1.搭建nfs服务器(网络存储服务器),选用node1节点

        1)systemctl restart rpcbind

        2)  systemctl restart nfs-server

        3) 修改文件:vim /etc/exports

          ,将/mnt目录共享给192.168.3网段,可读写, 可更新,root用户可以远端登陆

 

        4)systemctl restart nfs-server

        5)查看共享是否成功:showmount -e

          

      2.在master节点上进行pv,pvc配置

        1)pv配置:vim mypv.yaml

          

 

         2) 配置生效:kubectl apply -f mypv.yaml

          

 

         3)查看pv是否生成: kubectl get pv

          

 

         4) pvc配置:vim mypvc.yaml

          

         5) pvc配置生效:kubectl apply -f mypvc.yaml

          

         6) 查看pvc是否生效: kubectl get pvc

          

        7)修改mynginx-pod.yaml

          

 

         8) 需要删除原有pod:kubectl delete pod mynginx

          

         9) 重新部署pod:kubectl apply -f mynginx-pod.yaml

          

        10) 验证是否成功:

          1.在node1节点/mnt目录下创建一个文件:touch hello

            

          2.在master节点的mynginx的pod下检验是否能查看到该文件:kubectl exec -it mynginx /bin/bash

            ,成功

 

 

    5.pv动态供给(基于云平台)

  2.ConfigMap&Secret(secret和config的区别就是secret多了一个base64编码过程)

    1.创建mysecret.yaml: vim mysecret.yaml

      

    2.将username和password进行base64编码

      

 

       

 

      3.替换掉mysecret.yaml中的username和password

      

 

      4.部署生效:kubectl apply -f mysecret.yaml

      

 

      5.应用配置,修改mynginx-pod.yaml

      

 

     6.删除原有pod:kubectl delete pod mynginx

    7.部署新的mynginx:kubectl apply -f mynginx-pod.yaml

    8.登陆进mynginx验证配置是否生效

      ,成功看到aaa,bbb,说明配置成功。

 

     9.修改secret,直接修改mysecret.yaml,重新部署即可

 

k8s认证与授权(认证:证明你是谁,授权:你可以做什么)

  

 

 认证的两种方式:

  1)普通用户User

  2)Service Account(推荐)

认证的3种模式:

  1)客户端证书

  2)静态密码文件

  3)Token(推荐JWT)

 

授权:

  RBAC(Role-Based Access Controll)

  Role(基于namespace)

  ClusterRole(跨namespace,实现更简化的授权,减少重复操作)

  

 

 认证与授权实操:

  1.检查k8s集群是否支持RBAC模式

    

  2.创建一个service account

    1)vim mysa.yaml(---代表把多个yaml文件集成起来)

      ,第一个是serviceAccount,第二个是Role(权限是只能操作pod,动作是读取,查询,监控),第三个是RoleBinding(将role和service accoutn绑定起来)

 

     2)部署生效: kubectl apply -f mysa.yaml

      

 

     3)以token方式登录dashboard图形化界面

      1.获取token:

        1.kubectl get secret(在创建mysa的时候就自动创建出了mysa-token)

        2.kubectl describe secret mysa-token-gz7dc(末尾是五个随机字符)

      

 

       2.登录dashboard

        

 

 

k8s-dashboard安装步骤:

  1.下载安装dashboard插件:kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta4/aio/deploy/recommended.yaml

    

  2.修改dashboard的service,使其使用nodeport模式:kubectl --namespace=kubernetes-dashboard edit service kubernetes-dashboard

  3.查询service在服务器上分配的物理端口:kubectl -n kubernetes-dashboard get service

    

  4.使用火狐浏览器进行https访问:ip+查询到的端口https://public_ip:nodePort(其他浏览器不支持自签名)

  5.使用token进行权限认证(token方式其实不太友好,尝试改成账号密码登录,但是网上博文千篇一律,再修改了apiserver.yaml文件之后,apiserver就启动不了了,尚未解决,故放弃。。。)

    1)vi dashboard.yaml

      

 

     2)部署生效:kubectl apply -f dashboard.yaml

    3)查询token:

      1.kubectl -n kubernetes-dashboard get secret

      

 

       2.kubectl -n kubernetes-dashboard describe secret admin-user-token-fbx5g

       

 

     4)把token放到登录界面进行登录即可

      

 

 

 

 

           

posted @ 2020-10-10 17:29  红嘴鲤鱼  阅读(224)  评论(0编辑  收藏  举报