簡體   English   中英

我的 kubernetes 集群 IP 地址已更改,現在 kubectl 將不再連接

[英]My kubernetes cluster IP address changed and now kubectl will no longer connect

  • 在 Ubuntu 下運行我使用kubeadm init來設置我的集群(主節點)並復制到/etc/kubernetes/admin.conf $HOME/.kube/config並且在使用kubectl時一切都很好。
  • 但是,在重新啟動后,我的主節點的 IP 地址發生了更改,這與$HOME/.kube/config的 IP 地址不同,因此現在我無法再連接kubectl

那么,既然我有一個新的 IP 地址,我該如何重新生成 admin.conf 呢? 運行kubeadm init只會殺死所有不是我想要的東西。

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

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

但是,如果您使用 IP 而不是主機名,則您的 API 服務器證書將無效。 因此,要么重新生成您的證書( kubeadm alpha phase certs refresh apiserver ),使用主機名而不是 IP,要么在使用 kubectl 時添加insecure --insecure-skip-tls-verify標志

我在互聯網上找到了這個解決方案,它對我有用:

    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

您不想使用kubeadm reset 這將重置所有內容,您將不得不再次開始配置集群。

那么,在您的場景中,請查看以下步驟:

  1. nano /etc/hosts (根據YOUR_HOSTNAME更新您的新 IP)
  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 (與etcd相關的conf

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

    2379etcd默認端口。 您可以在此處定義多個etcd服務器,以逗號分隔

  4. 重啟kubeletapiserveretcd服務。

最好使用hostname而不是IP來避免這種情況。

希望能幫助到你!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM