使用Rancher快速搭建Kubernetes集群
最早在推动公司应用容器化过程一直使用内部的容器云平台,由于内部的容器云平台做了一层封装,对 Kubernetes 一些原生的功能开放性不足。近期准备调研 Service Mesh,需要一套干净的 Kubernetes 集群作为 POC 环境做测试,通过查找一些资料,最终选择了用 Rancher 来搭建 Kubernetes,花了半天就搭建完成了。现在搭建一套 Kubernetes 集群来测试学习还是挺方便的,这里做些记录分享,尽管这类型的内容比较容易过时,还是希望对读者有些帮助。
预备知识
Kubernetes组件
通过官方文档 Kubernetes Components 可以了解到1个 Kubernetes 集群通常用多个节点组成,这些节点主要分为两类:
- Control Plane 节点:Control Plane 节点包含许多组件,主要负责整个集群的决策,管理所有 Worker 节点,响应处理集群的事件等等。为了高可用一般都会部署多个 Control Plane 节点,并且相关的组件一般部署在同一台服务器上。
- Worker 节点:主要包含 kubelet 组件和 kube-proxy 组件,一般会有多个节点,kubelet 与 Control Plane 的 API server 交互,负责处理 Worker Node 的所有 Pod,而 kube-proxy 则负责该节点的网络规则,流量转发等。
以下是官方的架构概览图,可以通过官方文档详细了解。
Rancher架构
Rancher 是在 Kubernetes 之上更加抽象的一个平台,它让企业更加方便地构建 Kubernetes 集群,用户可以通过 Rancher Kubernetes Engine (RKE) 以图形化的方式快速搭建多个 Kubernetes 集群,还可以结合云厂商的来创建集群等等。用户搭建一个 Rancher Server 就可以标准化地管理多个 Kubernetes 集群,这很大程度上节省了大量的运维成本。
Rancher Server 的部署方式可以分为两种:
- 集群部署:在生产环境推荐这种使用高可用集群方式部署,Rancher 管理着多个 Kubernetes 集群的,自身的可用性需要做好保障。使用集群部署的方式一般是在一个已有的 Kubernetes 集群上部署,建议这个 Kubernetes 集群专门用来部署 Rancher。
- 单节点部署:在开发测试环境资源有限的情况下,可以在一台安装有 Docker 环境的服务器上,快速搭建单节点的 Rancher,再通过 Rancher 管理多台服务器来创建 Kubernetes 集群。
先搭建 Rancher 后再搭建 Kubernetes,还是先搭建 Kubernetes 再搭建 Rancher?这个问题有点像“鸡生蛋还是蛋生鸡”,一开始我也有点困惑。但是如果在生产环境操作,就强烈建议先有一套专门的小 Kubernetes 集群来部署 Rancher。
以下是官方Rancher的架构图,可以结合官方文档熟悉了解。Rancher Server Architecture
部署步骤
由于这里搭建 Kubernetes 集群主要是为了开发测试使用,固采用简单的单节点 Docker 的方式来部署 Rancher,Kubernetes 集群则采用3个节点集群的高可用方式来部署。
准备3台虚拟机
- 10.0.0.1:计划安装单机版 Rancher,并作为 Kubernetes 集群的 Control Plane 节点
- 10.0.0.2:作为 Kubernetes 集群的 Worker 节点
- 10.0.0.3:作为 Kubernetes 集群的 Worker 节点
相关说明
- 以上3台机器均为8核16G,使用 CentOS 7 操作系统
- 注意必须禁用交换内存,注释
/etc/fstab
含 swap 关键字的行后重启机器即可 - 注意3台机器的 hostname 需要设置成不一样,修改
/etc/hostname
即可 - 更多前期准备可以参考 Installing kubeadm#Before you begin。
安装Docker
目前使用 Docker 作为容器运行时,分别在3台机器上安装 Docker,安装过程非常简单,自行参照官方文档进行安装。Install Docker Engine
安装完毕后启动 Docker 并设置默认开机启动 Docker,执行以下命令:
1 | systemctl start docker |
安装Rancher
参照官网文档 Installing Rancher on a Single Node Using Docker 的第一种方式,当然最好指定下版本号,如我使用 rancher/rancher:v2.5.12
。
1 | docker run -d --name rancher --restart=unless-stopped \ |
可以通过 docker logs -f rancher
查看标准输出日志,等待一段时间初始化完毕后就可以打开浏览器访问网页 http://10.0.0.1 。设置下admin密码后就可以开始使用 Rancher 管理端了。
创建 Kubertetes 集群
Rancher 创建 Kubernetes 集群也非常多傻瓜式,这里不重复细节,依据官方文档设置来即可。Rancher Manual Quick Start
勾选Kubernetes 的节点角色后 Rancher 会生成一些命令,直接拷贝命令到对应的机器运行。在这里提供下我节点角色的分配以供参考:
- 10.0.0.1: etcd, Control Plane, Worker
- 10.0.0.2: Worker
- 10.0.0.3: Worker
等待各个节点的初始化完成注册后,在 Rancher 就可以看到集群已经就绪可用的状态。
安装 Rancher CLI,kubectl
最后为了方便本地通过终端工具操作 Rancher 及 Kubernetes 集群,建议安装相应的CLI工具,以下相关文档 CLI with Rancher 自行安装。安装完毕后接可以愉快的玩耍了。
1 | ➜ ~ rancher nodes |
总结
未来是 Kubernetes 的天下,会有很多云原生相关技术,有一套开发测试环境能快速了解一些技术原理及相关机制,利用好技术红利能帮助企业大大地提高效率及降低成本。也许这内容容易过时,毕竟技术更新迭代太快了,但是这是了解云原生技术的第一步,现在搭建环境已经不是什么难事,唯一要做的就是仔细阅读官方文档,最好不要从其他人的博客文章来获取搭建步骤,当然也包括本文。这里仅作为搭建过程的参考,希望你能通过官方文档自己完成集群的搭建。
References
- Kubernetes Components, https://kubernetes.io/docs/concepts/overview/components/
- Rancher Architecture, https://rancher.com/docs/rancher/v2.0-v2.4/en/overview/architecture/
- Install Docker Engine, https://docs.docker.com/engine/install/
- Installing Rancher on a Single Node Using Docker, https://rancher.com/docs/rancher/v2.6/en/installation/other-installation-methods/single-node-docker/
- Bootstrapping clusters with kubeadm, https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/