本文主要是介绍k8s statefulSet 学习笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
缩写: sts
通过 kubectl api-resources 可以查到:
NAME | SHORTNAMES | APIVERSION | NAMESPACED | KIND |
---|---|---|---|---|
statefulsets | sts | apps/v1 | true | StatefulSet |
web-sts.yaml
apiVersion: v1
kind: Service
metadata:name: nginxlabels:app: nginx
spec:ports:- port: 80name: web-sts-svcclusterIP: Noneselector:app: nginx
---
apiVersion: apps/v1
kind: StatefulSet
metadata:name: web
spec:serviceName: "nginx"replicas: 2updateStrategy:rollingUpdate:partition: 0type: RollingUpdateselector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.7.9ports:- containerPort: 80name: web
创建sts
kubectl create -f web-sts.yaml
扩缩容
扩容:kubectl scale sts web --replicas=5
缩容:kubectl scale sts web --replicas=3
金丝雀发布
更新逻辑:
金丝雀发布会将大于等于partition的pod更新为最新设置的镜像。小于partition的pod则保留不动。
这样的更新方式就可以让新旧并存,防止新镜像有问题而导致整个服务不可用。
- 首先创建一个带有5个pod的sts
kb describe sts web 查看sts的状态信息, 成功创建了5个pod
每个pod的镜像信息如下:
- 修改sts的更新策略
kb edit sts web, 找到partition,把它从0改为2。
- 修改镜像,开始更新。
kb edit sts web,修改image。保存退出。
- 查看更新结果。
kb describe sts web,删除了pod2,3,4。并创建了新的pod。
再次查看更新后的镜像
这篇关于k8s statefulSet 学习笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!