Rancher2-HA升级,以及集群备份,集群恢复 集群方案 架构软件


# HA升级

  etcd快照功能仅在RKE v0.1.7及更高版本中可用

  保证所有ETCD节点具有相同的快照版本

  在主机或者远程访问的笔记本上安装kubectl命令行工具

  通过RKE创建kubernetes集群,需要预先设置rancher-cluster.yml配置文件,通过这个配置文件安装kubernetes集群,这个文件需要与RKE二进制文件存放同一目录。

  确认系统存在以下路径:~/.kube/,如果没有,请自行创建。

  RKE安装kubernetes集群后,会在RKE二进制文件相同目录下生成kube_config_rancher-cluster.yml文件,复制该配置文件到~/.kube/目录.


1.在安装了kubectl命令行工具的电脑上打开终端


2.切换路径到RKE二进制文件所在目录,确认rancher-cluster.yml在同一路径下


3.创建ETCD快照备份

替换<SNAPSHOT.db>为你喜欢的快照名称(例如upgrade.db)

# MacOS
./rke_darwin-amd64 etcd snapshot-save --name <SNAPSHOT.db> --config rancher-cluster.yml
# Linux
./rke_linux-amd64 etcd snapshot-save --name <SNAPSHOT.db> --config rancher-cluster.yml

RKE获取每个etcd节点上的运行快照,保存快照文件当前到etcd节点的/opt/rke/etcd-snapshots目录下.


4.Rancher 升级:  https://hub.docker.com/r/rancher/rancher/

kubectl --kubeconfig=kube_config_rancher-cluster.yml set image deployment/cattle cattle-server=rancher/rancher:<VERSION_TAG> -n cattle-system

替换<VERSION_TAG>为想要升级到的版本,可用的镜像版本可查阅https://hub.docker.com/r/rancher/rancher/

请勿使用后缀为rc或者为master的镜像,具体详情请查看版本标签。


5.登录Rancher UI,通过检查浏览器窗口左下角显示的版本,确认是否升级成功。


# 集群备份

  KE v0.1.7以及更高版本才支持etcd快照功能

  需要使用到安装Rancher的RKE配置文件rancher-cluster.yml,将此文件需放在与RKE二进制文件同级目录中

  在运行etcd snapshot-restore命令之前,必须保证每个etcd节点拥有最新相同版本的快照文件,快照需要存放在每个ETCD节点的/opt/rke/etcd-snapshots/目录下


A.创建ETCD数据快照

方案 A: 定时自动创建快照

在Rancher HA安装后,我们建议配置RKE以定时(默认5分钟)自动创建快照,以便始终拥有可用的安全恢复点。

方案 B: 手动创建快照

我们建议在升级或恢复其他快照等事件之前创建一次性快照。


定时自动创建快照服务是RKE附带的服务,默认没有开启。可以通过在rancher-cluster.yml中添加配置来启用etcd-snapshot(定时自动创建快照)服务。


方案A.启用定时自动创建快照:

i.编辑rancher-cluster.yml配置文件;

ii.在rancher-cluster.yml配置文件中添加以下代码:

services:
  etcd:
    snapshot: true  # 是否启用快照功能,默认false;
    creation: 6h0s  # 快照创建间隔时间,不加此参数,默认5分钟;
    retention: 24h  # 快照有效期,此时间后快照将被删除;

iii.打开Terminal并切换路径到RKE二进制文件所在目录.确保rancher-cluster.yml也在这个路径下;

运行以下命令:

# MacOS
./rke_darwin-amd64 up --config rancher-cluster.yml
# Linux
./rke_linux-amd64 up --config rancher-cluster.yml

结果:

RKE会在每个etcd节点上定时获取快照,并将快照将保存到每个etcd节点的:/opt/rke/etcd-snapshots/目录下


方案B:手动创建快照

i.打开Terminal并切换路径到RKE二进制文件所在目录.确保rancher-cluster.yml也在该路径下

注意:替换<SNAPSHOT.db>为你喜欢的名称,例如:

# MacOS
./rke_darwin-amd64 etcd snapshot-save --name <SNAPSHOT.db> --config rancher-cluster.yml
# Linux
./rke_linux-amd64 etcd snapshot-save --name <SNAPSHOT.db> --config rancher-cluster.yml


B.备份快照到安全位置

在创建快照后,应该把它保存到安全的地方,以便在集群遇到灾难情况时快照不受影响,这个位置应该是持久的。


# HA集群恢复

  需要在进行操作的主机上提前安装RKE(RKE下载)和kubectl

  在开始还原之前,请确保已停止旧群集节点上的所有kubernetes服务。


1.添加新ETCD节点并复制最新快照

假设集群中一个或者多个etcd节点发生故障,或者整个集群数据丢失,则需要进行etcd集群恢复。

a.添加你选择的新ETCD节点,可以是物理主机、本地虚拟机、云主机等;

b.通过远程终端登录新主机;

c.创建快照目录: mkdir -p /opt/rke/etcd-snapshots/

d.复制备份的最新快照到新etcd节点的/opt/rke/etcd-snapshots/目录下:

    cp $PWD/<SNAPSHOT.db> /opt/rke/etcd-snapshots/<SNAPSHOT.db>


2.配置RKE配置文件

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

vi  rancher-cluster-restore.yml  # 删除或注释掉整个addons:部分; 将nodes:部分更改为新etcd节点,注释掉其他节点。

nodes:
- address: 52.15.238.179     # 新etcd节点
  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
#   apiVersion: v1
#   metadata:
#     name: cattle-system
#   ---
...


3.恢复ETCD数据

i.打开shell终端,切换到RKE二进制文件所在的目录,并且上一步修改的rancher-cluster-restore.yml文件也需要放在同一路径下。

ii.根据系统类型,选择运行以下命令还原etcd数据:

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

RKE将在新ETCD节点上创建包含已还原数据的ETCD容器。此容器将保持运行状态,但无法完成etcd初始化并。


4.恢复集群

使用RKE并在新ETCD节点单节点上启动集群。根据系统类型,选择运行以下命令更新集群:

# MacOS
./rke_darwin-amd64 up --config ./rancher-cluster-restore.yml
# Linux
./rke_linux-amd64 up --config ./rancher-cluster-restore.yml

a.测试群集

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

b.清理旧节点

通过kubectl从群集中删除旧节点

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

c.重新启动新ETCD节点

d.新ETCD节点运行起来后,检查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状态。

e.添加其他节点

编辑RKE配置文件rancher-cluster-restore.yml,添加或者取消其他节点的注释。

vi  rancher-cluster-restore.yml

nodes:
- address: 52.15.238.179     # 新ETCD节点
  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
...

f.更新集群

据系统类型,选择运行以下命令更新集群:

# MacOS
./rke_darwin-amd64 up --config ./rancher-cluster-restore.yml
# Linux
./rke_linux-amd64 up --config ./rancher-cluster-restore.yml


签名:这个人很懒,什么也没有留下!
最新回复 (0)
返回