您可以查看 MetalLB,特别是 Layer2 和本地流量策略 ( https://metallb.universe.tf/usage/ ) 您不能将 IP 分配给 Pod,但是当您创建服务类型 LoadBalancer(例如 http Traefik 等路由服务),MetalLB 将帮助将该服务绑定到节点的 IP。
例如,您可以看到服务 Trafik 的外部 IP 被报告为我节点的地址 - 192.168.1.201
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
node02 Ready <none> 8d v1.20.2+k3s1 192.168.1.202 <none> Alpine Linux v3.13 5.10.10-0-virt containerd://1.4.3-k3s1
node01 Ready control-plane,master 8d v1.20.2+k3s1 192.168.1.201 <none> Alpine Linux v3.13 5.10.10-0-virt containerd://1.4.3-k3s1
对于q2:当然可以,k8s不接管节点。你 ssh 进入它并运行你喜欢的任何东西。
对于 q1:没有。
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S)
default service/kubernetes ClusterIP 10.43.0.1 <none> 443/TCP
kube-system service/kube-dns ClusterIP 10.43.0.10 <none> 53/UDP,53/TCP,9153/TCP
kube-system service/metrics-server ClusterIP 10.43.254.20 <none> 443/TCP
kube-system service/traefik LoadBalancer 10.43.130.1 192.168.1.201 80:31666/TCP,443:31194/TCP,8080:31199/TCP
default service/whoami ClusterIP 10.43.61.10 <none> 80/TCP