Rancher 2.2.2

Stella981
• 阅读 933

对于生产环境,需以高可用的配置安装 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 端口。

下面是一张从官网拉过来的图片,更直观一些。

Rancher 2.2.2

二、准备工作

1. 服务器准备

  1. 1台 Linux服务器,配置不用很高,用于四层负载均衡
  2. 3台 Linux服务器,Rancker-server-node 节点
  3. 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 安装,后续再做一些安全加固,检查各项配置确保无安全风险,即可开始提供服务。随后会抽空再写一篇文章简单介绍微服务架构应用的部署。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Rancher 2.4.3
一、概述对于生产环境,需以高可用的配置安装Rancher,确保用户始终可以访问RancherServer。当安装在Kubernetes集群中时,Rancher将与集群的etcd集成,并利用Kubernetes调度实现高可用。为确保高可用,本文所部署的Kubernetes集群将专用于运行Rancher,Rancher运行
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这