K8s存储卷
- emptyDir:生命周期通POD相同,POD删除后emptyDir的数据一并删除
- hostPath:数据存在宿主机,pod删除后,数据不会被删除
- gitrepo:将Git仓库克隆到本地,挂载后本地修改或者Git仓库修改,都不会互相同步,只是在克隆时,Git仓库是什么就是什么
emptyDir
apiVersion: v1
kind: Pod
metadata:
name: myapp-emptydir
namespace: default
spec:
containers:
- name: myapp
image: ikubernetes/myapp:v1
imagePullPolicy: IfNotPresent
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: {}
hostPath
apiVersion: v1
kind: Pod
metadata:
name: myapp-hostpath
namespace: default
spec:
containers:
- name: myapp
image: ikubernetes/myapp:v1
imagePullPolicy: IfNotPresent
volumeMounts:
- name: html
mountPath: /usr/share/nginx/html
volumes:
- name: html
hostPath:
type: Directory
path: /data/volumes
NFS
apiVersion: v1
kind: Pod
metadata:
name: myapp-nfs
namespace: default
spec:
containers:
- name: myapp
image: ikubernetes/myapp:v1
imagePullPolicy: IfNotPresent
volumeMounts:
- name: html
mountPath: /usr/share/nginx/html
volumes:
- name: html
nfs:
path: /data/volumes
server: 10.211.55.11
pv
apiVersion: v1
kind: PersistentVolume
metadata:
name: mypv01
labels:
name: mypv01
spec:
nfs:
path: /data/vol01
server: 10.211.55.11
accessModes: ["ReadWriteOnce","ReadWriteMany","ReadOnlyMany"]
capacity:
storage: 5Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: mypv02
labels:
name: mypv02
spec:
nfs:
path: /data/vol02
server: 10.211.55.11
accessModes: ["ReadWriteOnce","ReadWriteMany","ReadOnlyMany"]
capacity:
storage: 10Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: mypv03
labels:
name: mypv03
spec:
nfs:
path: /data/vol03
server: 10.211.55.11
accessModes: ["ReadWriteOnce","ReadWriteMany","ReadOnlyMany"]
capacity:
storage: 15Gi
pvc+pod
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mypvc01
namespace: default
spec:
accessModes: ["ReadWriteOnce","ReadOnlyMany","ReadWriteMany"]
resources:
requests:
storage: 6Gi
---
apiVersion: v1
kind: Pod
metadata:
name: myapp-pvc
namespace: default
spec:
containers:
- name: myapp
image: ikubernetes/myapp:v1
volumeMounts:
- name: mypvc
mountPath: /usr/share/nginx/html/
volumes:
- name: mypvc
persistentVolumeClaim:
claimName: mypvc01
pvc删除后解绑pv
修改pv:
kubectl edit pv PV_NAME
删除claimref字段,使pv变成Available状态,可重新绑定只此PV,并且保留以前的数据,重新绑定PV后可看到以前的数据
configMap
在这里插入代码片
secrate
在这里插入代码片
statefulset
- 稳定且唯一的网络标识符
- 稳定且持久的存储
- 有序、平滑的部署和扩展
- 有序、平滑的终止和删除
- 有序的滚动更新
三个组件:
1 . headless service
2. statfullset
3. volumeClaimTemplate
解析各pod名称需在域名前加上pod名称
pod_name.service_name.ns_name.cluster.local
更新策略:
分区更新
sts.spec.updateStrategy.rollingUpdate.partition >= N (大于等于N的POD更新)