Kubernetes 偶尔会在没有网络的情况下创建pod,这会导致pod反复失败,并导致崩溃
有时,我会看到pod在没有网络连接的情况下启动的问题。正因为如此,吊舱进入了一个紧急回退状态,无法恢复。我能够让pod再次运行的唯一方法是运行Kubernetes 偶尔会在没有网络的情况下创建pod,这会导致pod反复失败,并导致崩溃,kubernetes,kubelet,Kubernetes,Kubelet,有时,我会看到pod在没有网络连接的情况下启动的问题。正因为如此,吊舱进入了一个紧急回退状态,无法恢复。我能够让pod再次运行的唯一方法是运行kubectl delete pod,然后等待它重新调度。下面是一个liveness probe因此问题而失败的示例: Liveness探测失败:获取http://172.20.78.9:9411/health: net/http:在等待连接时取消了请求(在等待标头时超出了Client.Timeout) 我还注意到,发生这种情况时,pod IP没有ipta
kubectl delete pod
,然后等待它重新调度。下面是一个liveness probe因此问题而失败的示例:
Liveness探测失败:获取http://172.20.78.9:9411/health: net/http:在等待连接时取消了请求(在等待标头时超出了Client.Timeout)
我还注意到,发生这种情况时,pod IP没有iptables条目。当pod被删除和重新调度(并且处于工作状态)时,我有iptables条目
如果我关闭容器中的livenessprobe并将其执行,我确认它与群集、本地网络或internet没有网络连接
我想听听关于它可能是什么的任何建议,或者我还可以研究什么来进一步解决这个问题
当前正在运行:
Kubernetes版本:
Client Version: version.Info{Major:"1", Minor:"4", GitVersion:"v1.4.7",
GitCommit:"92b4f971662de9d8770f8dcd2ee01ec226a6f6c0",
GitTreeState:"clean", BuildDate:"2016-12-10T04:49:33Z",
GoVersion:"go1.6.3", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"4", GitVersion:"v1.4.7",
GitCommit:"92b4f971662de9d8770f8dcd2ee01ec226a6f6c0",
GitTreeState:"clean", BuildDate:"2016-12-10T04:43:42Z",
GoVersion:"go1.6.3", Compiler:"gc", Platform:"linux/amd64"}
操作系统:
看起来您的网络驱动程序工作不正常。如果没有关于您的设置的更多信息,我只能建议您:
--网络插件
标志来判断。如果未指定网络插件,则它使用本机docker网络李>
我没有足够的观点来评论,所以这个答案是针对Prashanth B() 让我更详细地描述一下“没有网络连接”。当我进入其中一个正在遭受最初描述的症状的POD时,这就是我所看到的网络问题 在这个例子中,我们有一个没有任何网络连接的pod 首先,我从pod ping物理节点(eth0接口)的可路由ip。这从正常工作的同一节点上的吊舱开始工作
# ping 10.30.8.66
PING 10.30.8.66 (10.30.8.66): 56 data bytes
92 bytes from tv-dmx-prototype-3638746950-l8fgu (172.20.68.16):
Destination Host Unreachable
^C
正在尝试内部或外部DNS解析。我不希望ping可以工作,但这是容器中唯一可用的进行名称解析的工具。由于没有网络,我无法安装任何其他内容
# ping kubernetes
^C
# ping www.google.com
^C
#
从同一集群中的另一个pod和不工作的pod位于同一物理节点上,我将尝试连接到pod上打开的端口
/ # telnet 172.20.68.16 80
telnet: can't connect to remote host (172.20.68.16): Host is unreachable
/ #
从物理节点,我无法连接端口80上的pod ip
core@ip-10-30-8-66 ~ $ curl 172.20.68.16:80
curl: (7) Failed to connect to 172.20.68.16 port 80: No route to host
我在上浏览了故障排除指南,但该指南旨在诊断将kubernetes服务连接到一个或多个POD的问题。在我的场景中,我们在创建非特定于服务的pod时遇到了一种不可预测的行为。例如,我们每周会在跨越数十个“部署”的3个不同集群中看到1-3次这种情况。出现问题的不是同一个部署,我们唯一的办法是删除pod,然后正确实例化
我已经阅读了故障排除指南的相关部分,并将它们发布在这里
这里我们看到kubelet和kube代理正在运行
root 7186 7167 2 Jan19 ? 15:14:25 /hyperkube proxy --master=https://us-east-1-services-kubernetes.XXXXX.com
--proxy-mode=iptables --kubeconfig=/var/lib/kube-proxy/kubeconfig
core 25646 26300 0 19:22 pts/0 00:00:00 grep --colour=auto -i hyperkube
kubelet --address=0.0.0.0 --pod-manifest-path=/etc/kubernetes/manifests --enable-server --logtostderr=true --port=10250 --allow-privileged=True --max-pods=110 --v=2 --api_servers=https://us-east-1-services-kubernetes.XXXXXX.com --enable-debugging-handlers=true --cloud-provider=aws --cluster_dns=172.16.0.10 --cluster-domain=cluster.local --kubeconfig=/var/lib/kubelet/kubeconfig --node-labels=beta.kubernetes.io/instance-type=c4.8xlarge,failure-domain.beta.kubernetes.io/region=us-east-1,failure-domain.beta.kubernetes.io/zone=us-east-1d,kubernetes.io/hostname=ip-10-30-8-66.ec2.internal,public-hostname=ec2-52-207-185-19.compute-1.amazonaws.com,instance-id=i-03074c6772d89ede8
我已经验证了kube代理通过点击同一节点上的其他POD进行代理
core@ip-10-30-8-66 ~ $ curl 172.20.68.12 80
<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx/1.11.4</center>
</body>
</html>
curl: (7) Couldn't connect to server
core@ip-10-30-8-66 ~$172.20.68.1280
301永久搬迁
301永久搬迁
nginx/1.11.4
curl:(7)无法连接到服务器
一个新版本的应用程序刚刚部署,我丢失了我正在进行故障排除的pod。我将开始准备一些附加命令,以便在该症状再次出现时运行。我还将运行大量部署创建,因为我们得到的坏吊舱数量与正在创建的新吊舱数量有关 回应弗里汉()
我们正在使用默认的网络插件,正如您所指出的,它是本地docker插件
关于使用tcpdump捕获数据包路径的建议。你知道一个简单的方法来确定哪一个veth与给定的pod相关吗
我计划运行一个安装了tcpdump的容器,并观察与问题pod相关的veth上的流量,同时从pod启动出站网络流量(例如:ping、dig、curl或给定pod中可用的任何内容)
如果您还有其他想法,请告诉我,我会尝试一下。我认为我们遇到了这个错误。我已经验证了我可以复制docker/coreos版本中列出的bug。将coreos/docker和验证。对于未准备就绪的端点,您不会获得iptables条目(例如:crashloopbackoff中的死容器)。您应该从诊断网络问题开始,“没有网络连接”是什么意思?你能联系到google.com吗?你能到达同一集群中的另一个pod或服务吗?请开始调试:并报告哪个步骤失败。
core@ip-10-30-8-66 ~ $ curl 172.20.68.12 80
<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx/1.11.4</center>
</body>
</html>
curl: (7) Couldn't connect to server