根据应用本身是否 需要持久存储数据,以及某一此请求和此前的请求是否有关联性,可以分为四类应用:
1.有状态要存储 2.有状态无持久存储 3.无状态无持久存储4.无状态有持久存储
在k8s上的数据持久性:1.emptyDir:只在节点本地使用,一旦pod删除存储卷也删除。只是用来做临时目录,可是做缓存用 没有任何持久性
2.hostPath:主机路径,直接在宿主机上找一个目录与容器建立关联关系,也不具有真正意义上的持久性
3.网络连接性存储 1)传统意义上的存储设备,本地的san(iscsi),nas(nfs,cifs)
2) 分布式存储 文件系统级别的(glusterfs,cephfs) 块存储级别的(ceph)
3)云存储 EBS、Azure Disk、
可以通过命令 kubectl explain pod.spec.volumes
apiVersion: v1 kind: Pod metadata: name: pod-volume namespace: default labels: app: myapp tier: frontend annotations: create_by: yiruiduan spec: containers: - name: nginx image: ikubernetes/myapp:v1 imagePullPolicy: IfNotPresent ports: - name: http containerPort: 80 volumeMounts: - name: html mountPath: /usr/share/nginx/html/ - name: busybox image: busybox:latest imagePullPolicy: IfNotPresent volumeMounts: - name: html mountPath: /data command: [‘/bin/sh‘,‘-c‘,"while true;do echo $(date) >>/data/index.html;sleep 2;done"] volumes: - name: html emptyDir: {}
访问nginx就可以看到动态生成的index.html
apiVersion: v1 kind: Pod metadata: name: pod-vol-hostpath namespace: default spec: containers: - name: myapp image: ikubernetes/myapp:v1 volumeMounts: - name: html mountPath: /usr/share/nginx/html volumes: - name: html hostPath: path: /data/pod/volume1 type: DirectoryOrCreate #如果目录不存在就创建
原文:https://www.cnblogs.com/both/p/9662825.html