代码之家  ›  专栏  ›  技术社区  ›  TheEdge

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

  •  0
  • TheEdge  · 技术社区  · 6 年前
    • 在我使用的Ubuntu下运行 kubeadm init 设置我的群集(主节点)并通过 /etc/kubernetes/admin.conf $HOME/.kube/config kubectl .
    • 但是,在重新启动后,我的主节点的IP地址发生了变化,这与主节点中的IP地址不同 $HOME/.kube/config 所以现在我不能再联系了

    既然我有了一个新的IP地址,那么如何重新生成admin.conf呢?跑步 kubeadm初始化 只会杀死我不想要的一切。

    2 回复  |  直到 6 年前
        1
  •  3
  •   skirtle    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.conf conf 有关 etcd

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

      2379 是的默认端口 . 你可以有多个

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

    它很好用 hostname IP 避免这种情况。

    希望有帮助!

        2
  •  5
  •   rat_salad    6 年前

    可以使用以下命令重新生成 管理员配置

    kubeadm alpha phase kubeconfig admin --apiserver-advertise-address <new_ip>
    

    但是,如果使用IP而不是主机名,则API服务器证书将无效。所以,要么重新生成证书( kubeadm alpha阶段证书更新apis服务器 ),使用主机名而不是IP或添加 --不安全跳过tls验证 使用kubectl时的标志

        3
  •  4
  •   Amir Soleimani Borujerdi    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
    

    参考文献: https://medium.com/@juniarto.samsudin/ip-address-changes-in-kubernetes-master-node-11527b867e88