kubernetes - 为什么创建 kubernetes 集群后 /var/lib/cni/networks 为空?
问题描述
使用 Calico、CoreDNS 安装了一个 kubernetes 集群。
检查收到的一个 CoreDNS 的事件消息
Readiness probe failed: HTTP probe failed with statuscode: 503
目录下/var/lib/cni/networks/
什么都没有。为什么?怎么修?
甚至所有 pod 的状态都是 Running,但担心它的健康状况。
日志
# kubectl logs coredns-1308140hfw -n kube-system
[INFO] plugin/ready: Still waiting on: "kubernetes"
.:53
[INFO] plugin/reload: Running configuration MD5 = 20328084ha6966e76816bcd928foa
CoreDNS-1.7.0
linux/amd64, go1.14.4, f59c03d
[INFO] plugin/ready: Still waiting on: "kubernetes"
[INFO] plugin/ready: Still waiting on: "kubernetes"
I0804 08:18:03.874045 1 trace.go:116] Trace[336122540]: "Reflector ListAndWatch" name:pkg/mod/k8s.io/client-go@v0.18.3/tools/cache/reflector.go:125 (started: 2020-08-04 08:17:33.872753993 +0000 UTC m=+0.038838328) (total time: 30.001059939s):
Trace[336122540]: [30.001059939s] [30.001059939s] END
E0804 08:18:03.874108 1 reflector.go:178] pkg/mod/k8s.io/client-go@v0.18.3/tools/cache/reflector.go:125: Failed to list *v1.Endpoints: Get "https://[IPv6]:443/api/v1/endpoints?limit=500&resourceVersion=0": dial tcp [IPv6]:443: i/o timeout
I0804 08:18:03.874047 1 trace.go:116] Trace[208240456]: "Reflector ListAndWatch" name:pkg/mod/k8s.io/client-go@v0.18.3/tools/cache/reflector.go:125 (started: 2020-08-04 08:17:33.872755558 +0000 UTC m=+0.038839930) (total time: 30.001213767s):
Trace[208240456]: [30.001213767s] [30.001213767s] END
E0804 08:18:03.874137 1 reflector.go:178] pkg/mod/k8s.io/client-go@v0.18.3/tools/cache/reflector.go:125: Failed to list *v1.Namespace: Get "https://[IPv6]:443/api/v1/namespaces?limit=500&resourceVersion=0": dial tcp [IPv6]:443: i/o timeout
I0804 08:18:03.874214 1 trace.go:116] Trace[1106410694]: "Reflector ListAndWatch" name:pkg/mod/k8s.io/client-go@v0.18.3/tools/cache/reflector.go:125 (started: 2020-08-04 08:17:33.872753715 +0000 UTC m=+0.038838086) (total time: 30.001438405s):
Trace[1106410694]: [30.001438405s] [30.001438405s] END
E0804 08:18:03.874248 1 reflector.go:178] pkg/mod/k8s.io/client-go@v0.18.3/tools/cache/reflector.go:125: Failed to list *v1.Service: Get "https://[IPv6]:443/api/v1/services?limit=500&resourceVersion=0": dial tcp [IPv6]:443: i/o timeout
解决方案
就绪探测如何工作?
有时,应用程序暂时无法提供流量。例如,应用程序可能需要在启动期间加载大量数据或配置文件。在这种情况下,您不想杀死应用程序,但也不想向它发送请求。Kubernetes 提供就绪探针来检测和缓解这些情况。带有容器报告它们尚未准备好的 pod 不会通过 Kubernetes 服务接收流量。
当 Pod 启动时,可以将 Kubernetes 配置为在执行第一次就绪检查之前等待可配置的时间。之后,它会定期调用探针并根据就绪探针的结果进行操作。如果一个 pod 报告它没有准备好,它就会从服务中删除。如果 pod 然后再次准备好,则重新添加它。
这意味着在您的情况下,您的coreDNS
pod 并未完全运行,但 Kubernetes 已经开始发送探测以检查它的readiness
.
多亏了这些探测,当你有几个副本时,Kubernetes 只会将流量导向那些健康的(探测成功)。
PS。我的/var/lib/cni/networks/
目录也是空的。
推荐阅读
- google-cloud-platform - Google Cloud Storage 网络托管:将 http 重定向到 https
- google-sheets - 我可以使用电子表格更新 Google 表单问题吗?
- reactjs - TypeError:compiler.plugin 不是 ReactLoadablePlugin.apply 的函数
- python - 如何在 DRF 模型字段中仅显示和使用日期时间中的天数并发送请求以填充该字段
- python - 使用 SELECT 语句执行值
- apache - 403 Forbidden In Asp.Net Core app with Apache
- sql - isnull 和列创建
- python - 如何使用从另一个类获得的值刷新/重新初始化一个类?
- android - 尝试在任何地方自由使用媒体播放器
- flutter - 使用非默认文本大小时,浮动按钮中的文本居中