我想在本地设置一个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地址?
答案 0 :(得分:1)
正常情况下,在VirtualBox中运行的Kubernetes群集的每个节点中都有相同的IP ,原因是它不是NAT newtork
,不希望在虚拟机之间进行通信,访问外部世界时,IP已被NAT 10.0.2.15。
下图显示了在VirtualBox顶部的Kubernetes群集中创建的网络,如您所见,每个节点在NAT newtork
中具有相同的IP,但在其他网络上具有不同的IP:
要访问POD,可以使用NodePort和HOST ONLY
网络。
查看完整示例,然后在Building a Kubernetes Cluster with Vagrant and Ansible (without Minikube)下载代码。本教程介绍了如何使用Ansible剧本,Vagrant和VirtualBox启动Kubernetes集群。
它使用Calico进行网络连接,并且还包括另一个教程,用于在需要微服务网格时安装 Istio 。