我有一个具有定义数量的replicas
的部署。我使用就绪探测来通信我的 Pod 是否准备好/未准备好处理新连接——我的 Pod 在其生命周期内在ready
/not ready
状态之间切换。
我希望 Kubernetes 向上/向下扩展部署,以确保始终有所需数量的 Pod 处于ready
状态。
例:
- 如果
replicas
是 4,并且有 4 个 Pod 处于ready
状态,那么 Kubernetes 应该保留当前的副本计数。 - 如果
replicas
是 4,并且有 2 个ready
Pod 和 2 个not ready
Pod,那么 Kubernetes 应该再添加 2 个 pod。
如何让 Kubernetes 根据我的 Pod 的"就绪"/"未就绪"状态来扩展我的部署?
我认为这是不可能的。 如果 pod 没有准备好,k8 不会让它准备好,因为它与你的应用程序有关。即使它创造了新的 pod,也将如何保证准备就绪。因此,您必须解决未就绪状态和k8背后的原因。k8 唯一能阻止它们承担世界负载以避免请求失败<</p>
通过在部署定义中指定副本属性,可以确保始终运行 4 个 Pod:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 4 #here we define a requirement for 4 replicas
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
Kubernetes 将确保如果任何 Pod 崩溃,将创建替换 Pod,以便总共 4 个始终可用。
不能在群集中运行状况不佳的节点上计划部署。主 api 只会在运行状况良好且满足配额条件的节点上创建 Pod,以便在可调度的节点上创建任何其他 Pod。
此外,您定义的称为k8s的自动修复概念,基本上将得到处理。