如何将Rancher 2.1.x 从单节点安装迁移到高可用安装

Rancher提供了两种安装方法,即单节点安装和高可用安装。单节点安装可以让用户快速部署适用于短期开发或PoC的Rancher 2.x,而高可用部署则明显更适合Rancher的长期部署。
 

 
要点须知

  • 针对开源用户,对于从单个节点迁移到HA的工作,Rancher Labs不提供官方技术支持。
  • 以防在此过程中出现问题,您应该熟悉Rancher架构以及故障排除的方法。

前期准备

为了顺利将单个节点Rancher安装迁移到高可用性安装,您必须做如下准备:

  • 您需要运行Rancher的2.1.x版本以及RKE 的0.1.x版本
  • server-url参数必须是可以被更改为指向HA Rancher安装的DNS名称。如果您的server-url是IP地址,则必须先将server-url更改为DNS名称并更新用户集群的节点/集群代理,以便在迁移后允许HA集群的nginx ingress控制器能够正确路由Rancher流量。否则,您将无法访问所有工作负载集群。
  • 您需要配置专门用于在HA中运行Rancher的新实例。因为执行就地迁移非常危险,并且没有回滚策略。我们强烈建议您参考官方建议的架构。

(https://rancher.com/docs/rancher/v2.x/en/installation/ha/#recommended-architecture

  • 您需要熟悉单节点安装和高可用性安装之间的体系结构差异。
  • 不要更改单节点安装的CA。换言之,如果您已经在使用自定义证书了,那么请继续使用它。

迁移教程

从Rancher的单个节点迁移到高可用性安装的过程可以总结为以下几个步骤:

在Rancher单节点实例上

1、 备份Rancher单节点容器

2、 使用单节点容器中找到的证书组装pki.bundle.tar.gz

3、 运行临时utility容器以执行容器内运行的嵌入式etcd的etcd快照

4、 停止旧的Rancher单节点容器

5、 将server-url的DNS记录更改为指向新的HA负载均衡器

在您的工作站或者bastion host上

1、 将生成的pki.bundle.tar.gz和single-node-etcd-snapshot从Rancher单节点实例传输到工作目录中的工作站上(工作目录原先最好是空的)

2、 生成指向新HA节点的rke集群配置文件

3、 rke etcd snapshot-restore从单节点容器中检索快照

4、 rke up

5、 根据文档在HA中安装Rancher

开始之前

在整个教程中,您将输入一系列命令,以将您环境中的数据替换为占位符。这些占位符用斜角括号和所有大写字母(<EXAMPLE>)表示。

下表是找到本教程中使用的各种占位符。请您在开始之前记下此信息,这将有助于您后续的操作。


 
在Rancher单节点实例上

步骤1 备份Rancher单节点容器

首先,您应该备份Rancher单节点容器,以确保在迁移过程中遇到问题时可以回滚到此前运行的Rancher单节点。有关这方面的更多信息,请参阅:

https://rancher.com/docs/rancher/v2.x/en/backups/backups/single-node-backups/

步骤2 使用单节点容器中找到的证书组装pki.bundle.tar.gz

首先,键入docker exec,进入Rancher容器:

[[email protected] ~]# docker exec -it &lt;RANCHER_CONTAINER_NAME&gt; /bin/bash

进入容器后,将/ etc / kubernetes / ssl目录tar到pki.bundle.tar.gz:

[email protected]:/var/lib/rancher# tar -zcvf pki.bundle.tar.gz /etc/kubernetes/ssl
[email protected]:/var/lib/rancher# exit

将刚刚生成的pki.bundle.tar.gz转移到单节点实例上的当前工作目录:
 
[[email protected] ~]# docker cp &lt;RANCHER_CONTAINER_NAME&gt;:/var/lib/rancher/pki.bundle.tar.gz .

步骤3 运行临时utility容器以执行容器内运行的嵌入式etcd的etcd快照

docker运行一个名为etcd-utility的临时rke-tools容器,并附加了Rancher容器网络。此外,还挂载当前工作目录(将pki.bundle.tar.gz放入其中:

docker run --net=container:&lt;RANCHER_CONTAINER_NAME&gt; -it -v $(pwd):/cwd --name etcd-utility rancher/rke-tools:v0.1.20

在此容器中创建一个名为ssl的文件夹,然后将pki.bundle.tar.gz解压到:

bash-4.4# mkdir ssl && cd ssl
bash-4.4# cp /cwd/pki.bundle.tar.gz .
bash-4.4# tar -zxvf pki.bundle.tar.gz --strip-components 3

将单节点etcd快照到一个名为single-node-etcd-snapshot的文件中

bash-4.4# cd /
bash-4.4# ETCDCTL_API=3 etcdctl snapshot save --cacert=/ssl/kube-ca.pem --cert=/ssl/kube-etcd-127-0-0-1.pem --key=/ssl/kube-etcd-127-0-0-1-key.pem single-node-etcd-snapshot
bash-4.4# exit

将etcd快照从etcd-utility容器复制到当前工作目录
 
[[email protected] ~]# docker cp etcd-utility:/single-node-etcd-snapshot .

单节点实例上的当前工作目录应包含两个文件:pki.bundle.tar.gz和single-node-etcd-snapshot。这是将Rancher从单节点迁移到HA所需的两个组件。

步骤4 停止旧的Rancher单节点容器

[[email protected] ~]# docker stop &lt;RANCHER_CONTAINER_NAME&gt;

步骤5 将server-url的DNS记录更改为指向新的HA负载均衡器

为了正确迁移Rancher,您应该更新DNS基础结构中的DNS记录,以将Rancher server-url指向新的HA负载均衡器。

在您的工作站或者bastion host上

将生成的pki.bundle.tar.gz和single-node-etcd-snapshot从Rancher单节点实例传输到工作目录中的工作站上(工作目录最好原先就是空的)


Endeavor:single-node-to-ha-migration chriskim$ scp [email protected]<RANCHER_SINGLE_NODE_HOST>:/root/pki.bundle.tar.gz .
Endeavor:single-node-to-ha-migration chriskim$ scp [email protected]<RANCHER_SINGLE_NODE_HOST>:/root/single-node-etcd-snapshot .

生成指向您的新HA节点的rke集群配置文件

举个例子,rancher-cluster.yml文件如下所示:

nodes:
  - address: <RANCHER_HA_HOST_1>    user: centos    role: [controlplane,worker,etcd]services:
  etcd:
    snapshot: true
    creation: 6h
    retention: 24h

在所需的HA节点上创建/ opt / rke / etcd-snapshots目录,并将single-node-etcd-snapshot和pki.bundle.tar.gz文件复制到该目录:

Endeavor:single-node-to-ha-migration chriskim$ ssh [email protected]<RANCHER_HA_HOST_1> "mkdir -p /opt/rke/etcd-snapshots"Endeavor:single-node-to-ha-migration chriskim$ scp pki.bundle.tar.gz [email protected]<RANCHER_HA_HOST_1>:/opt/rke/etcd-snapshots
Endeavor:single-node-to-ha-migration chriskim$ scp single-node-etcd-snapshot [email protected]<RANCHER_HA_HOST_1>:/opt/rke/etcd-snapshots

使用RKE将 single-node- etcd-snapshot恢复到新的HA节点:
 
rke etcd snapshot-restore --name single-node-etcd-snapshot --config rancher-cluster.yml

完整命令行如下:

INFO[0000] Starting restoring snapshot on etcd hosts
INFO[0000] [dialer] Setup tunnel for host [ha-rancher01.fmt01.rancher.com]
INFO[0000] [hosts] Cleaning up host [ha-rancher01.fmt01.rancher.com]
INFO[0000] [hosts] Running cleaner container on host [ha-rancher01.fmt01.rancher.com]
INFO[0000] [kube-cleaner] Pulling image [rancher/rke-tools:v0.1.15] on host [ha-rancher01.fmt01.rancher.com]
INFO[0004] [kube-cleaner] Successfully pulled image [rancher/rke-tools:v0.1.15] on host [ha-rancher01.fmt01.rancher.com]
INFO[0004] [kube-cleaner] Successfully started [kube-cleaner] container on host [ha-rancher01.fmt01.rancher.com]
INFO[0004] [hosts] Removing cleaner container on host [ha-rancher01.fmt01.rancher.com]
INFO[0004] [hosts] Removing dead container logs on host [ha-rancher01.fmt01.rancher.com]
INFO[0005] [cleanup] Successfully started [rke-log-cleaner] container on host [ha-rancher01.fmt01.rancher.com]
INFO[0005] [remove/rke-log-cleaner] Successfully removed container on host [ha-rancher01.fmt01.rancher.com]
INFO[0005] [hosts] Successfully cleaned up host [ha-rancher01.fmt01.rancher.com]
INFO[0005] [etcd] Restoring [single-node-etcd-snapshot] snapshot on etcd host [ha-rancher01.fmt01.rancher.com]
INFO[0005] [etcd] Pulling image [rancher/coreos-etcd:v3.2.18] on host [ha-rancher01.fmt01.rancher.com]
INFO[0007] [etcd] Successfully pulled image [rancher/coreos-etcd:v3.2.18] on host [ha-rancher01.fmt01.rancher.com]
INFO[0007] [etcd] Successfully started [etcd-restore] container on host [ha-rancher01.fmt01.rancher.com]
INFO[0007] [etcd] Building up etcd plane..
INFO[0007] [etcd] Successfully started [etcd] container on host [ha-rancher01.fmt01.rancher.com]
INFO[0007] [etcd] Saving snapshot [etcd-rolling-snapshots] on host [ha-rancher01.fmt01.rancher.com]
INFO[0007] [etcd] Successfully started [etcd-rolling-snapshots] container on host [ha-rancher01.fmt01.rancher.com]
INFO[0012] [certificates] Successfully started [rke-bundle-cert] container on host [ha-rancher01.fmt01.rancher.com]
INFO[0013] [certificates] successfully saved certificate bundle [/opt/rke/etcd-snapshots//pki.bundle.tar.gz] on host [ha-rancher01.fmt01.rancher.com]
INFO[0013] [etcd] Successfully started [rke-log-linker] container on host [ha-rancher01.fmt01.rancher.com]
INFO[0013] [remove/rke-log-linker] Successfully removed container on host [ha-rancher01.fmt01.rancher.com]
INFO[0013] [etcd] Successfully started etcd plane..
INFO[0013] [certificates] Successfully started [rke-bundle-cert] container on host [ha-rancher01.fmt01.rancher.com]
INFO[0013] [certificates] successfully extracted certificate bundle on host [ha-rancher01.fmt01.rancher.com] to backup path [/etc/kubernetes/.tmp/]
INFO[0013] Finished restoring snapshot [single-node-etcd-snapshot] on all etcd hosts

此时,您可以运行rke up --config rancher-cluster.yml,并进行其他HA安装步骤。强烈建议您立即更改Rancher的DNS记录,以便在根据HA说明安装后,您的用户集群可以连接回Rancher。因此,您可能需要两次运行rke up --config rancher-cluster.yml以确保所有插件运行都成功。
 
在成功安装Kubernetes并将Rancher单节点备份恢复到您的实例后,您可以将其他HA实例添加到rancher-cluster.yml并运行rke up --config rancher-cluster.yml以将这些节点添加到您的集群。

此时,您可以使用此处的文档继续安装Rancher:

https://rancher.com/docs/rancher/v2.x/en/installation/ha/helm-init/

清 理

迁移成功之后就可以开始进行清理工作了。您可以从单个节点实例中移除Rancher容器,也可以直接完全删除实例。
 
[[email protected] ~]# docker rm &lt;RANCHER_CONTAINER_NAME&gt;

回 滚

如果迁移不成功,可以通过以下两个条件实现回滚:

  • 将server-url的DNS条目更改回单节点Rancher实例;
  • 在Rancher单节点实例上启动<RANCHER_CONTAINER_NAME>。

[[email protected] ~]# docker start &lt;RANCHER_CONTAINER_NAME&gt;

原文地址:http://blog.51cto.com/12462495/2347802

时间: 2024-08-27 08:44:33

如何将Rancher 2.1.x 从单节点安装迁移到高可用安装的相关文章

单主模型的IPVS高可用和nginx+keepalived的双主高可用模型

一.IPVS的单主高可用 (1)配置RS,我们使用两台服务器作为RS服务器配置过程我们可以使用脚本来配置,这样当我们完成试验后便于卸载,脚本如下: #!/bin/bash # vip=192.168.125.198 #你用的虚拟路由的IP地址 case $1 in start) echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore echo 1 > /p

rancher server 单节点部署/K8S高可用部署

环境说明: # 操作系统:centos7 # docker版本:19.03.5 # rancher版本: latest # rancher server 节点IP :192.168.2.175 # rancher agent节点IP: 192.168.2.175,192.168.2.176,192.168.2.177,192.168.2.185,192.168.2.187 # K8S master 节点IP:192.168.2.176,192.168.2.177,192.168.2.185 #

RDO单节点部署openstack (Havana)

OpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作.OpenStack支持几乎所有类型的云环境,项目目标是提供实施简单.可大规模扩展.丰富.标准统一的云计算管理平台.OpenStack通过各种互补的服务提供了基础设施即服务(IaaS)的解决方案,每个服务提供API以进行集成. OpenStack 是一个旨在为公共及私有云的建设与管理提供软件的开源项目.它的社区拥有超过130家企业及1350位开发者,这些机构与个人都将OpenStack作为基础设施即服务(简称I

Ubuntu 12.04 Openstack Essex 安装(单节点)

这是陈沙克一篇非常好的博文,当时在进行openstack排错的时候,多亏了这篇文章里面有些内容 帮我找到了问题的所在: 原文:http://www.chenshake.com/ubuntu-12-04-openstack-essex-installation-single-node/#Nova-volume =============以下是转载内容========================== 亲自测试,成功! 测试环境: esx5.0 虚拟机环境   修改配置虚拟机配置文件 在esxi

zookeeper的单节点搭建和分布式搭建

zookeeper的单节点搭建 1.把这个zookeeper-3.4.5.tar.gz文件上传到服务器上的/usr/local目录下 2.解压:tar -zxvf zookeeper-3.4.5.tar.gz 3.重命名:mv zookeeper-3.4.5 zookeeper 4.cd zookeeper/conf 5.修改配置文件的名称:mv zoo_sample.cfg zoo.cfg 6.cd .. 7.启动zookeeper:bin/zkServer.sh start 8.验证:jps

【Zookeeper】Zookeeper集群单节点提供服务

以下只在特殊情况下使用,不要用在生产环境. 一.问题背景 公司的产品使用Zookeeper做为集群支持,但是客户在验收的时候提出了一个很为难人的要求,那就是3台集群服务,停止2台以后,还要求我们的应用能提供服务,这就有点难为人了. 因为用过Zookeeper的人都知道,Zookeeper的leader的选举需要大多数同意,也就是说三台机器的Zookeeper集群那么选举leader就需要两台,如果只剩下一台Zookeeper那么是无法完成leader选举的,也就是说Zookeeper将不能对外提

kafka的单节点搭建和集群搭建

首先,kafka的运行,需要zookeeper在后台运行,虽然kafka中已经内置了zookeeper,但是我们还是用自己搭建的分布式zookeeper kafka的单节点搭建  (这里用了自带的zookeeper) 启动服务 ?1.配置和启动zookeeper服务 使用kafka内置zk ?配置zk文件:/opt/kafka/config/zookeeper.properties ?启用zk服务: ?/opt/kafka/bin/zookeeper-server-start.sh /opt/k

搭建JEESZ分布式架构10-Redis分布式缓存安装(单节点)

Redis分布式缓存安装(单节点) Redis官网:http://redis.io独立缓存服务器:IP:xxx.xxx.xxx.xxx安装环境:CentOS 6.6Redis 版本:redis-3.0 (因为 Redis3.0 在集群和性能提升方面的特性,rc 版为正式版的候选版,请在安装时去官网选用最新版)用户:root安装目录:/usr/local/redis 下面我们针对于Redis安装做下详细的记录:编译和安装所需的包:# yum install gcc tcl 提醒:下载 3.0 版

ActiveMQ的单节点和集群部署

平安寿险消息队列用的是ActiveMQ. 单节点部署: 下载解压后,直接cd到bin目录,用activemq start命令就可启动activemq服务端了. ActiveMQ默认采用61616端口提供JMS服务,使用8161端口提供管理控制台服务,执行以下命令以便检验是否已经成功启动ActiveMQ服务: ps -aux | grep activemq netstat -anp | grep 61616 此外,还可直接访问管理页面:http://ip:8161/admin/ ,用户名和密码可以