【问题标题】:How to reconfigure the IP of a k8s node如何重新配置​​k8s节点的IP
【发布时间】:2021-08-27 07:28:59
【问题描述】:

我创建了一个由 k0s 在 aws ec2 实例上安装的 k8s。为了更快地交付新集群,我尝试为它制作一个 AMI。

但是我启动了一个新的ec2实例,内部IP变了,节点变成了NotReady

ubuntu@ip-172-31-26-46:~$ k get node
NAME               STATUS     ROLES    AGE   VERSION
ip-172-31-18-145   NotReady   <none>   95m   v1.21.1-k0s1
ubuntu@ip-172-31-26-46:~$

可以重新配置吗?


解决方法

我找到了使 AWS AMI 正常工作的解决方法

简答

  1. 使用 kubelet 的--extra-args 安装节点
  2. 更新 kube-api 到新 IP 并重启 kubelet

详情 :: 1

在 kubernete 集群中,kubelet 扮演节点代理节点。它会告诉kube-api“嘿,我在这里,我叫XXX”。

节点的名称是它的主机名,创建后不能更改。可以通过--hostname-override设置。

如果不更改节点名,kube-api 会尝试使用主机名,然后出现 old-node-name not found 导致的错误。

详情 :: 2

到k0s,它把kubelet的KUBECONFIG放到/var/lib/k0s/kubelet.conf里面,有一个kubelet api server位置

server: https://172.31.18.9:6443

为了连接一个新的 kube-api 位置,请更新它

【问题讨论】:

    标签: kubernetes k0s


    【解决方案1】:

    你检查了 kubelet 日志吗?很可能是证书的问题。您不能仅仅将现有节点变成 ami 并希望它能够工作,因为证书是为特定 IP 签名的。

    查看 github 上的 awslabs/amazon-eks-ami 存储库。您可以查看 aws 如何处理其 k8s ami。

    repo 中有一个 files/bootstrap.sh 文件,用于引导实例。它会做各种特定于实例的事情,包括获取证书。

    如果您想“更快地交付新集群”,我建议使用 all dependencies 创建一个 ami,但没有实际的 k8s boostraping。在从 ami 启动实例之后安装 k8s(或在您的情况下为 k0s),而不是之前。 (或者弄清楚如何重新生成特定于节点的证书和配置。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-27
      • 1970-01-01
      • 2020-07-14
      • 2019-03-15
      • 2020-09-09
      • 1970-01-01
      相关资源
      最近更新 更多