首页 > 解决方案 > 在 Kubernetes 中,处于“不健康”状态的“就绪检查”的 pod 是否无法从其他 pod 解析,直到它们准备好?

问题描述

我已经定义了一个虚拟服务作为在 DNS 中注册我的 pod 的一种方式,因为集群 IP 现在不适用于我的应用程序。

apiVersion: v1
kind: Service
metadata:
  name: company
spec:
  selector:
    app: company_application
  clusterIP: None

apiVersion: apps/v1
kind: Deployment
metadata:
  name: company-master-deployment
  labels:
    app: company_application
    role: master
spec:
  selector:
    matchLabels:
      app: company_application
      role: master
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: company_application
        role: master
    spec:
      hostname: master
      subdomain: company

我正在使用 DNS 条目master.company.default.svc.cluster.local从另一个 pod 连接到该 pod。

在这些情况下,我注意到 Kubernetes 中的一个非常烦人的行为:

这是 Kubernetes 应该工作的方式吗?除了删除就绪检查之外,还有什么方法可以确保 DNS 继续解析?

标签: kubernetes

解决方案


是的,在通过就绪检查之前,Pod 不会添加到服务端点。您可以通过运行以下命令来确认这一点:

kubectl get endpoints company -n <your_namespace>

你不会看到任何端点,直到

就绪探针

失败了。


推荐阅读