我想知道 Pod 到底如何获取 IP 地址,以及它们如何将 Pod 分配给 Agent 和 Master。
我有 1 个主节点和 2 个代理节点。我的 pod 都运行良好,但我很好奇这些 pod 是如何获取 IP 地址的。
一些 pod 具有 IP 集群节点,同时,一些 pod 具有以太网 IP 地址。我为负载均衡器运行 Nginx 和 Metallb。禁用 Traefik 和 Klipper。
如果我们可以看到agent-03有2个IP地址在运行
root:/# kubectl get pods -A -o wide
ingress nginx-dep-fdcd8sdfs-gj5gff 1/1 Running 0 46h 10.42.0.80 master <none> <none>
ingress nginx-dep-fdcd8sdfs-dn80n 1/1 Running 0 46h 10.42.0.79 master <none> <none>
ingress nginx-doc-7cc85c5899-sdh55 1/1 Running 0 44h 10.42.0.82 master <none> <none>
ingress nginx-doc-7cc85c5899-gjghs 1/1 Running 0 44h 10.42.0.83 master <none> <none>
prometheus prometheus-node-exporter-6tl8t 1/1 Running 0 47h 192.168.1.3 agent-03 <none> <none>
ingress ingress-controller-nginx-ingress-controller-rqs8n 1/1 Running 5 47h 192.168.1.3 agent-03 <none> <none>
prometheus prometheus-kube-prometheus-operator-68fbcb6d67-8qsnf 1/1 Running 1 46h 10.42.2.52 agent-03 <none> <none>
ingress nginx-doc-7cc85c5899-b77j6 1/1 Running 0 43h 10.42.2.57 agent-03 <none> <none>
metallb-system speaker-sk4pz 1/1 Running 1 47h 192.168.1.3 agent-03 <none> <none>
在我的 Pod 中,agent-03 运行 Nginx-doc 使用 IP 集群,而 Metal 使用 IP 以太网,或者这取决于 Pod 中运行的服务?
ingress nginx-doc-7cc85c5899-b77j6 1/1 Running 0 43h 10.42.2.57 agent-03 <none> <none>
metallb-system speaker-sk4pz 1/1 Running 1 47h 192.168.1.3 agent-03 <none> <none>
我可以看到 master 有 2 个 Nginx-doc pod 正在运行,这意味着当我部署 3 个 Nginx-doc 时,一个代理将不会获得任何 Nginx-doc,因为它已被 master 获取。而且分配不均。
如果我错过了配置,我需要修复哪一部分。
最佳答案
根据您的内部插件,您的 POD 将获取 IP。其中大部分还是内部 IP。
网络接口(interface)有不同类型,我们可以根据需要使用CNI:https://kubernetes.io/docs/concepts/cluster-administration/networking/
POD 被服务公开。有不同类型的服务。 集群IP、节点端口、负载均衡器。 https://kubernetes.io/docs/concepts/services-networking/service/
in my pod's shows agent-03 run Nginx-doc use IP cluster while metal use IP ethernet, or it depends on what service are running in pods?
可能是由于您使用的服务类型(IP 不同且使用以太网)导致的。
如果您的服务类型是使用 MetalLb 的 LoadBalancer,这意味着该服务使用 IP 公开,而不是像 POD 具有的内部 IP 那样大多数情况下。
kubectl get svc -n <namespace name>
并检查
and I can see master has 2 Nginx-doc pods running, which means when I deploy 3 Nginx-doc one agent will not get any Nginx-doc because it has been taken by the master. and it is not divided equally.
对此没有任何保证,K8s 根据分数放置和分配 pod。
您可以在此处阅读有关分数的更多信息:https://kubernetes.io/docs/concepts/scheduling-eviction/kube-scheduler/
如果您想在特定节点上修复 POD,假设您正在使用 Node 运行 GPU,您应该在该节点上安排使用 GPU,在这种情况下您可以使用 GPU。
https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
关于kubernetes - Pod 如何管理 IP 地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70288146/