Kubernetes StatefulSet 是一种用于管理有状态应用程序的控制器,与 Deployment 不同,StatefulSet 为每个Pod分配了唯一的标识符,通常是一个稳定的网络标识符(例如,Pod名称的索引)。这使得 StatefulSet 适用于运行有状态应用程序,如数据库。
apiVersion: apps/v1
kind: Deployment
metadata:
name: nfs-client-provisioner
namespace: kube-system
spec:
replicas: 1
selector:
matchLabels:
app: nfs-client-provisioner
template:
metadata:
labels:
app: nfs-client-provisioner
spec:
serviceAccountName: nfs-client-provisioner
containers:
- name: nfs-client-provisioner
#image: quay.io/external_storage/nfs-client-provisioner:v3.1.0-k8s1.11
image: registry.cn-beijing.aliyuncs.com/pylixm/nfs-subdir-external-provisioner:v4.0.0
volumeMounts:
- name: nfs-client-root
mountPath: /persistentvolumes
env:
- name: PROVISIONER_NAME
value: mynfs
- name: NFS_SERVER
value: 192.168.64.60
- name: NFS_PATH
value: /home/nfs/write
volumes:
- name: nfs-client-root
nfs:
server: 192.168.64.60
path: /home/nfs/write
这里有些知识是后面介绍的,这里简单说明下「volumeClaimTemplates」:PVC 申请模版 应用到需要的pod中「storageClassName」:描述动态存储的配置「resources.requests.storage」: 需要多大的存储空间
kubectl get pod,sts
可以看到sts中所有的pod后面都带上了索引,而不再是随机串