• k8s statefulSet 学习笔记


    缩写: sts

    通过 kubectl api-resources 可以查到:

    NAMESHORTNAMESAPIVERSIONNAMESPACEDKIND
    statefulsetsstsapps/v1trueStatefulSet
    web-sts.yaml
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx
      labels:
        app: nginx
    spec:
      ports:
      - port: 80
        name: web-sts-svc
      clusterIP: None
      selector:
        app: nginx
    ---
    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: web
    spec:
      serviceName:  "nginx"
      replicas: 2
      updateStrategy:
        rollingUpdate:
          partition: 0
        type: RollingUpdate
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.7.9
            ports:
            - containerPort: 80
              name: web
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39

    创建sts

    kubectl create -f web-sts.yaml

    在这里插入图片描述

    扩缩容

    扩容:kubectl scale sts web --replicas=5

    在这里插入图片描述

    缩容:kubectl scale sts web --replicas=3

    在这里插入图片描述

    金丝雀发布

    更新逻辑:
    金丝雀发布会将大于等于partition的pod更新为最新设置的镜像。小于partition的pod则保留不动。
    这样的更新方式就可以让新旧并存,防止新镜像有问题而导致整个服务不可用

    1. 首先创建一个带有5个pod的sts

    kb describe sts web 查看sts的状态信息, 成功创建了5个pod
    在这里插入图片描述
    每个pod的镜像信息如下:
    在这里插入图片描述

    1. 修改sts的更新策略

    kb edit sts web, 找到partition,把它从0改为2。
    在这里插入图片描述

    1. 修改镜像,开始更新。

    kb edit sts web,修改image。保存退出。
    在这里插入图片描述

    1. 查看更新结果。

    kb describe sts web,删除了pod2,3,4。并创建了新的pod。
    在这里插入图片描述

    再次查看更新后的镜像
    在这里插入图片描述

    OnDelete 删除时更新

    设置更新策略为OnDelete之后,pod被删除后重建时就会更新为最新的的镜像。
    这样可以精确指定要更新的pod

    1. 创建带有两个pod的sts
      在这里插入图片描述
      在这里插入图片描述

    2. kubectl edit sts web 修改更新策略为OnDelete;edit命令是运行时修改,也可以在yaml提前改好。
      在这里插入图片描述

    3. kubectl edit sts web 修改镜像为1.9.1,保存退出。
      在这里插入图片描述

    4. 再次检查pod的镜像信息,这个时候镜像还是老的,没有变化。
      在这里插入图片描述

    5. kb delete po web-0 删除pod web-0,并再检查新创建的pod-0的镜像信息。可以看到新创建的pod镜像是1.9.1
      在这里插入图片描述

  • 相关阅读:
    Java项目:ssm教务管理系统
    [附源码]Python计算机毕业设计Django教学辅助系统
    8万字208道Java经典面试题总结(附答案)
    电影《乌云背后的幸福线》观后感
    Docker详解(上)
    【TCP】确认应答 与 超时重传
    el-table的formatter属性的使用方法
    tars架构
    消息队列—RabbitMQ如何保证消息可靠性?
    (续)SSM整合之spring笔记(AOP AOP概念及相关术语)(P099)
  • 原文地址:https://blog.csdn.net/Zx13170918986/article/details/134070421