【问题标题】:init a kubernetes cluster with kubeadm but public IP on aws使用 kubeadm 初始化一个 kubernetes 集群,但在 aws 上使用公共 IP
【发布时间】:2020-06-11 06:42:04
【问题描述】:

我正在尝试遵循本教程: https://www.digitalocean.com/community/tutorials/how-to-create-a-kubernetes-cluster-using-kubeadm-on-ubuntu-18-04

重要区别: 我需要在特定节点上运行master,而worker 节点来自AWS 上的不同 区域。

所以一切都很顺利,直到我想加入节点(第 5 步)。命令成功,但kubectl get nodes 仍然只显示master 节点。

我查看了join 命令,它包含master私人 IP 地址: join 10.1.1.40。我想如果工作人员在不同的区域,这将无法工作(注意:稍后我们可能甚至需要添加来自不同提供商的节点,所以如果没有重要的安全威胁,它应该通过公共 IP 工作)。

所以当kubeadm init pod-network-cidr=10.244.0.0/16 初始化集群但使用这个内部 IP 时,我尝试使用 kubeadm init --apiserver-advertise-address <Public-IP-Addr> --apiserver-bind-port 16443 --pod-network-cidr=10.244.0.0/16

但是它总是挂起,并且 init 没有完成。 kubelet 日志打印了很多

E0610 19:24:24.188347 1051920 kubelet.go:2267] node "ip-x-x-x-x" not found

其中“ip-x-x-x-x”似乎是 AWS 上主节点的主机名。

【问题讨论】:

    标签: amazon-web-services kubernetes


    【解决方案1】:

    我认为使它起作用的原因是我将主服务器的主机名设置为其 public DNS 名称,然后将其用作--control-plane-endpoint 参数...,没有--apiserver-advertise-address(但使用--apiserver-bind-port 因为我需要在另一个端口上运行它)。

    需要运行更长时间才能确认,但目前看起来不错。

    【讨论】:

    • 我遇到了完全相同的问题,我用同样的方法解决了。但是我在获取部署在工作节点中的 Pod 的日志时遇到了问题。 kubectl logs 命令正在查看工作节点的私有 IP 地址。你有这个问题吗?
    猜你喜欢
    • 2020-08-16
    • 1970-01-01
    • 2021-08-08
    • 1970-01-01
    • 2019-05-08
    • 2019-05-19
    • 2017-06-03
    • 2019-02-02
    • 2021-02-20
    相关资源
    最近更新 更多