简介
大多数人在生产环境中运行Docker,是把它作为构建和移动部署配置的一种方式。然而,他们的部署模型要么非常整体化,要么有几个大的服务模块组成。使用真实的容器化微服务最大的障碍在于,很多人不太清楚如何管理和协调容器大规模负载。作为google 长期经营的Borg项目的开源的继承者,Kubernetes有将近10年的运行大规模负载的历史了。虽然也存在一些缺点,但Kubernetes是现今最成熟的容器编排系统之一。
Kubernetes是什么
谈论Kubernetes发行版之前,不妨简要介绍一下Kubernetes。Kubernetes是一种用于容器编排的开源平台。Kubernetes使使用容器部署应用程序所需的许多任务实现自动化,包括启动和停止每个容器,以及确定集群中的哪些服务器应托管哪些容器。
Kubernetes只是市面上的几种容器编排工具之一,其他受欢迎的选择包括Docker Swarm和Mesos Marathon。不过Kubernetes击败了众多对手,连Docker公司官方都承认Docker Swarm不如Kubernetes,在容器编排领域已经成为了业界的事实标准。
Kubernetes发行版是什么
作为一个开源项目,Kubernetes将源代码放在GitHub上,供人免费获取。谁都可以使用该源代码,下载和编译Kubernetes,并安装到自己选择的基础架构上。但大多数人绝不会想要下载和编译源代码安装Kubernetes,原因如下:
- 费时费力:有大量的Kubernetes源代码,从头开始构建需要耗费大量的时间和精力。另外,只要你想更新安装的系统,就必须重新构建一切。
多个组件:Kubernetes不是单个应用程序,而是一套不同的应用程序和工具。如果你从- 源代码安装,就必须在你用于构建Kubernetes集群的所有服务器上分别安装这每一个组件。 - 复杂的配置:由于Kubernetes没有安装向导或自动配置脚本,因此你还得手动配置Kubernetes的各个组件。
大多数人转向Kubernetes发行版以满足容器编排需求。Kubernetes发行版是一个软件包,提供了Kubernetes的预构建版本。大多数Kubernetes发行版还提供安装工具,以简化安装过程。一些还集成了另外的软件,帮助处理监控和安全之类的任务。
从这个意义上讲,Kubernetes发行版好比Linux发行版。大多数人想要在PC或服务器上安装Linux时,他们使用提供与其他各种软件包集成的预构建Linux内核的发行版。几乎没人从头开始去下载Linux源代码。
主要的Kubernetes发行版有哪些
从技术上讲,任何包含Kubernetes预构建版本的软件包或平台都可以算作Kubernetes发行版。就像任何人可以构建自己的Linux发行版一样,任何人可以创建Kubernetes发行版。
很多云厂商都提供了公有云版本的Kubernetes发行版,直接在线购买就可以使用,但我们需要的是一个可以自主部署管理的Kubernetes集群,因此比较有代表性的就是下面两个:
OpenShift
OpenShift是一个容器化平台,包括Kubernetes以及运行、部署和管理容器所需的其他各种工具。从某种意义上来说,它是一种相对不灵活的Kubernetes发行版,因为它在用于构建完整容器化堆栈的工具和平台方面并没有给你太多的选择。另一方面,OpenShift本身随带你所需要的几乎一切工具。它将相当于提供一应俱全的Kubernetes。 OpenShift由Red Hat开发,可以在本地和云中运行。有付费版本和开源版本,不过在Kubernetes版本选择上会比较保守,通常使用的Kubernetes版本会落后于官方版本。
Rancher
Rancher是一套容器管理平台,它可以帮助组织在生产环境中轻松快捷的部署和管理容器,可以轻松地管理各种环境的Kubernetes,满足IT需求并为DevOps团队提供支持。
Rancher为DevOps工程师提供了一个直观的用户界面来管理他们的服务容器,用户不需要深入了解Kubernetes概念就可以开始使用Rancher。 Rancher包含应用商店,支持一键式部署Helm和Compose模板。Rancher通过各种云、本地生态系统产品认证,其中包括安全工具,监控系统,容器仓库以及存储和网络驱动程序,并且可以免费使用,同时也可以付费获取技术支持。
选择哪个发行版
综合评估下来,我们选择了Rancher,有几个原因:
- 完全免费使用,无社区版收费版的区别
- 跟随Kubernetes官方主流新版本发布
- 操作界面简单,易于使用
- 配套部署工具方便快捷
- 活跃的社区支持
- 支持管理多个集群
- 自带集群健康、资源使用监控
:::info 提示
Rancher Server还支持导入已有的Kubernetes集群,可以实现一套平台同时管理公有云,私有云上的Kubernetes集群。
:::
部署
部署一个Kubernetes集群是一件令人很头疼的问题,因为Kubernetes是一套很复杂的系统,虽然只有寥寥几个组件,但是要想成功部署起来投入使用,却并非那么容易,很多人想要使用Kubernetes,都是倒在了部署上,仅仅是部署调试就难倒很多初学者了。因此社区涌现出了很多安装部署脚本或者工具,但是还是可能出现各种问题,虽然Kubernetes官方也提供了一个很方便的工具kubeadm,但是由于国内网络的原因,也是需要经过很多曲折的办法才能使用。
Rancher提供了一个方便的工具RKE用于快速创建一个Kubernetes集群,使用这个工具可以在十几分钟内在物理机,虚拟机上快速拉起一套可用于生产级别的集群。
前期准备
硬件
部署一个基本集群至少需要3个节点主机,可以是 包含1个master节点,2个worker节点。另外需要一个单独的主机用于操作RKE工具,可以是常用的Linux发行版,也可以是macOS 。
Role | CPU | Memory | Disk | Network |
---|---|---|---|---|
Master | 4 Core | 4 G | 50 G | 10.116.18.35/24 |
Worker | 8 Core | 8 G | 50 G | 10.116.18.36/24 |
Worker | 8 Core | 8 G | 50 G | 10.116.18.37/24 |
软件
- CentOS/RHEL 7.5+
- Docker 18+
其他设置
- 关闭防火墙
- 关闭selinux
- 配置yum源,EPEL源更新系统
部署操作
创建免密登录
为了快速操作,使用了Ansible工具进行批量操作, 由于RKE工具和Ansible都是通过ssh方式进行操作,所以需要事先创建免密登录。
|
创建playbook任务
生成playbook目录结构
|
编辑roles/rancher/tasks/main.yml
|
上面脚本内容中需要的2个配置文件放在roles/rancher/files
里面,内容如下:
k8s.conf
|
ipvs.conf
|
创建执行清单prepare.yml
|
执行playbook
执行playbook,先准备好目标主机的其他配置.
|
获取RKE
|
创建RKE配置文件
创建配置有两种方式, 一个是交互式,一个是生成空配置.
|
完整的配置文件cluster.yml
示例:
|
开始部署
部署只需要一条命令:
|