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

创建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
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值