Rancher部署k8s

Rancher是一个开源的企业级容器管理平台。通过Rancher,企业再也不必自己使用一系列的开源软件去从头搭建容器服务平台。Rancher提供了在生产环境中使用的管理Docker和Kubernetes的全栈化容器部署与管理平台。本文记录Rancher部署k8s的过程。

1. 基本环境

本文基于Ubuntu 16.04部署 Rancher,首先需要安装好 Docker。

刚开始部署 Rancher 时,因为 Ubuntu 20.04 已经更新很久了都没有使用过,所以就尝试了用 Ubuntu 20.04来部署。但是在部署过程中一直不成功,仔细检查了一下才发现 Docker 针对 Ubuntu 20.04 只提供了 Docker 19.0.x 版本,官方下载链接中不支持其他的低版本。最后只能选择 Ubuntu 16.04 来部署(至于如何在 Ubuntu 20.04 上安装更低版本的后面再尝试了)。

支持的Docker版本:

  • 17.03.x
  • 18.06.x
  • 18.09.x

安装 Docker 首先设置存储库:

  1. 更新apt软件包索引并安装软件包以允许apt通过HTTPS使用存储库:

    1
    2
    3
    4
    5
    6
    7
    8
    $ sudo apt-get update

    $ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
  2. 添加Docker的官方GPG密钥:

    1
    $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  3. 使用以下命令来设置稳定的存储库。

    1
    2
    3
    4
    $ sudo add-apt-repository \
    "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
    $(lsb_release -cs) \
    stable"

安装DOCKER引擎:

  1. 要安装特定版本的 Docker Engine,请在存储库中列出可用版本,然后选择并安装:

    1
    2
    3
    4
    5
    6
    $ apt-cache madison docker-ce

    docker-ce | 5:18.09.1~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
    docker-ce | 5:18.09.0~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
    docker-ce | 18.06.1~ce~3-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
    docker-ce | 18.06.0~ce~3-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
  2. 更新apt程序包索引,并安装指定版本的Docker Engine和容器,或转到下一步以安装特定版本:

    1
    2
    $ sudo apt-get update
    $ sudo apt-get install docker-ce=5:18.09.1~3-0~ubuntu-xenial docker-ce-cli=5:18.09.1~3-0~ubuntu-xenial containerd.io
  3. 将当前用户加入 docker 用户组,下次登陆后执行 docker 命令可不加 sudo:

    1
    $ sudo usermod -aG docker $USER

2. 安装Rancher

执行以下命令安装 Rancher server:

1
$ docker run -d --restart=unless-stopped -v <主机路径>:/var/lib/rancher/ -p 80:80 -p 443:443 rancher/rancher:stable

3. 登录Rancher,并创建集群

稍等片刻之后,可以使用主机的 IP 在浏览器中登录 Rancher UI,并创建集群。参考链接:登录Rancher


4. 复制向集群添加主机

接着在前端界面的主机角色选项中勾选 etcd 以及 Control,然后复制添加主机的命令到对应的主机中执行:

1
$ sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.4.5 --server https://192.168.184.129 --token hhkvrndn7lktsmz6fxnjw9jltppq5w6ttt466rbmzsr7pwxktjq6hr --ca-checksum fc92e9aa8d072c2e2731a34d9242bb71e8abcee3b059c6c6bcddd685acbd16b1 --etcd --controlplane --worker

这个过程中需要下载较多 docker 容器镜像,需要等待较长时间。


5. 部署工作负载

这个也可以参考链接:部署工作负载,这里就不截图展示了。


6. 删除 Rancher

可使用一下脚本删除:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/bin/bash

docker rm -f $(sudo docker ps -aq);
docker volume rm $(sudo docker volume ls -q);

rm -rf /etc/ceph \
/etc/cni \
/etc/kubernetes \
/opt/cni \
/opt/rke \
/run/secrets/kubernetes.io \
/run/calico \
/run/flannel \
/var/lib/calico \
/var/lib/etcd \
/var/lib/cni \
/var/lib/kubelet \
/var/lib/rancher/rke/log \
/var/log/containers \
/var/log/pods \
/var/run/calico

for mount in $(mount | grep tmpfs | grep '/var/lib/kubelet' | awk '{ print $3 }') /var/lib/kubelet /var/lib/rancher; do umount $mount; done

rm -f /var/lib/containerd/io.containerd.metadata.v1.bolt/meta.db
sudo systemctl restart containerd
sudo systemctl restart docker

IPTABLES="/sbin/iptables"
cat /proc/net/ip_tables_names | while read table; do
$IPTABLES -t $table -L -n | while read c chain rest; do
if test "X$c" = "XChain" ; then
$IPTABLES -t $table -F $chain
fi
done
$IPTABLES -t $table -X
done

不仅要删除相关的容器,还需要删除对应的 docker volume,以及其他的一些配置,最后重启主机,之后才能重新运行新的 Rancher 平台。


6. 总结

在我多次尝试之后,发现 Docker 是关键,包括 Docker 的版本以及对应的镜像源,都对 Rancher 的成功部署有重要的影响。

在基本的 Docker 环境没有问题之后,用过 Rancher 来管理 Kubernetes 真的是太简单了。