0

使用 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
4

1 回答 1

1

就绪探测如何工作?

有时,应用程序暂时无法提供流量。例如,应用程序可能需要在启动期间加载大量数据或配置文件。在这种情况下,您不想杀死应用程序,但也不想向它发送请求。Kubernetes 提供就绪探针来检测和缓解这些情况。带有容器报告它们尚未准备好的 pod 不会通过 Kubernetes 服务接收流量。

当 Pod 启动时,可以将 Kubernetes 配置为在执行第一次就绪检查之前等待可配置的时间。之后,它会定期调用探针并根据就绪探针的结果进行操作。如果一个 pod 报告它没有准备好,它就会从服务中删除。如果 pod 然后再次准备好,则重新添加它。

这意味着在您的情况下,您的coreDNSpod 并未完全运行,但 Kubernetes 已经开始发送探测以检查它的readiness.

多亏了这些探测,当你有几个副本时,Kubernetes 只会将流量导向那些健康的(探测成功)。

PS。我的/var/lib/cni/networks/ 目录也是空的。

于 2020-08-06T07:54:23.297 回答