kubernetes - Pod 如何管理 IP 地址?

标签 kubernetes k3s

我想知道 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 不同且使用以太网)导致的。

如果您的服务类型是使用 MetalLbLoadBalancer,这意味着该服务使用 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/

相关文章:

kubernetes - k3d 负载均衡器类型的服务没有外部 IP

kubernetes - 带traefik的k8s:打开udp端口作为入口规则

kubernetes - 在 vmware-fusion vagrant provider 上与 kubernetes 的 TLS 握手超时

docker - 取消Kubernetes上的操作?

kubernetes - nginx 到上游 headless (headless)服务的连接被拒绝,但我可以从 webapp 容器中 curl

kubernetes - minikube 中的 "kubernetes"服务

kubernetes - 将 k3s 流量转发到主机

每个应用程序的 Kubernetes 集群?

docker - k8s : make local image accessible for k8s