Home
Cron Job
DNS Pod 与 Service
DaemonSet
Deployments
Docker 用户使用 kubectl 命令指南
Init 容器
JSONPath 支持
Kubernetes 中的代理
Kubernetes 组件
Kubernetes集群中使用Sysctls
Managing Compute Resources for Containers
Master 节点通信
Nodes
Pod Preset
Pod 安全策略
Pod 的生命周期
Secret
Service
kubectl概述
为容器设置启动时要执行的命令及其入参
为容器设置环境变量
云供应商
使用 Calico 来提供 NetworkPolicy
使用 HostAliases 向 Pod /etc/hosts 文件添加条目
使用 PodPreset 将信息注入 Pods
使用 Romana 来提供 NetworkPolicy
使用 Secret 安全地分发凭证
使用 Service 把前端连接到后端
使用 Weave 网络来提供 NetworkPolicy
使用Deployment运行一个无状态应用
关键插件 Pod 的调度保证
同 Pod 内的容器使用共享卷通信
在 Kubernetes 中配置私有 DNS 和上游域名服务器
垃圾收集
基于Replication Controller执行滚动升级
声明网络策略
安装扩展(Addons)
容器环境变量
对 DaemonSet 执行回滚
应用故障排查
应用资源配额和限额
应用连接到 Service
弹缩StatefulSet
控制节点上的CPU管理策略
改变默认 StorageClass
更改 PersistentVolume 的回收策略
概念模板示例
理解 Kubernetes 对象
知名标签(Label)、注解(Annotation)和 Taints
管理巨页(HugePages)
给容器分配非透明整型资源
网络策略
联邦
认识 Kubernetes?
认识 Kubernetes?
设备插件
设置 Pod CPU 和内存限制
访问集群上运行的服务
证书
证书轮换
调度 GPU
调试Pods和Replication Controllers
调试StatefulSet
资源配额
运行一个单实例有状态应用
通过文件将Pod信息呈现给容器
通过环境变量将Pod信息呈现给容器
通过配置文件设置 Kubelet 参数
配置你的云平台防火墙
配置命名空间下pod总数
配置对多集群的访问
镜像
集群故障排查
集群管理
集群管理概述
静态Pods

Edit This Page

弹缩StatefulSet

本文介绍如何弹缩StatefulSet.

Before you begin

使用 <code>kubectl</code> 弹缩StatefulSets

弹缩请确认 kubectl 已经升级到Kubernetes1.5及以上版本. 如果不确定, 执行 kubectl version 命令并检查使用的 Client Version.

<code>kubectl 弹缩</code>

首先, 找到您想要弹缩的StatefulSet. 记住, 您需先清楚是否能弹缩该应用.

kubectl get statefulsets <stateful-set-name>

改变StatefulSet副本数量:

kubectl scale statefulsets <stateful-set-name> --replicas=<new-replicas>

可使用其他命令: <code>kubectl apply</code> / <code>kubectl edit</code> / <code>kubectl patch</code>

另外, 您可以 in-place updates StatefulSets.

如果您的StatefulSet开始由 kubectl applykubectl create --save-config 创建,更新StatefulSet manifests中的 .spec.replicas, 然后执行命令 kubectl apply:

kubectl apply -f <stateful-set-file-updated>

除此之外, 可以通过命令 kubectl edit 编辑该字段:

kubectl edit statefulsets <stateful-set-name>

或使用 kubectl patch:

kubectl patch statefulsets <stateful-set-name> -p '{"spec":{"replicas":<new-replicas>}}'

排查故障

缩容工作不正常

当Stateful管理下的任何一个Pod不健康时您不能缩容该StatefulSet. 仅当Stateful下的所有Pods都处于运行和ready状态后才可缩容.

当一个StatefulSet的size > 1, 如果有一个Pod不健康, 没有办法让Kubernetes知道是否是由于永久性故障还是瞬态(升级/维护/节点重启)导致. 如果该Pod不健康是由于永久性 故障导致, 则在不纠正该故障的情况下进行缩容可能会导致一种状态, 即StatefulSet下的Pod数量低于应正常运行的副本数. 这也许会导致StatefulSet不可用.

如果由于瞬态故障而导致Pod不健康,并且Pod可能再次可用,那么瞬态错误可能会干扰您对 StatefulSet的扩容/缩容操作. 一些分布式数据库在节点加入和同时离开时存在问题. 在 这些情况下,最好是在应用级别进行弹缩操作, 并且只有在您确保Stateful应用的集群是完全健康时才执行弹缩.

What's next

了解更多 deleting a StatefulSet.