Kube-state-metrics error: Failed to create client: ... i/o timeout
Kube-state-metrics error: Failed to create client: ... i/o timeout
我正在 运行 虚拟机中的 Kubernetes 学习基础教程,目前 Add logging and metrics to the PHP / Redis Guestbook example。我正在尝试安装 kube-state-metrics:
git clone https://github.com/kubernetes/kube-state-metrics.git kube-state-metrics
kubectl create -f kube-state-metrics/kubernetes
但是失败了。
kubectl describe pod --namespace kube-system kube-state-metrics-7d84474f4d-d5dg7
...
Warning Unhealthy 28m (x8 over 30m) kubelet, kubernetes-node1 Readiness probe failed: Get http://192.168.129.102:8080/healthz: dial tcp 192.168.129.102:8080: connect: connection refused
kubectl logs --namespace kube-system kube-state-metrics-7d84474f4d-d5dg7 -c kube-state-metrics
I0514 17:29:26.980707 1 main.go:85] Using default collectors
I0514 17:29:26.980774 1 main.go:93] Using all namespace
I0514 17:29:26.980780 1 main.go:129] metric white-blacklisting: blacklisting the following items:
W0514 17:29:26.980800 1 client_config.go:549] Neither --kubeconfig nor --master was specified. Using the inClusterConfig. This might not work.
I0514 17:29:26.983504 1 main.go:169] Testing communication with server
F0514 17:29:56.984025 1 main.go:137] Failed to create client: ERROR communicating with apiserver: Get https://10.96.0.1:443/version?timeout=32s: dial tcp 10.96.0.1:443: i/o timeout
我不确定这个 10.96.0.1 IP 是否正确。我的虚拟机位于桥接网络 10.10.10.0/24 和仅主机网络 192.168.59.0/24 中。在初始化 Kubernetes 时,我使用了参数 --pod-network-cidr=192.168.0.0/16
这样我就多了一个 IP 范围。但是10.96.0.1看起来有点陌生。
我是Kubernetes的新手,只是在做基础教程,所以我现在不知道该做什么。如何修复或进一步调查?
编辑 - 附加信息:
kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
kubernetes-master Ready master 15d v1.14.1 10.10.10.11 <none> Ubuntu 18.04.2 LTS 4.15.0-48-generic docker://18.9.2
kubernetes-node1 Ready <none> 15d v1.14.1 10.10.10.5 <none> Ubuntu 18.04.2 LTS 4.15.0-48-generic docker://18.9.2
kubernetes-node2 Ready <none> 15d v1.14.1 10.10.10.98 <none> Ubuntu 18.04.2 LTS 4.15.0-48-generic docker://18.9.2
我用来初始化集群的命令:
sudo kubeadm init --apiserver-advertise-address=192.168.59.20 --pod-network-cidr=192.168.0.0/16
原因可能是 Pod 网络与 Node 网络重叠 - 您将 Pod 网络 CIDR 设置为 192.168.0.0/16,您的 host-only 网络将被包含在其中,因为它的地址是 192.168.59.0/ 24.
要解决此问题,您可以将 pod 网络 CIDR 更改为 192.168.0.0/24(不推荐这样做,因为这只会为您的 pod 网络提供 255 个地址)
您还可以为您的 Calico 使用不同的射程。如果您想在 运行 集群上执行此操作,这里是 instruction。
还有我试过的其他方法:
将 Calico manifest 编辑到不同的范围(例如 10.0.0.0/8)- sudo kubeadm init --apiserver-advertise-address=192.168.59.20 --pod-network-cidr=10.0.0.0/8)
并在初始化后应用它。
另一种方法是使用不同的 CNI,例如 Flannel(使用 10.244.0.0/16)。
您可以找到有关 CNI 插件范围的更多信息 here。
我正在 运行 虚拟机中的 Kubernetes 学习基础教程,目前 Add logging and metrics to the PHP / Redis Guestbook example。我正在尝试安装 kube-state-metrics:
git clone https://github.com/kubernetes/kube-state-metrics.git kube-state-metrics
kubectl create -f kube-state-metrics/kubernetes
但是失败了。
kubectl describe pod --namespace kube-system kube-state-metrics-7d84474f4d-d5dg7
...
Warning Unhealthy 28m (x8 over 30m) kubelet, kubernetes-node1 Readiness probe failed: Get http://192.168.129.102:8080/healthz: dial tcp 192.168.129.102:8080: connect: connection refused
kubectl logs --namespace kube-system kube-state-metrics-7d84474f4d-d5dg7 -c kube-state-metrics
I0514 17:29:26.980707 1 main.go:85] Using default collectors
I0514 17:29:26.980774 1 main.go:93] Using all namespace
I0514 17:29:26.980780 1 main.go:129] metric white-blacklisting: blacklisting the following items:
W0514 17:29:26.980800 1 client_config.go:549] Neither --kubeconfig nor --master was specified. Using the inClusterConfig. This might not work.
I0514 17:29:26.983504 1 main.go:169] Testing communication with server
F0514 17:29:56.984025 1 main.go:137] Failed to create client: ERROR communicating with apiserver: Get https://10.96.0.1:443/version?timeout=32s: dial tcp 10.96.0.1:443: i/o timeout
我不确定这个 10.96.0.1 IP 是否正确。我的虚拟机位于桥接网络 10.10.10.0/24 和仅主机网络 192.168.59.0/24 中。在初始化 Kubernetes 时,我使用了参数 --pod-network-cidr=192.168.0.0/16
这样我就多了一个 IP 范围。但是10.96.0.1看起来有点陌生。
我是Kubernetes的新手,只是在做基础教程,所以我现在不知道该做什么。如何修复或进一步调查?
编辑 - 附加信息:
kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
kubernetes-master Ready master 15d v1.14.1 10.10.10.11 <none> Ubuntu 18.04.2 LTS 4.15.0-48-generic docker://18.9.2
kubernetes-node1 Ready <none> 15d v1.14.1 10.10.10.5 <none> Ubuntu 18.04.2 LTS 4.15.0-48-generic docker://18.9.2
kubernetes-node2 Ready <none> 15d v1.14.1 10.10.10.98 <none> Ubuntu 18.04.2 LTS 4.15.0-48-generic docker://18.9.2
我用来初始化集群的命令:
sudo kubeadm init --apiserver-advertise-address=192.168.59.20 --pod-network-cidr=192.168.0.0/16
原因可能是 Pod 网络与 Node 网络重叠 - 您将 Pod 网络 CIDR 设置为 192.168.0.0/16,您的 host-only 网络将被包含在其中,因为它的地址是 192.168.59.0/ 24.
要解决此问题,您可以将 pod 网络 CIDR 更改为 192.168.0.0/24(不推荐这样做,因为这只会为您的 pod 网络提供 255 个地址)
您还可以为您的 Calico 使用不同的射程。如果您想在 运行 集群上执行此操作,这里是 instruction。
还有我试过的其他方法:
将 Calico manifest 编辑到不同的范围(例如 10.0.0.0/8)- sudo kubeadm init --apiserver-advertise-address=192.168.59.20 --pod-network-cidr=10.0.0.0/8)
并在初始化后应用它。
另一种方法是使用不同的 CNI,例如 Flannel(使用 10.244.0.0/16)。
您可以找到有关 CNI 插件范围的更多信息 here。