如何让 Kubernetes 根据我的 Pod 的"ready"/"not ready"状态来扩展我的部署?



我有一个具有定义数量的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>

div class="one_answers">

通过在部署定义中指定副本属性,可以确保始终运行 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的自动修复概念,基本上将得到处理。

最新更新