kubernetes - ReplicationControllerStatus.replicas 下集群 API 返回的 Pod 的状态是什么

标签 kubernetes

在查看复制 Controller 时,它会返回最新的 replicas数下ReplicationControllerStatus .我在文档中的任何地方都找不到 pod 的状态需要什么才能将其包含在其中。对 pod 进行调度是否足够?我注意到一个复制 Controller 会报告其状态的 pod,即使这些 pod 仍处于挂起状态。

最佳答案

非常有趣的问题!为了回答这个问题,我相信我们需要走《星球大战》的路线并使用来源:

  • ReplicationManager有一些关于预期的暗示
  • 然后,有controller_utils.go有更多迹象
  • 但是,计算的核心似乎在 updateReplicaCount

  • 更新 :我的同事 Stefan Schimanski 刚刚向我指出,实际上答案有点复杂;关键是 FilterActivePods :
    func FilterActivePods(pods []api.Pod) []*api.Pod {
    var result []*api.Pod
    for i := range pods {
        if api.PodSucceeded != pods[i].Status.Phase &&
            api.PodFailed != pods[i].Status.Phase &&
            pods[i].DeletionTimestamp == nil {
            result = append(result, &pods[i])
        }
    }
    return result
    }
    

    这意味着最终条件是:尚未终止且未处于正常终止状态的 pod .

    请注意,在 Kubernetes 上下文中“已调度”的定义很简单
    pod.spec.nodeName != ""
    

    特定节点上的 Kubelet 监视 API 服务器以查找具有匹配 nodeName 的 pod然后将在所述节点上启动 pod。

    关于kubernetes - ReplicationControllerStatus.replicas 下集群 API 返回的 Pod 的状态是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33755308/

    相关文章:

    kubernetes - 为集群中的单个 pod 设置环境变量

    kubernetes - 有没有办法找到与 serviceAccount 相关的 RoleBinding/ClusterRoleBinding?

    spring - 微服务部署在 kubernetes 上但未给出预期结果

    docker - 如何使用 NGINX 入口 Controller 从 Cloudflare 恢复原始客户端 IP

    azure - 如何撤消 kubectl 删除节点

    kubernetes - 滚动更新部署后 AWS ALB 目标不正常

    docker - AKS 外部负载均衡器未与 PODS 通信

    kubernetes - 无法安装 Kubernetes Metrics Server

    kubernetes - 重新安装 minikube 时 minikube 和 nginx ingress 出现问题

    kubernetes - 从集群中的容器更新部署