Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 有没有办法只增加statefulset';s复制副本而不减少复制副本?_Kubernetes_Statefulset - Fatal编程技术网

Kubernetes 有没有办法只增加statefulset';s复制副本而不减少复制副本?

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

我不想减少StatefulSet控制的pod数量,我认为减少pod在生产环境中是一个危险的操作


所以,有什么办法吗?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