我的kubernetes群集IP地址已更改,现在kubectl将不再连接

The*_*dge 2 kubernetes

  • 我曾在Ubuntu下运行,用于kubeadm init设置群集(主节点),并在上复制,/etc/kubernetes/admin.conf $HOME/.kube/config使用时一切正常kubectl
  • 但是,重新启动后,我的主节点的IP地址更改了与原来的IP地址不同的更改,$HOME/.kube/config因此现在我无法再连接kubectl

那么,现在有了新IP地址后,如何重新生成admin.conf?跑步kubeadm init只会杀死我所不想要的一切。

小智 5

你不想使用kubeadm reset. 这将重置所有内容,并且您必须重新开始配置集群。

那么,在您的情况下,请查看以下步骤:

  1. nano /etc/hosts(更新你的新IP YOUR_HOSTNAME
  2. nano /etc/kubernetes/config(与集群相关的配置设置)在此文件中查找以下参数并相应更新

    KUBE_MASTER="--master=http://YOUR_HOSTNAME:8080"

    KUBE_ETCD_SERVERS="--etcd-servers=http://YOUR_HOSTNAME:2379" #2379 is default port

  3. nano /etc/etcd/etcd.confconf相关etcd

    KUBE_ETCD_SERVERS="--etcd-servers=http://YOUR_HOSTNAME/WHERE_EVER_ETCD_HOSTED:2379"

    2379是 的默认端口etcd。您可以etcd在此处定义多个服务器,以逗号分隔

  4. 重新启动kubelet, apiserver,etcd服务。

使用hostname而不是IP避免这种情况就好了。

希望能帮助到你!

  • 就我而言,没有文件 /etc/kubernetes/config ?我在 kubernetes 文件夹中有以下文件:admin.conf、kubelet.conf、controller-manager.conf、pki 文件夹、manifests 文件夹、scheduler.conf。我按照你的方式做并不成功。您需要重新创建密钥文件吗? (2认同)

rat*_*lad 5

以下命令可用于重新生成admin.conf

kubeadm alpha phase kubeconfig admin --apiserver-advertise-address <new_ip>
Run Code Online (Sandbox Code Playgroud)

但是,如果使用IP而不是主机名,则您的API服务器证书将无效。因此,要么重新生成证书(kubeadm alpha阶段证书续订apiserver),使用主机名代替IP,或者在使用kubectl时添加不安全的 --insecure-skip-tls-verify标志

  • 错误:未知标志:-apiserver-advertise-address (5认同)

Ami*_*rdi 5

我在互联网上找到了这个解决方案,它对我有用:

    systemctl stop kubelet docker
    cd /etc/
    mv kubernetes kubernetes-backup
    mv /var/lib/kubelet /var/lib/kubelet-backup
    mkdir -p kubernetes
    cp -r kubernetes-backup/pki kubernetes
    rm kubernetes/pki/{apiserver.*,etcd/peer.*}
    systemctl start docker
    kubeadm init --ignore-preflight-errors=DirAvailable--var-lib-etcd
    #Run "kubeadm reset" on all nodes if was this error "error execution phase preflight: [preflight] Some fatal errors occurred:
        [ERROR FileAvailable--etc-kubernetes-kubelet.conf]: /etc/kubernetes/kubelet.conf already exists
        [ERROR Port-10250]: Port 10250 is in use
        [ERROR FileAvailable--etc-kubernetes-pki-ca.crt]: /etc/kubernetes/pki/ca.crt already exists"
    cp kubernetes/admin.conf ~/.kube/config
    kubectl get nodes --sort-by=.metadata.creationTimestamp
    kubectl delete node $(kubectl get nodes -o jsonpath='{.items[(@.status.conditions[0].status=="Unknown")].metadata.name}')
    kubectl get pods --all-namespaces
Run Code Online (Sandbox Code Playgroud)

在这些之后,加入你的奴隶主。参考:https : //medium.com/@juniarto.samsudin/ip-address-changes-in-kubernetes-master-node-11527b867e88

  • 我认为这是所有答案中最简单的一个。 (2认同)