kubernetes - 在 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 中的一个非常烦人的行为:
- 我有一个由 ReadinessCheck 定义的处于“不健康”状态的 pod
- 我有另一个 pod,其应用程序想要在该 pod 上进行 DNS 查找
- 在“不健康”的 pod 变得健康之前,DNS 查找失败。
这是 Kubernetes 应该工作的方式吗?除了删除就绪检查之外,还有什么方法可以确保 DNS 继续解析?
解决方案
是的,在通过就绪检查之前,Pod 不会添加到服务端点。您可以通过运行以下命令来确认这一点:
kubectl get endpoints company -n <your_namespace>
你不会看到任何端点,直到
就绪探针
失败了。
推荐阅读
- google-app-engine - 谷歌脚本:如何调整 blob 中的图像大小?
- optimization - 类似旅行推销员的优化问题 - 需要更好的启发式
- android - SwipeRefreshLayout + Webview:如何在不触发滑动刷新的情况下滚动可滚动模式
- python - 将(标量)函数数组转换为返回数组的函数
- javascript - 自定义“新建项目或编辑此列表”按钮
- python - Is there a way that I can have a file download within the success function of an ajax call?
- android - 在 Android 上 React Native Facebook SDK 初始化
- java - 有没有办法将双击动作监听器添加到 JScrollPane 上?
- docker - 如何在 docker-compose 命名卷中使用现有目录 ~/.ssh?
- c++ - 强制堆分配超过 4 GB