【问题标题】:Initiate a Kubernetes cluster with Public IPs使用公共 IP 启动 Kubernetes 集群
【发布时间】:2019-07-11 10:59:59
【问题描述】:

我在私有云 (OpenStack) 上拥有一些虚拟机。在尝试在主节点上创建集群时,默认情况下会在其私有 IP 上启动集群。当我尝试使用--apiserver-advertise-address=publicIP标志基于主节点的公共IP启动集群时,它给出了错误。

启动阶段停止如下:

[wait-control-plane] 等待 kubelet 启动控制 平面作为来自目录“/etc/kubernetes/manifests”的静态 Pod。这 最多可能需要 4m0s [kubelet-check] 40s 的初始超时已通过。

我注意到我看不到 VM 内部的公共 IP(运行“ip addr”),但可以通过其公共 IP 访问 VM。

有没有办法在节点的“公共 IP”之上设置 Kubernetes 集群?

【问题讨论】:

    标签: kubernetes openstack kubernetes-cluster


    【解决方案1】:

    私有 IP 地址用于实例之间的通信,而公共地址用于与云以外的网络(包括 Internet)进行通信。所以建议只在私有地址上设置集群。

    当您启动一个实例时,它会自动分配一个私有 IP 地址,该地址保持不变,直到您明确终止该实例。重启实例对私有 IP 地址没有影响。

    由云管理员配置的浮动 IP 地址池在 OpenStack Compute 中可用。项目配额定义了您可以分配给项目的最大浮动 IP 地址数。

    此错误可能是由以下原因引起的:

    • kubelet 没有运行
    • kubelet 不健康,因为节点配置错误(必需的 cgroups 已禁用)

    如果您使用的是 systemd 驱动的系统,您可以尝试使用以下命令解决错误:

    • systemctl status kubelet
    • journalctl -xeu kubelet

    尝试将机器的浮动 IP 添加到要部署集群的主节点上的 /etc/hosts 文件中并再次运行安装。

    【讨论】:

    • 感谢您的回复!我正在使用浮动 IP,并且 /etc/hosts 使用我的 IP 进行编辑。我可以使用“kubeadm init”启动主节点,默认情况下它基于我节点的私有 IP。我正在使用以下命令根据我的浮动 IP 进行初始化:“kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=x.x.x.x”,但它在上述步骤中停止(启动控制平面)。
    • 还有问题吗?
    • 对于基于 OpenStack 的虚拟机,我仍然有这个问题。但是,尝试在 Bare Metal 上使用 VM 是可能的。
    • @MaryamTavakkoli,您是否设法为 openstack VM 解决了这个问题?我有完全相同的问题。我尝试了github.com/kubernetes/kubeadm/issues/1390 中提供的步骤,但它不起作用。
    猜你喜欢
    • 2021-02-20
    • 1970-01-01
    • 2019-07-29
    • 2016-06-11
    • 1970-01-01
    • 2016-12-02
    • 1970-01-01
    • 2018-04-20
    • 2019-04-23
    相关资源
    最近更新 更多