Kubeadm init/join 使用 public IP

Kubeadm init/join using public IP

我正在设置一个多节点、多硬件服务器 Kubernetes 集群。我正在使用 Calico 和 Kubeadm。

单服务器版本正在 windows 使用主机之间的专用网络。

我正面临一个网络问题,我正在尝试解决该问题以跨外部网络 (LAN) 连接节点。

因此,我尝试在虚拟机(节点)中使用网桥适配器“网卡虚拟化”,以允许使用混杂模式和静态 IP 地址通过网络访问远程服务器。我正在使用 Vagrant。

但是我无法通过网络 (LAN) 创建静态 public IP,也许我没有权限这样做。

疑难解答:

  1. 首先,我尝试创建一个随机 IP public 地址,它正在运行。但是当我尝试将工作节点加入主节点时,使用 kubeadm 失败了,“连接被拒绝”。 Kubeadm join 命令仅适用于专用网络, 我读到有额外的 Kubernetes 配置需要编辑以允许外部访问,但我不知道该怎么做。我尝试使用: kubeadm join <public-ip>:6443 --token wby3bb.vomsgxxxxxxb --discovery-token-ca-cert-hash sha256:xxxxx 但是生成的文件 /etc/kubernetes/bootstrapkubelet.conf 和 /etc/kubernetes/kubelet.conf 仍在使用其中的 :6443 。 我也尝试更新 --advertise-address.

  2. 创建网关以将特定端口的流量从第一个网络接口转发到第二个网络接口的想法之一,我在主机上使用 Ubuntu/xenial。

  3. 我认为这是最简单的解决方案,它可以解决流量转发和 IP 地址分配问题。

我在问是否有人可以帮助我。

谢谢。

在执行 kubeadm init 时添加 PUBLIC IP 和端口作为 --control-plane-endpoint 参数的一部分。

sudo kubeadm init --control-plane-endpoint "PUBLIC_IP:PORT"

这在我使用 calico 和 kubeadm 时非常有用

sudo kubeadm init --pod-network-cidr=192.168.0.0/16 --control-plane-endpoint "PUBLIC_IP:PORT"