日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

rancher rke 集群恢复

發布時間:2024/3/26 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 rancher rke 集群恢复 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如果 rancher 是 HA 架構部署,在 HA 架構下,rancher 的數據是保存在 rke local K8S 集群中。所以在 rancher HA 架構下只需要通過 RKE 恢復 local 集群數據,即可同時恢復 rancher 的數據。

重要提示 此方法直接使用 RKE 進行集群恢復,它適用于 RKE 創建并導入的集群或者 RKE 部署的 local 集群

恢復準備

提示

  • 需要在進行操作的主機上提前安裝 RKE、RKE 下載和安裝 kubectl。
  • 在開始還原之前,請確保已停止舊集群節點上的所有 kubernetes 服務。
  • 建議創建三個全新節點作為集群恢復的目標節點。有關節點需求,請參閱HA 安裝。您也可以使用現有節點,清除 Kubernetes 和 Rancher 配置,這將破壞這些節點上的數據請做好備份,點擊了解節點初始化。

準備恢復節點并復制最新快照

假設集群中一個或者多個 etcd 節點發生故障,或者整個集群數據丟失,則需要進行 etcd 集群恢復。

添加恢復節點并復制最新快照:

  • 恢復節點可以是全新的節點,或者是之前集群中經過初始化的某個節點;

  • 通過遠程終端登錄恢復節點;

  • 創建快照目錄:

    mkdir -p /opt/rke/etcd-snapshots/
  • 復制備份的最新快照到 /opt/rke/etcd-snapshots/ 目錄

    • 如果使用 rke 0.2 之前版本做的備份,需拷貝 pki.bundle.tar.gz 到 /opt/rke/etcd-snapshots/ 目錄下;
    • 如果使用 rke 0.2 以及以后版本做的備份,拷貝 xxx..rkestate 文件到 rke 配置文件相同目錄下;
  • 設置 RKE 配置文件

    創建原始 rancher-cluster.yml 文件的副本,比如:

    cp rancher-cluster.yml rancher-cluster-restore.yml

    對副本配置文件進行以下修改:

    • 注釋 service 中 etcd 的配置;

    • 刪除或注釋掉整個 addons:部分,Rancher 部署和設置配置已在 etcd 數據庫中,恢復不再需要;

    • 在 nodes:部分添加恢復節點,注釋掉其他節點;

      例: rancher-cluster-restore.yml
      nodes:
      - address: 52.15.238.179 # `添加恢復節點`
      user: ubuntu
      role: [ etcd, controlplane, worker ]
      # 注釋掉其他節點;
      # - address: 52.15.23.24
      # user: ubuntu
      # role: [ etcd, controlplane, worker ]
      # - address: 52.15.238.133
      # user: ubuntu
      # role: [ etcd, controlplane, worker ]
      # 注釋掉 `addons:`部分
      # addons: |-
      # ---
      # kind: Namespace
      # apiVersion: v1
      # metadata:
      # ---
      ...

      恢復 ETCD 數據

  • 打開 shell 終端,切換到 RKE 二進制文件所在的目錄,并且上一步修改的 rancher-cluster-restore.yml 文件也需要放在同一路徑下。

  • 根據系統類型,選擇運行以下命令還原 etcd 數據:

    # MacOS
    ./rke etcd snapshot-restore --name <snapshot>.db --config rancher-cluster-restore.yml
    # Linux
    ./rke etcd snapshot-restore --name <snapshot>.db --config rancher-cluster-restore.yml

    RKE 將在恢復節點上創建包含已還原數據的 ETCD 容器,此容器將保持運行狀態,但無法完成 etcd 初始化。

  • 恢復集群

    通過 RKE 在恢復節點節點上啟動集群。根據系統類型,選擇運行以下命令運行集群:

    # MacOS
    ./rke up --config ./rancher-cluster-restore.yml
    # Linux
    ./rke up --config ./rancher-cluster-restore.yml

    查看節點狀態

    RKE 運行完成后會創建 kubectl 的配置文件 kube_config_rancher-cluster-restore.yml,可通過這個配置文件查詢 K8S 集群節點狀態:

    kubectl --kubeconfig=kube_config_rancher-cluster-restore.yml get nodes

    NAME STATUS ROLES AGE VERSION
    52.15.238.179 Ready controlplane,etcd,worker 1m v1.10.5
    18.217.82.189 NotReady controlplane,etcd,worker 16d v1.10.5
    18.222.22.56 NotReady controlplane,etcd,worker 16d v1.10.5
    18.191.222.99 NotReady controlplane,etcd,worker 16d v1.10.5

    清理舊節點

    通過 kubectl 從集群中刪除舊節點

    kubectl --kubeconfig=kube_config_rancher-cluster-restore.yml delete node 18.217.82.189 18.222.22.56 18.191.222.99

    重啟 恢復節點

    恢復節點重啟后,檢查 Kubernetes Pods 的狀態

    kubectl --kubeconfig=kube_config_rancher-cluster-restore.yml get pods --all-namespaces

    NAMESPACE NAME READY STATUS RESTARTS AGE
    cattle-system cattle-cluster-agent-766585f6b-kj88m 0/1 Error 6 4m
    cattle-system cattle-node-agent-wvhqm 0/1 Error 8 8m
    cattle-system rancher-78947c8548-jzlsr 0/1 Running 1 4m
    ingress-nginx default-http-backend-797c5bc547-f5ztd 1/1 Running 1 4m
    ingress-nginx nginx-ingress-controller-ljvkf 1/1 Running 1 8m
    kube-system canal-4pf9v 3/3 Running 3 8m
    kube-system cert-manager-6b47fc5fc-jnrl5 1/1 Running 1 4m
    kube-system kube-dns-7588d5b5f5-kgskt 3/3 Running 3 4m
    kube-system kube-dns-autoscaler-5db9bbb766-s698d 1/1 Running 1 4m
    kube-system metrics-server-97bc649d5-6w7zc 1/1 Running 1 4m
    kube-system tiller-deploy-56c4cf647b-j4whh 1/1 Running 1 4m

    直到 Rancher 服務器啟動并且 DNS/負載均衡器指向新集群,cattle-cluster-agent 和 cattle-node-agentpods 將處于 Error 或者 CrashLoopBackOff 狀態。

    刪除殘留文件

    集群恢復有可能會導致一些組件對應的 SA 鑒權失效,通過查看 kubectl --kubeconfig=kube_config_rancher-cluster-restore.yml get pods --all-namespaces 可以看到很多 pod 一直無法正常運行,查看 pod 日志可以看到 Authentication failed 等信息。這個時候需要刪除一些舊的認證配置然后重新生成。

    kubeconfig=kube_config_cluster.yml

    # 重建 SA Token 密文
    kubectl --kubeconfig=$kubeconfig -n kube-system get secrets | \
    grep 'kubernetes.io/service-account-token'| awk '{print $1}' | \
    grep -E 'coredns|flannel|metrics-server|horizontal|canal|calico' | \
    xargs kubectl -n kube-system --kubeconfig=$kubeconfig delete --force --grace-period=0 secrets

    kubectl --kubeconfig=$kubeconfig -n cattle-system get secrets | \
    grep 'kubernetes.io/service-account-token'| awk '{print $1}' | grep -E 'rancher|cattle' | \
    xargs kubectl -n cattle-system --kubeconfig=$kubeconfig delete --force --grace-period=0 secrets

    kubectl --kubeconfig=$kubeconfig -n ingress-nginx get secrets | \
    grep 'kubernetes.io/service-account-token'| awk '{print $1}' | \
    grep -E 'nginx-ingress-serviceaccount' | \
    xargs kubectl -n ingress-nginx --kubeconfig=$kubeconfig delete --force --grace-period=0 secrets

    # 重建 kube-system 命名空間的 pod
    kubectl -n kube-system --kubeconfig=$kubeconfig get pod | awk '{print $1}' | \
    grep -E 'coredns|flannel|metrics-server|horizontal|canal|calico' | \
    xargs kubectl -n kube-system --kubeconfig=$kubeconfig delete --force --grace-period=0 pod

    # 重建 cattle-system 命名空間的 pod
    kubectl -n cattle-system --kubeconfig=$kubeconfig get pod | awk '{print $1}' | \
    grep -E 'rancher|cattle-node|cattle-cluster-agent' | \
    xargs kubectl -n cattle-system --kubeconfig=$kubeconfig delete --force --grace-period=0 pod

    # 重建 ingress-nginx 命名空間的 pod
    kubectl -n ingress-nginx --kubeconfig=$kubeconfig get pod | awk '{print $1}' | \
    grep -E 'nginx-ingress-controller' | \
    xargs kubectl -n ingress-nginx --kubeconfig=$kubeconfig delete --force --grace-period=0 pod

    添加其他節點

  • 編輯 RKE 配置文件 rancher-cluster-restore.yml,添加或者取消其他節點的注釋,addons 保持注釋狀態。

    例:rancher-cluster-restore.yml
    nodes:
    - address: 52.15.238.179 # `恢復節點`
    user: ubuntu
    role: [ etcd, controlplane, worker ]
    - address: 52.15.23.24
    user: ubuntu
    role: [ etcd, controlplane, worker ]
    - address: 52.15.238.133
    user: ubuntu
    role: [ etcd, controlplane, worker ]

    # addons: |-
    # ---
    # kind: Namespace
    ...
  • 更新集群

    根據系統類型,選擇運行以下命令更新集群:

    # MacOS
    ./rke up --config ./rancher-cluster-restore.yml
    # Linux
    ./rke up --config ./rancher-cluster-restore.yml
  • 總結

    以上是生活随笔為你收集整理的rancher rke 集群恢复的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。