StatefulSet详解
kubectl explain sts.spec :主要字段解释
replicas :副本数
selector:那个pod是由自己管理的
serviceName:必须关联到一个无头服务商
template:定义pod模板(其中定义关联那个存储卷)
volumeClaimTemplates :生成PVC
创建pv,pvc
cat web-pv.yaml # mkdir -p /nfs_dir/{web-pv0,web-pv1} apiVersion: v1 kind: PersistentVolume metadata: name: web-pv0 labels: type: web-pv0 spec: capacity: storage: 1Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: my-storage-class nfs: path: /nfs_dir/web-pv0 server: 10.0.1.201 --- apiVersion: v1 kind: PersistentVolume metadata: name: web-pv1 labels: type: web-pv1 spec: capacity: storage: 1Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: my-storage-class nfs: path: /nfs_dir/web-pv1 server: 10.0.1.201
创建pvc(这一步可以省去让其自动创建,这里手动创建是为了让大家能更清楚在sts里面pvc的创建过程)
cat web-pvc.yaml kind: PersistentVolumeClaim apiVersion: v1 metadata: name: www-web-0 spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi storageClassName: my-storage-class selector: matchLabels: type: web-pv0 --- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: www-web-1 spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi storageClassName: my-storage-class selector: matchLabels: type: web-pv1
创建Service 和 StatefulSet
cat web.yaml apiVersion: v1 kind: Service metadata: name: web-headless labels: app: nginx spec: ports: - port: 80 name: web clusterIP: None selector: app: nginx --- apiVersion: v1 kind: Service metadata: name: web labels: app: nginx spec: ports: - port: 80 name: web selector: app: nginx --- apiVersion: apps/v1 kind: StatefulSet metadata: name: web spec: selector: matchLabels: app: nginx # has to match .spec.template.metadata.labels serviceName: "nginx" replicas: 2 # by default is 1 template: metadata: labels: app: nginx # has to match .spec.selector.matchLabels spec: terminationGracePeriodSeconds: 10 containers: - name: nginx image: nginx imagePullPolicy: IfNotPresent 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