Kubernetes-使用rancher搭建Kubernetes高可用集群
引言
之前我写了一篇文章介绍了离线部署Kubernetes 1.9.0,当时搭建的是1+3模式,此种模式不适合用于生产,为了防止由于master节点宕机造成集群不能正常工作的问题,推荐搭建Kubernetes高可用集群,本篇文章将介绍如何使用rancher搭建Kubernetes高可用集群。
准备工作
- 集群机器
首先准备搭建集群环境的机器,笔者准备的集群机器如下:
Hostname | IP | Memory | OS | Role |
---|---|---|---|---|
k8smaster1 | 192.168.246.128 | 6G | CentOS 7.5 | Kubernetes master 节点 |
k8smaster2 | 192.168.246.129 | 6G | CentOS 7.5 | Kubernetes master 节点 |
k8smaster3 | 192.168.246.130 | 6G | CentOS 7.5 | Kubernetes master 节点 |
k8sworker1 | 192.168.246.131 | 12G | CentOS 7.5 | Kubernetes node 节点 |
k8sworker2 | 192.168.246.132 | 12G | CentOS 7.5 | Kubernetes node 节点 |
k8sworker3 | 192.168.246.133 | 12G | CentOS 7.5 | Kubernetes node 节点 |
k8sworker4 | 192.168.246.134 | 12G | CentOS 7.5 | Kubernetes node 节点 |
k8sworker5 | 192.168.246.135 | 12G | CentOS 7.5 | Kubernetes node 节点 |
- 软件版本
2.1 rancher
截止写这篇文章时,rancher的最新版本是v2.0.8,所以我使用的v2.0.8的稳定版,这里还要关注一下v2.0.8版本对软硬件的要求,在GitHub上可以看到对于环境的最低要求:
- 操作系统
Ubuntu 16.04 (64-bit)
Red Hat Enterprise Linux 7.5 (64-bit)
RancherOS 1.3 (64-bit) - 硬件
至少4 GB内存 - 软件
Docker版本:v1.12.6, 1.13.1, 17.03.2
2.2 Kubernetes
Kubernetes的版本需要根据rancher来定,在rancher v2.0.8 release notes中说明了推荐使用1.11.2版本的Kubernetes;
2.3 Docker
Docker的版本需要根据Kubernetes来定,在Kubernetes 1.11 change log中描述如下,和1.10版本一样,经过验证的Docker版本有1.11.2 至 1.13.1 和 17.03.x;
- 环境配置
3.1 修改每台机器的【/etc/hosts】文件,增加以下解析:
192.168.246.128 k8smaster1 192.168.246.129 k8smaster2 192.168.246.130 k8smaster3 192.168.246.131 k8sworker1 192.168.246.132 k8sworker2 192.168.246.133 k8sworker3 192.168.246.134 k8sworker4 192.168.246.135 k8sworker5
3.2 关闭所有机器的安全加强系统SELinux,使容器能够访问到宿主机文件系统
vim /etc/selinux/config
将【SELINUX】设置为【disabled】
临时关闭SELinux
setenforce 0
3.3 关闭虚拟内存
修改配置文件【/etc/fstab】
vim /etc/fstab
注释掉swap那一行
然后通过命令临时关闭虚拟内存
swapoff -a
关于不关闭虚拟内存会出现的问题我在离线部署Kubernetes 1.9.0已经注明;
3.4 设置防火墙
如果是做测试用,可以直接关掉防火墙,但是如果是用于生产环境,还是老老实实的去设置需要开发的端口吧,运行以下命令关闭防火墙
systemctl stop firewalld.service && systemctl disable firewalld.service
3.5 安装docker
选择docker版本【docker 17.03.2-ce】,安装步骤参考这里,或者也可以选择直接运行下面的命令
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak curl -o /etc/yum.repos.d/CentOS-Base-Ali.repo http://mirrors.aliyun.com/repo/Centos-7.repo curl -o /etc/yum.repos.d/CentOS-Base-163.repo https://mirrors.163.com/.help/CentOS7-Base-163.repo curl -o /etc/yum.repos.d/Docker-ce-Ali.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum makecache yum install --setopt=obsoletes=0 docker-ce-17.03.2.ce-1.el7.centos docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch -y systemctl enable docker.service && systemctl start docker.service
部署rancher
rancher的部署有两种方式,分别是单点部署和高可用部署,由于本文的重点在于如何使用rancher搭建Kubernetes高可用集群,所以本文使用rancher的单点部署方式,至于rancher的高可用部署,以后再写文章补充。
选择一个节点(我选择的是k8smaster1节点)运行如下命令安装单节点rancher:
docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher:stable
安装完成后运行【docker ps】会看到有一个rancher的容器
现在通过浏览器访问【https://192.168.246.128/】会发现跳转到了【https://192.168.246.128/update-password】,让我们为admin用户设置一个密码:
接着设置访问rancher的URL,需要能够被所有的节点访问到,这里你可以设置成【rancher.{domain.com}】:
设置完成后点击【Save URL】,然后就进入添加集群的页面了
点击【Add Cluster】添加集群,选择【CUSTOM】:
填写集群名称,然后展开【Cluster Options】,设置集群配置,网络提供者选择Flannel
设置完成后点击【Next】按钮,就可以看到添加Node命令的界面了,根据节点的角色进行选择,我的主节点的角色选择是etcd+Control Plane,工作节点的角色选择是Worker,选择完后就会看到下面生成的命令,将命令Copy到相应的节点运行就可以了
然后点到【Cluster】就会看到集群正在准备环境(Provisioning),你现在要做的就是等待
等到所有的节点都添加完成之后就能看到集群的状态已经变成【Active】了,然后就可以部署你的应用了。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
玩转kubernetes中Pod挂载公网IP
起因 在很多业务场景里,是需要kubernetes里的Pod去调用某些公网上服务的(无论这些公网服务是自建的还是其它服务提供商的)。但是通常Pod都是通过主机上SNAT的方式做出口,这样容易被误认为是某种信息抓取程序或者是类似DDoS攻击,从而容易被封闭对应的主机IP。 另外有些服务只是对某种服务提供接入,需要设置白名单,但是kuberentes集群里又跑了多种服务,这些服务都是通过主机的SNAT出去,从而比较难限定对应的服务的白名单。如果将对应的服务固定在某几个worker节点上虽然也是一个办法,但是其灵活度以及容器弹性将收到一定的限制。 是否可以提供一个方式,让对应的服务的Pod根据需要来挂载自己独立的公网IP,从而避免上述问题呢?答案是可以的,这个就是我们kubernetes容器服务中特有的网络插件Terway的一个很好的特性。 提
- 下一篇
资源编排配合实例自定义数据,实现RDS自动创建与恢复
背景:不少客户需要批量部署系统,他们希望ROS不仅能帮助他们自动部署底层PAAS与IAAS资源,还能够省去安装软件,链接数据库,导入数据库文件的动作。而ROS能完美结合ECS的自定义数据,自定义镜像,RDS Web API,最大化减少人肉工作。 前提条件 a.拥有可用的OSS空间(Bucket),且与创建的RDS同一个Region b.RDS具有访问OSS的权限(也可通过ROS授权) c.了解ROS,可通过ROS控制台创建模板和资源 步骤概览: a.创建ECS自定义镜像,镜像内包含自己的应用软件 b.将需要备份恢复的数据库.bak(本文以SQLServer为例)文件上传到OSS空间 c.编写ROS的模板,自动创建所需资源,创建顺序如下VPC>Vswitch>SecurityGroup>RDS>ECS,ECS创建成功后会自动执行ROS模板里面编写的自定义数据,连接数据库,并且将OSS中的备份文件恢复到RDS里面。 步骤详解: 1.创建自定义镜像 1.1创建一个ECS实例,部署好所需的软件,除了安装客户业务所需要的软件之外,为了实现自动的备份,减少配置工作,也...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS8编译安装MySQL8.0.19
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7