为工作节点设置不同的内部 IP

Setup different Internal IP for worker nodes

我想在本地设置一个 kubernetes 集群,我想在其中拥有 1 个主节点和 2 个工作节点。我设法做到了,但我无法访问 pods 或查看特定 pod 的任何日志,因为所有节点的内部 IP 地址都相同。

vagrant@k8s-head:~$ kubectl get nodes -o wide
NAME         STATUS   ROLES    AGE     VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME
k8s-head     Ready    master   5m53s   v1.15.0   10.0.2.15     <none>        Ubuntu 16.04.6 LTS   4.4.0-151-generic   docker://18.6.2
k8s-node-1   Ready    <none>   4m7s    v1.15.0   10.0.2.15     <none>        Ubuntu 16.04.6 LTS   4.4.0-151-generic   docker://18.6.2
k8s-node-2   Ready    <none>   2m28s   v1.15.0   10.0.2.15     <none>        Ubuntu 16.04.6 LTS   4.4.0-151-generic   docker://18.6.2

为了解决这个问题,我发现应该做以下事情:
- 在 /etc/default/kubelet 文件
中添加 KUBELET_EXTRA_ARGS=--node-ip=<IP_ADDRESS> - 通过 运行:
sudo systemctl daemon-reload && sudo systemctl restart kubelet

重启 kubelet

问题是此位置缺少 /etc/default/kubelet 文件,我无法添加此附加参数。尝试手动创建文件,但当我重新启动 kubelet 时它似乎无法正常工作,IP 地址仍然相同。

有人遇到过缺少 /etc/default/kubelet 文件的问题,或者是否有其他更简单的方法来设置不同的内部 IP 地址?

在VirtualBox中Kubernetes Cluster运行每个节点IP相同是正常的,原因是NAT newtork不用于虚拟机之间的通信,10.0.2.15 IP在访问外界时被NATed。

下图显示了在 VirtualBox 之上的 Kubernetes 集群中创建的网络,如您所见,每个节点在 NAT newtork 中具有相同的 IP,但在其他网络中具有不同的 IP:

为了访问 PODs,您可以使用 NodePort 和 HOST ONLY 网络。

查看完整示例并在 Building a Kubernetes Cluster with Vagrant and Ansible (without Minikube) 下载代码。该教程解释了如何使用 Ansible 剧本、Vagrant 和 VirtualBox 启动 Kubernetes 集群。

它使用 Calico 进行网络连接,如果您需要微服务网格,它还包含另一个安装 Istio 的教程。