sts
在sts之中使用的是volumeClaimTemplates进行相关的存储的配置
yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: web
spec:
selector:
matchLabels:
app: nginx # 必须匹配 .spec.template.metadata.labels
serviceName: "nginx"
replicas: 3 # 默认值是 1
minReadySeconds: 10 # 默认值是 0
template:
metadata:
labels:
app: nginx # 必须匹配 .spec.selector.matchLabels
spec:
terminationGracePeriodSeconds: 10
containers:
- name: nginx
image: registry.k8s.io/nginx-slim:0.8
ports:
- containerPort: 80
name: web
volumeMounts:
- name: www
mountPath: /usr/share/nginx/html
volumeClaimTemplates:
- metadata:
name: www
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: "my-storage-class"
resources:
requests:
storage: 1Gi给一个示例,以后要配置起码不会没有思路
Deploy
和sts不同,deploy需要进行手动的去声明pv和pvc(如果有provision的话,就只需要写pvc就行)

yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv2
labels: #这里将pv设置一个labels
app: nfs
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Recycle
nfs:
path: /data/k8s-volume
server: 192.168.1.144
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc2-nfs
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
selector: ##pvc匹配标签为app=nfs的pv
matchLabels:
app: nfs想要看更多配置,直接去官网上找,或者找博客
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: pv-nfs-nginx
spec:
replicas: 3
selector:
matchLabels:
app: pv-nfs-nginx
template:
metadata:
labels:
app: pv-nfs-nginx
spec:
containers:
- name: pv-nfs-nginx
image: nginx
ports:
- containerPort: 801
volumeMounts: #挂载,首先添加需要挂载的目录
- name: pv-nginx #挂载点的名称
mountPath: /usr/share/nginx/html #挂载点的路径
volumes: #绑定
- name: pv-nginx
persistentVolumeClaim: #将镜像中的nginx目录挂载到下面名称的pvc中
claimName: pvc2-nfs #pvc名称
---
apiVersion: v1
kind: Service
metadata:
name: nfs-pvc
labels:
app: pv-nfs-nginx
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
nodePort: 324
selector:
app: pv-nfs-nginx上面写的是如何进行声明,使用的话,直接使用pvc的名字绑定就行,一般看一下就懂啥意思了
storageClass
相较于上面写pv和pvc的方式,sc的使用对于用户来说更加便捷,只需要在pvc中声明使用的sc,再写上需要的大小,sc就可以自动创建pv
yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: test-claim
spec:
storageClassName: nfs-client
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Mi