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

时间:2019-07-01 07:17:04

标签: kubernetes kubelet

我想在本地设置一个kubernetes集群,我想拥有1个主节点和2个工作节点。我已经做到了,但是由于所有节点的内部IP地址都相同,所以我无法访问Pod或查看特定Pod的任何日志。

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

为了解决此问题,我发现应该执行以下操作:
-在{em> / etc / default / kubelet 文件中添加KUBELET_EXTRA_ARGS=--node-ip=<IP_ADDRESS>
-通过运行以下命令重新启动kubelet:
sudo systemctl daemon-reload && sudo systemctl restart kubelet

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

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

1 个答案:

答案 0 :(得分:1)

正常情况下,在VirtualBox中运行的Kubernetes群集的每个节点中都有相同的IP ,原因是它不是NAT newtork,不希望在虚拟机之间进行通信,访问外部世界时,IP已被NAT 10.0.2.15。

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

Kubernetes Cluster Networks

要访问POD,可以使用NodePort和HOST ONLY网络。

查看完整示例,然后在Building a Kubernetes Cluster with Vagrant and Ansible (without Minikube)下载代码。本教程介绍了如何使用Ansible剧本,Vagrant和VirtualBox启动Kubernetes集群。

它使用Calico进行网络连接,并且还包括另一个教程,用于在需要微服务网格时安装 Istio