![](/img/trans.png)
[英]Trying to understand what a Kubernetes Worker Node and Pod is compared to a Docker “Service”
[英]Can not ping to pod's ip of worker node in kubernetes
我的集群包括:1 个主节点和 2 个工作节点。 我使用部署 yaml 创建了一个 pod。 pod 在工作节点 1 上成功运行,我可以在工作节点上 ping pod 的 ip,但我无法在 master 上 ping pod 的 ip 地址。 我试图禁用firewarlld,重新启动docker但没有成功。 请看我的命令
[root@k8s-master ~]# kubectl get pods -o wide | grep qldv
qldv-liberty-8499dfcf67-55njr 1/1 Running 0 6m42s 10.40.0.2 worker-node1 <none> <none>
[root@k8s-master ~]# ping 10.40.0.2
PING 10.40.0.2 (10.40.0.2) 56(84) bytes of data.
From 10.32.0.1 icmp_seq=1 Destination Host Unreachable
From 10.32.0.1 icmp_seq=2 Destination Host Unreachable
From 10.32.0.1 icmp_seq=3 Destination Host Unreachable
[root@k8s-master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master Ready master 43d v1.15.0
worker-node1 Ready <none> 42d v1.15.0
worker-node2 Ready <none> 42d v1.15.0
[root@k8s-master ~]# kubectl describe pod qldv-liberty-8499dfcf67-55njr
Name: qldv-liberty-8499dfcf67-55njr
Namespace: default
Priority: 0
Node: worker-node1/192.168.142.130
Start Time: Sat, 17 Aug 2019 20:05:57 +0700
Labels: app=qldv-liberty
pod-template-hash=8499dfcf67
Annotations: <none>
Status: Running
IP: 10.40.0.2
Controlled By: ReplicaSet/qldv-liberty-8499dfcf67
Containers:
qldv-liberty:
Container ID: docker://03636fb62d4cca0e41f4ad9f5a94b50cf371089ab5a0813ed802d02f4ac4b07a
Image: qldv-liberty
Image ID: docker://sha256:bd0d7ce1c07da5b9d398131b17da7a6931a9b7ae0673d19a6ec0c409416afc69
Port: 9080/TCP
Host Port: 0/TCP
State: Running
Started: Sat, 17 Aug 2019 20:06:23 +0700
Ready: True
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-vtphv (ro)
Conditions:
Type Status
Initialized True
Ready True
ContainersReady True
PodScheduled True
Volumes:
default-token-vtphv:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-vtphv
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 119s default-scheduler Successfully assigned default/qldv-liberty-8499dfcf67-55njr to worker-node1
Normal Pulled 96s kubelet, worker-node1 Container image "qldv-liberty" already present on machine
Normal Created 95s kubelet, worker-node1 Created container qldv-liberty
Normal Started 91s kubelet, worker-node1 Started container qldv-liberty
我有另一个应用程序,它还有一个在工作节点 1 上运行的 pod,我可以从主节点 ping pod 的 ip。 但我不知道为什么上述情况是不可能的。 请帮我 !
我怀疑集群是否仍然存在,因此我最好分享一些故障排除技巧:
kube-proxy
和网络插件 (flannel/ kube-proxy
/waive/etc) Pod 存在于每个节点上并处于Ready
状态。kubectl get deployments,daemonsets,pods,svc -A -o wide
Kubernetes 集群有几个要求,是否满足这些要求值得检查。
可以在控制平面组件日志中找到一些有用的信息,使用
kubectl logs kube-component-name-pod -n kube-system
或kubelet
日志使用
journalctl -u kubelet
最好使用众所周知的图像,如nginx
或mendhak/http-https-echo
。 它们可以配置为侦听任何所需的端口,并在日志或 HTTP 回复中提供有关请求的详细信息。 它有助于排除与应用程序/图像相关的问题。
首先检查与同一节点内的 Pod IP 和 Service ClusterIP 的连接。
如果工作节点操作系统没有用于故障排除的必要工具(例如容器优化映像或 coreOS),则可以使用带有 Ubuntu 或 Busybox 映像的 Pod。 创建 Deployment 或 DaemonSet 有助于在所有节点上对其进行调度。 请注意,防火墙或网络问题可能会阻止kubectl exec
连接到该 pod。
如果在同一节点内一切正常,但无法从另一个节点建立到 Pod 的连接,则值得检查网络插件状态和节点防火墙配置。 本机 Linux 防火墙助手可以干扰 kube-proxy 创建的 iptables 规则集并阻止连接。
在公共云中创建的集群可能需要额外的路由、对等互连、云防火墙或安全组配置,以允许集群节点之间的完整 IPIP 连接,尤其是在不同 VPC 中创建的集群。
coredns
/ kube-dns
健康状况。 如果使用其 pod IP 地址或 kube-dns 服务(在默认 kubeadm 集群配置中通常具有 IP 地址 10.96.0.10)请求,他们假设解析为更正 IP 地址集群服务的名称,如servicename.namespacename.svc.cluster.local
。每个问题的解决方案都可以在 StackExchange 站点上的另一个答案中找到。 官方文档是另一个重要的信息来源,也包含很好的示例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.