Rancher容器云管理平台
本博客中使用了四台服务器,如下
- rancher服务器
- k8s-master
- k8s-worker01
- k8s-worker02
一、主机硬件说明
序号 | 硬件 | 操作及内核 |
---|---|---|
1 | CPU 4 Memory 4G Disk 100G | CentOS7 |
2 | CPU 4 Memory 4G Disk 100G | CentOS7 |
3 | CPU 4 Memory 4G Disk 100G | CentOS7 |
4 | CPU 4 Memory 4G Disk 100G | CentOS7 |
二、主机配置
四台主机都要做
2.1 主机名
# hostnamectl set-hostname rancherserver
# hostnamectl set-hostname k8s-master01
# hostnamectl set-hostname k8s-worker01
# hostnamectl set-hostname k8s-worker02
2.2 四台服务器的IP地址(添加最后四行)
[root@rancherserver ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="ec87533a-8151-4aa0-9d0f-1e970affcdc6"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.10.130"
PREFIX="24"
GATEWAY="192.168.10.2"
DNS1="119.29.29.29"
[root@k8s-master01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
[root@k8s-master01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="ec87533a-8151-4aa0-9d0f-1e970affcdc6"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.10.131"
PREFIX="24"
GATEWAY="192.168.10.2"
DNS1="119.29.29.29"
[root@k8s-worker01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
[root@k8s-worker01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="ec87533a-8151-4aa0-9d0f-1e970affcdc6"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.10.132"
PREFIX="24"
GATEWAY="192.168.10.2"
DNS1="119.29.29.29"
[root@k8s-worker02 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
[root@k8s-worker02 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="ec87533a-8151-4aa0-9d0f-1e970affcdc6"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.10.133"
PREFIX="24"
GATEWAY="192.168.10.2"
DNS1="119.29.29.29"
2.3 主机名与IP地址解析
四台服务器都配置
# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.52.130 rancherserver
192.168.52.131 k8s-master01
192.168.52.132 k8s-worker01
192.168.52.133 k8s-worker02
2.4 主机安全设置
# systemctl stop firewalld;
# systemctl disable firewalld
# firewall-cmd --state
not running
# sed -ri 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
2.5 主机时钟同步
# 查看系统是否已安装chrony
rpm -qa |grep chrony
# 没有安装环境的话,执行以下命令进行安装
yum install chrony
# 安装后,直接执行这俩命令,进行时间同步
systemctl start chronyd
systemctl enable chronyd
2.6 关闭swap
关闭k8s集群节点swap
# cat /etc/fstab
默认开启,修改后关闭(把下边这行注释掉即可)
#/dev/mapper/centos-swap swap swap defaults 0 0
临时关闭所有
# swapoff -a
2.7 配置内核路由转发
# vim /etc/sysctl.conf
# cat /etc/sysctl.conf
...
# 开启ip转发功能
net.ipv4.ip_forward=1
# sysctl -p
net.ipv4.ip_forward = 1
三、docker安装
docker分为ce和ee版本,ce免费,ee收费,这里安装的是ce版
所有主机安装docker 安装docker步骤 参考里边的第二章安装docker部分
四、rancher安装
只在rancherserver服务器执行即可,其他三台不需要安装
在docker官网利寻找自己想要的版本,即自定义版本安装 docker官网
[root@rancherserver ~]# docker pull rancher/rancher:v2.7.1
# 如果下载最新版本使用如下命令
docker pull rancher/rancher:latest
# 存储rancher相关信息,如用户名、密码等
[root@rancherserver ~]# mkdir -p /opt/data/rancher_data
启动
[root@rancherserver ~]# docker run -d --privileged -p 80:80 -p 443:443 -v /opt/data/rancher_data:/var/lib/rancher --restart=always --name rancher-2.7.1 rancher/rancher:v2.7.1
[root@rancherserver ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b4fb6c11ce5a rancher/rancher:v2.7.1 "entrypoint.sh" 26 seconds ago Up 26 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp rancher-2.7.1
五、通过Rancher部署kubernetes集群
5.1 Rancher访问
直接访问Rancher所在服务器地址即可:http://192.168.10.130
第一次安装会生成密码,查看密码步骤如下:
上边下方红框里就是登录密码,复制到下边密码框即可
可以自定义密码
注意:密码至少需要12个字符
完成
5.2 Rancher导入Kubernetes集群
这里我们导入已有集群,至于创建集群步骤,请参考右侧第二章节:创建k8s集群
复制第二个命令到master服务器执行即可(node节点不需要执行)
等两三分钟后执行下边命令查看namespace
kubectl get ns
也可以在web界面看
大概5~7f分钟后,这里才变成Active
如果状态一直是pending,则可能是网络插件flannel的问题,查看master机器的/run/flannel/目录下是否有一个subnet.env文件,没有的话,新增这个文件,内容如下,然后重新导入集群即可
FLANNEL_NETWORK=10.244.0.0/16
FLANNEL_SUBNET=10.244.0.1/24
FLANNEL_MTU=1450
FLANNEL_IPMASQ=true
等到状态都是true即可
可以看到所有主机都加进来了
查看集群,点击自己新建的集群
5.3 创建项目
点击左侧自己新建的集群
选择“项目-命名空间”,左上角“创建项目”
填写项目信息后,点击右下角“创建”
5.4 创建namespace命名空间
找到刚创建的项目,点击右侧“创建命名空间”
填写命名空间信息,点击右下角“创建”
可以在后台查到这个ns
在上边创建好的命名空间(ns)里就可以发布应用了
5.5 创建Deployment
注意,下边所有内容,起名称的时候,都是小写字母,或者小写字母加数字即可(a~z, 0~9
),不然无法创建
Deployment是pod控制器,点击左侧Deployments,然后点击“创建”
创建deployment时,切记记得选择命名空间,否则是在ns为default下创建了deployment
部署一个nginx,下边这个30080端口就是以后浏览器要访问的nginx端口
开启健康检查
创建好后,查看,发现已经运行起来
访问k8s的master服务器地址+30080端口:
5.6 使用Rancher创建k8s集群
找到左侧“集群管理”
点击右侧“创建”
选择“自定义”
其他一般默认即可,这里可以更改目录
点击下一步之后:
把下边的命令复制到master、worker等节点执行
结果:
六 使用rancher部署mysql
6.1 安装NFS服务
NFS是Network File System的缩写,中文意思是网络文件系统。主要功能是网络让不同的主机系统之间可以共享文件或目录。
NFS客户端(一般为应用服务器,Web、)可以通过挂载(mount)的方式将NFS服务器端共享的数据目录挂载到NFS客户端本地系统中(某一个挂载点下)。
从NFS客户端的机器本地看,NFS服务器端共享的目录就好像是客户端自己的磁盘分区或目录一样,实际上是远端的NFS服务器的目录。
新启一个NFS服务器,在该服务器里安装nfs服务。用来存储MySql的数据
查看是否安装了nfs软件包
rpm -qa|grep nfs-utils
安装nfs软件包
yum -y install nfs-utils
创建挂载目录
mkdir -p /nfs/mysql
# 修改权限
chmod 777 /nfs/mysql
# 编辑该文件
vim /etc/exports
写入如下内容
/nfs/mysql *(insecure,fsid=0,rw,sync,no_root_squash,acl)
更新配置文件
exportfs -r
启动NFS服务,并查看服务状态。
# 启动NFS服务
systemctl start nfs-server
# 查看NFS状态
systemctl status nfs-server
# 查看NFS进程
ps -ef | grep nfs
# 重启NFS命令
service nfs restart
# 查看NFS日志信息
cat /var/log/messages | grep mount
配置NFS服务开机自启动
systemctl enable nfs-server
查看NFS服务共享盘挂载情况
showmount -e localhost
在所有node节点都安装nfs服务
yum install -y nfs-utils
# 创建挂载目录
mkdir -p /nfs/mysql
# 修改权限
chmod 7777 /nfs/mysql/
# 启动并且开机启动
systemctl start nfs && systemctl enable nfs
6.2 Rancher部署MySql
在rancher上部署MySQL,必须要先创建PVC和PV,PVC和PV创建之后会自动绑定,然后部署MySQL才会成功。
创建PVC和PV的顺序是固定的,必须先创建PV,再创建PVC;因为PVC是绑定在PV上的。
删除PVC和PV的顺序也是固定的,必须先删除PVC,再删除PV;如果不删除PVC直接去删除PV,是无法删除的。
创建PV
选择“持久卷”,点击“创建”
配置PV参数
注意 PV存储空间一定要大于后边创建的PVC的空间(注意nfs挂载路径和上边的/etc/export/文件里的路径一致,都是/nfs/mysql)
创建后可以看到创建成功
6.3 创建PVC
填写相关内容
可以看到创建成功,并且自动绑定到pvc上了
6.4 创建“服务发现”
部署MySQL之前一定一定要先添加服务发现,否则就会报错
选择Headless
填写信息
填写选择器
可以看到创建成功
6.5 部署mysql服务
创建StatefulSets
填写信息
配置环境变量——密码
docker官网查看mysql环境变量 dockerhub官网
往下拉,找到环境变量
pod选择存储卷
填写NFS服务器信息(挂载路径 /nfs/mysql)
在容器里选择存储卷
填写挂载路径(这里的路径是/var/lib/mysql)
点击右下角“创建”后,发现对应pod已经运行了
上图红框里是pod名称,如果状态一直是containering时,说明大概率报错了,在k8s的master机器执行以下命令查看日志
kubectl describe pod mysqlstateful-0 -n mytns
或者在nfs服务器执行以下命令查看挂载是否报错
cat /var/log/messages | grep mount
使用navicat客户端连接mysql,说明部署成功