k8s的储存方式简述
pod中的存储卷类型:
1.emptyDir:用于临时储存空间,无持久性储存功能,生命周期同pod容器,pod删除后,数据不再存在。
2.gitRepo:pod创建时,自动将云端仓库中的文件克隆到pod挂载的目录中,pod运行后,不会自主同步云端仓库的内容,有需要的话可以通过pod容器添加sidecar,来辅助完成此任务。
3.hostPath:在pods所在节点创建存储卷挂载到pod指定挂载目录中,但是如果节点宕机,数据也可能丢失。
4.nfs:在各个节点共享存储卷到指定pod挂载点
(1)在其中一个节点上下载nfs:yum -y install nfs-utils
(2)在这个节点上创建共享目录:mkdir /data/volumes
(3)编辑vi /etc/exports,把目录共享出去。编辑内容:共享的目录地址 共享给哪个主机或网段(rw,no_root_squash)(读写,压缩权限)
(4)启动服务 systemctl start nfs nfs监听2049端口
(5)在其他节点上挂载共享的目录:mount -t 文件类型(nfs) 共享目录url 挂载点目录 然后df -hT查看
(6)在编辑资源清单时在spec.template.spec.下添加volumes字段。
具体资源清单:
1 apiVersion: extensions/v1beta1 2 kind: Deployment 3 metadata: 4 name: myapp-nfs 5 namespace: default 6 spec: 7 selector: 8 matchLabels: 9 app: pod 10 san: tom 11 replicas: 2 12 template: 13 metadata: 14 name: pod-nfs 15 namespace: default 16 labels: 17 app: pod 18 san: tom 19 spec: 20 containers: 21 - name: myapp-nfs 22 image: ikubernetes/myapp:v1 23 volumeMounts: 24 - name: html 25 mountPath: /usr/share/nginx/html/ 26 volumes: 27 - name: html 28 nfs: 29 path: /data/volumes 30 server: k8s-node2
(7)应用资源清单:kubectl apply -f 资源清单名
(8)在共享目录/data/volumes/下创建测试页面:echo "<h1>NFS smbands</h1>" >/data/volumes/index.html
(9)查看pod kubectl get pods -owide
(10)测试:curl podip