Kubernetes 有没有办法只增加statefulset';s复制副本而不减少复制副本?
我不想减少StatefulSet控制的pod数量,我认为减少pod在生产环境中是一个危险的操作Kubernetes 有没有办法只增加statefulset';s复制副本而不减少复制副本?,kubernetes,statefulset,Kubernetes,Statefulset,我不想减少StatefulSet控制的pod数量,我认为减少pod在生产环境中是一个危险的操作 所以,有什么办法吗?thx~我不确定这是否是您要找的,但您可以 使用kubectl缩放状态集 首先,找到要缩放的状态集 kubectl获取状态集 更改状态集的副本数: kubectl scale状态集--副本= 为了向您展示一个示例,我部署了一个名为web的2-pod状态集: $ kubectl get statefulsets.apps web NAME READY AGE web
所以,有什么办法吗?thx~我不确定这是否是您要找的,但您可以 使用kubectl缩放状态集 首先,找到要缩放的状态集
kubectl获取状态集
更改状态集的副本数:
kubectl scale状态集--副本=
为了向您展示一个示例,我部署了一个名为web
的2-pod状态集:
$ kubectl get statefulsets.apps web
NAME READY AGE
web 2/2 60s
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
web-0 1/1 Running 0 63s
web-1 1/1 Running 0 44s
$ kubectl describe statefulsets.apps web
Name: web
Namespace: default
CreationTimestamp: Wed, 23 Oct 2019 13:46:33 +0200
Selector: app=nginx
Labels: <none>
Annotations: kubectl.kubernetes.io/last-applied-configuration:
{"apiVersion":"apps/v1","kind":"StatefulSet","metadata":{"annotations":{},"name":"web","namespace":"default"},"spec":{"replicas":2,"select...
Replicas: 824643442664 desired | 2 total
Update Strategy: RollingUpdate
Partition: 824643442984
Pods Status: 2 Running / 0 Waiting / 0 Succeeded / 0 Failed
...
在已经工作的吊舱中没有任何停机时间
我认为在生产环境中,减少POD是一项危险的操作
我同意你的看法
正如Crou所写,可以使用kubectl scale Statefulset
执行此操作,但这是一种命令式操作,不建议在生产环境中执行命令式操作
在生产环境中,最好使用声明性操作,例如,在文本文件(例如stateful set name.yaml)中具有副本的数量,并使用kubectl apply-f.yaml
以这种工作方式进行部署,将yaml文件存储在Git中很容易,因此您可以完全控制所有更改,并可以恢复/回滚到以前的配置。当您将声明性文件存储在Git存储库中时,您可以使用CICD解决方案(例如Jenkins)或1)验证操作(例如不允许减少)和2)在将更改应用到生产环境之前,首先部署到测试环境并查看其工作情况
我推荐在第18章(新章节)中描述此过程的书(新版)。是的,我同意声明性操作,我的意思是自动缩放(HPA)如何控制状态集?而不是缩放manually@adrianding它写道,HPA是为无状态工作负载设计的,请参阅文档复制控制器、部署或副本集“,为了处理statefulSet的自动缩放,我将根据应用程序使用或编写自定义控制器。我读取了链接并将其写入hpa,hpa可用于rc、rs、部署,但不用于守护程序,只是没有提到statefulSet。”。你们知道我不能使用kubectl自动缩放sts xxx,但我可以使用声明性操作(HPA.yaml),它可以工作!!!
$ kubectl scale statefulset web --replicas=5
statefulset.apps/web scaled
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
web-0 1/1 Running 0 3m41s
web-1 1/1 Running 0 3m22s
web-2 1/1 Running 0 59s
web-3 1/1 Running 0 40s
web-4 1/1 Running 0 27s
$ kubectl get statefulsets.apps web
NAME READY AGE
web 5/5 3m56s