对于生产环境,需以高可用的配置安装 Rancher,确保用户始终可以访问 Rancher Server。当安装在Kubernetes集群中时,Rancher将与集群的 etcd 集成,并利用Kubernetes 调度实现高可用。
为确保高可用,本文所部署的 Kubernetes 集群将专用于运行 Rancher ,Rancher 运行起来后,可再创建或导入集群以运行具体的工作负载。
一、推荐架构
- Rancher的DNS 应解析到 4层(TCP) 负载均衡上。
- 负载均衡应将端口 TCP/80 和 TCP/443 转发到 Kubernetes 集群中的所有3个节点。
- Ingress-controller 将 HTTP 重定向到HTTPS并终止端口 TCP/443 上的 SSL/TLS(SSL数字证书在这里部署)。
- Ingress-controller 将流量转发到 pod 的 TCP/80 端口。
下面是一张从官网拉过来的图片,更直观一些。
二、准备工作
1. 服务器准备
- 1台 Linux服务器,配置不用很高,用于四层负载均衡
- 3台 Linux服务器,Rancker-server-node 节点
- n台 Linux服务器,Rancker-agent-node 节点(n<=50)
节点服务器的硬件配置,可根据实际情况依据该表自行选择。
规模 | 集群 | 节点 | CPU | 内存 |
---|---|---|---|---|
小 | 最多5个 | 高达50 | 2 | 8 GB |
中 | 最多15个 | 最多200 | 4 | 16 GB |
大 | 高达50 | 最多500个 | 8 | 32 GB |
超大 | 最多100个 | 高达1000 | 32 | 128 GB |
更大规模 | 100+ | 1000+ | 联系 Rancher | 联系 Rancher |
2.工具安装
这些工具软件将在部署过程中用到,需提前安装好,并确保通过 $PATH 变量可以找到。
安装 kubectl
这是一个 kubernetes 命令行工具,安装参考 K8S 官网
这里要注意的是,官网的安装过程是到谷歌云平台下载,这里我门修改下载链接为 RANCHER 提供的镜像地址。
安装 RKE
RKE 全称 Rancher Kubernetes Engine,是一个用于构建 kubernets 集群的命令行工具。网络原因,我们切换到 Rancher 提供的镜像地址下载安装
安装 helm
helm 是Kubernetes的包管理器。Helm版本需高于 v2.12.1
。
三、创建节点和负载均衡
这些节点须在同一个网络区域或数据中心。
1. 节点准备
操作系统
所有节点安装 ubuntu 18.04(64-bit x86)
网络要求
注意参考 官网放行相关端口。本文 ip 清单(仅用于演示):
NODE | IP | 备注 |
---|---|---|
NODE-LB | 公网 168.168.168.1 / 内网 10.0.0.1 | 四层负载均衡 |
NODE-SERVER | 公网 168.168.168.6 / 内网 10.0.0.6 | local 集群 |
NODE-SERVER | 公网 168.168.168.7 / 内网 10.0.0.7 | local 集群 |
NODE-SERVER | 公网 168.168.168.8 / 内网 10.0.0.8 | local 集群 |
NODE-WORKER | 公网 168.168.168.16 / 内网 10.0.0.16 | 工作负载 |
NODE-WORKER | 公网 168.168.168.17 / 内网 10.0.0.17 | 工作负载 |
NODE-WORKER | 公网 168.168.168.18 / 内网 10.0.0.18 | 工作负载 |
docker-ce
并安装最新stable版 docker-ce:18.09.6
2. 配置四层负载均衡
RKE 将会在每个节点上配置一个 Ingress-controller pod,这个 pod 将绑定到该节点的 TCP/80 和 TCP/443 端口,作为 Rancher-server 的HTTPS流量入口点。
将负载均衡器配置为基本的第4层TCP转发器,这里采用 NGINX 作四层负载均衡。
*安装 Nginx
更新配置文件 /etc/nginx/nginx.conf
四、使用 RKE 安装 kubernetes
下面使用 RKE(Kubernetes Engine) 安装高可用的 Kubernetes。
1. NODE-SERVER 之间建立 ssh 信任
我们目前有三台服务器用作 local 集群,首先要确保我们主机能够通过 ssh 访问到另外两台主机并执行相关操作。比如执行 docker 命令,还记得前面我们加入 docker 用户组的用户吧。
2. 编写 rancher-cluster.yml 文件
这里需要注意,这个文件没有明确配置rsa文件名,默认会使用 $HOME/.ssh/id_rsa
建立连接。内容如下
3. 运行 RKE 构建 kubernetes 集群
执行成功会在当前目录生成一个文件 kube_config_rancher-cluster.yml
,将该文件复制到 .kube/kube_config_rancher-cluster.yml
。
或者
4. 测试集群
5. 保存好相关配置文件
当排除故障、升级群集时需要用到以下文件,请将其副本保存在一个安全的位置。
rancher-cluster.yml
:RKE集群配置文件。kube_config_rancher-cluster.yml
:群集的Kubeconfig文件,此文件包含完全访问群集的凭据。rancher-cluster.rkestate
:Kubernetes群集状态文件,此文件包含完全访问群集的凭据。
6. 初始化 Helm
一开始,我们安装了 Helm ,Helm 是 Kubernetes 首选的包管理工具。为了能够使用 Helm,需要在群集上安装服务器端组件 tiller。
Kubernetes APIServer 开启了 RBAC 访问控制,所以需要创建 tiller 使用的service account: tiller 并分配合适的角色给它。
7. 测试 tiller 安装是否成功
五、安装 Rancher
这里注意选择 stable 版本,首先添加 heml 源仓库。
1. 部署 Rancher 并配置 SSL 数字证书
2. 将通过 CA 机构签发的数字证书准备好,
3. 检查 rancher 是否成功可用
4. 访问 Rancher UI
浏览器打开 https://your.doamin
,为 admin
账户设置初始密码,并登入系统。提示设置server-url
,确保你的地址无误,确认即可。随后稍等皮片刻,待系统完成初始化。
如果出现local集群一直停留在等待状态,并提示 Waiting for server-url setting to be set
,可以尝试点击 全局->local->升级->添加一个成员角色(admin/ClusterOwner)->保存即可。
六、结语
至此,已完成 Rancher 2.2.2 的 HA 安装,后续再做一些安全加固,检查各项配置确保无安全风险,即可开始提供服务。随后会抽空再写一篇文章简单介绍微服务架构应用的部署。