9、kubernetes之statefulset控制器

拼搏现实的明天。 2023-08-17 16:53 241阅读 0赞

一、StatefulSet 有状态副本集

  • 必要的三个组件:headless service、StatefulSet、volumeClaimTemplate
  • 准备pv

    apiVersion: v1
    kind: PersistentVolume
    metadata:
    name: pv001
    labels:

    1. name: pv001

    spec:
    nfs:

    1. path: /data/volumes/v1
    2. server: 192.168.100.1

    accessModes: [“ReadWriteOnce”]
    capacity:

    1. storage: 5Gi

    apiVersion: v1
    kind: PersistentVolume
    metadata:
    name: pv002
    labels:

    1. name: pv002

    spec:
    nfs:

    1. path: /data/volumes/v2
    2. server: 192.168.100.1

    accessModes: [“ReadWriteOnce”]
    capacity:

    1. storage: 5Gi

    apiVersion: v1
    kind: PersistentVolume
    metadata:
    name: pv003
    labels:

    1. name: pv003

    spec:
    nfs:

    1. path: /data/volumes/v3
    2. server: 192.168.100.1

    accessModes: [“ReadWriteOnce”]
    capacity:

    1. storage: 5Gi

    apiVersion: v1
    kind: PersistentVolume
    metadata:
    name: pv004
    labels:

    1. name: pv004

    spec:
    nfs:

    1. path: /data/volumes/v4
    2. server: 192.168.100.1

    accessModes: [“ReadWriteOnce”]
    capacity:

    1. storage: 5Gi

    apiVersion: v1
    kind: PersistentVolume
    metadata:
    name: pv005
    labels:

    1. name: pv005

    spec:
    nfs:

    1. path: /data/volumes/v5
    2. server: 192.168.100.1

    accessModes: [“ReadWriteOnce”]
    capacity:

    1. storage: 5Gi
  • 创建3个有状态副本(使用nginx模拟)

    apiVersion: v1
    kind: Service
    metadata:
    name: myapp
    labels:

    1. app: myapp

    spec:
    ports:

    • port: 80
      name: web
      clusterIP: None
      selector:
      app: myapp-pod

    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
    name: myapp
    spec:
    serviceName: myapp
    replicas: 3
    selector:

    1. matchLabels:
    2. app: myapp-pod

    template:

    1. metadata:
    2. labels:
    3. app: myapp-pod
    4. spec:
    5. containers:
    6. - name: myapp
    7. image: dongfeimg/myapp:v1
    8. ports:
    9. - containerPort: 80
    10. name: web
    11. volumeMounts:
    12. - name: myappdata
    13. mountPath: /usr/share/nginx/html

    volumeClaimTemplates:

    • metadata:
      name: myappdata
      spec:
      accessModes: [“ReadWriteOnce”]
      resources:
      1. requests:
      2. storage: 5Gi

二、滚动更新

  • 扩容/缩容

    kubectl scale sts myapp —replicas=5

    kubectl patch sts myapp -p ‘{“spec”:{“replicas”:2}}’

  • 更新

    kubectl patch sts myapp -p ‘{“spec”:{“updateStrategy”:{“rollingUpdate”:{partition”:4}}}}’ #修改更新分区;

    kubectl set image sts/myapp myapp=dongfeimg/myapp:v2

更新分区:”partition”:4

代表pod序号大于等于4的pod做滚动更新,更新时倒序更新

转载于:https://www.cnblogs.com/L-dongf/p/11442253.html

发表评论

表情:
评论列表 (有 0 条评论,241人围观)

还没有评论,来说两句吧...

相关阅读