容器之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放到登录界面进行登录即可