K8S客户端二 使用Rancher部署服务

Rancher容器云管理平台

本博客中使用了四台服务器,如下

  1. rancher服务器
  2. k8s-master
  3. k8s-worker01
  4. 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官网

K8S客户端二 使用Rancher部署服务_第1张图片

K8S客户端二 使用Rancher部署服务_第2张图片

[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
K8S客户端二 使用Rancher部署服务_第3张图片
第一次安装会生成密码,查看密码步骤如下:
K8S客户端二 使用Rancher部署服务_第4张图片

在这里插入图片描述
上边下方红框里就是登录密码,复制到下边密码框即可
K8S客户端二 使用Rancher部署服务_第5张图片
可以自定义密码

注意:密码至少需要12个字符
K8S客户端二 使用Rancher部署服务_第6张图片
完成
K8S客户端二 使用Rancher部署服务_第7张图片

5.2 Rancher导入Kubernetes集群

这里我们导入已有集群,至于创建集群步骤,请参考右侧第二章节:创建k8s集群

K8S客户端二 使用Rancher部署服务_第8张图片
K8S客户端二 使用Rancher部署服务_第9张图片

复制第二个命令到master服务器执行即可(node节点不需要执行)

K8S客户端二 使用Rancher部署服务_第10张图片
K8S客户端二 使用Rancher部署服务_第11张图片

等两三分钟后执行下边命令查看namespace

kubectl get ns

K8S客户端二 使用Rancher部署服务_第12张图片

也可以在web界面看
K8S客户端二 使用Rancher部署服务_第13张图片
大概5~7f分钟后,这里才变成Active
K8S客户端二 使用Rancher部署服务_第14张图片
如果状态一直是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即可

K8S客户端二 使用Rancher部署服务_第15张图片
可以看到所有主机都加进来了
K8S客户端二 使用Rancher部署服务_第16张图片

查看集群,点击自己新建的集群
K8S客户端二 使用Rancher部署服务_第17张图片

5.3 创建项目

点击左侧自己新建的集群
K8S客户端二 使用Rancher部署服务_第18张图片
选择“项目-命名空间”,左上角“创建项目”

K8S客户端二 使用Rancher部署服务_第19张图片
填写项目信息后,点击右下角“创建”
K8S客户端二 使用Rancher部署服务_第20张图片

5.4 创建namespace命名空间

找到刚创建的项目,点击右侧“创建命名空间”

K8S客户端二 使用Rancher部署服务_第21张图片
填写命名空间信息,点击右下角“创建”
K8S客户端二 使用Rancher部署服务_第22张图片

可以在后台查到这个ns
K8S客户端二 使用Rancher部署服务_第23张图片

在上边创建好的命名空间(ns)里就可以发布应用了

5.5 创建Deployment

注意,下边所有内容,起名称的时候,都是小写字母,或者小写字母加数字即可(a~z, 0~9),不然无法创建

Deployment是pod控制器,点击左侧Deployments,然后点击“创建”
K8S客户端二 使用Rancher部署服务_第24张图片
创建deployment时,切记记得选择命名空间,否则是在ns为default下创建了deployment
K8S客户端二 使用Rancher部署服务_第25张图片

K8S客户端二 使用Rancher部署服务_第26张图片

部署一个nginx,下边这个30080端口就是以后浏览器要访问的nginx端口
K8S客户端二 使用Rancher部署服务_第27张图片

开启健康检查
K8S客户端二 使用Rancher部署服务_第28张图片

创建好后,查看,发现已经运行起来
K8S客户端二 使用Rancher部署服务_第29张图片

访问k8s的master服务器地址+30080端口:
K8S客户端二 使用Rancher部署服务_第30张图片

5.6 使用Rancher创建k8s集群

找到左侧“集群管理”
K8S客户端二 使用Rancher部署服务_第31张图片
点击右侧“创建”
K8S客户端二 使用Rancher部署服务_第32张图片
选择“总定义”
K8S客户端二 使用Rancher部署服务_第33张图片
其他一般默认即可,这里可以更改目录
K8S客户端二 使用Rancher部署服务_第34张图片
K8S客户端二 使用Rancher部署服务_第35张图片
点击下一步之后:
K8S客户端二 使用Rancher部署服务_第36张图片
把下边的命令复制到master、worker等节点执行
K8S客户端二 使用Rancher部署服务_第37张图片
结果:
K8S客户端二 使用Rancher部署服务_第38张图片

六 使用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

选择“持久卷”,点击“创建”
K8S客户端二 使用Rancher部署服务_第39张图片
配置PV参数

注意 PV存储空间一定要大于后边创建的PVC的空间(注意nfs挂载路径和上边的/etc/export/文件里的路径一致,都是/nfs/mysql)
K8S客户端二 使用Rancher部署服务_第40张图片
K8S客户端二 使用Rancher部署服务_第41张图片
创建后可以看到创建成功
K8S客户端二 使用Rancher部署服务_第42张图片

6.3 创建PVC

K8S客户端二 使用Rancher部署服务_第43张图片
填写相关内容
K8S客户端二 使用Rancher部署服务_第44张图片
K8S客户端二 使用Rancher部署服务_第45张图片
可以看到创建成功,并且自动绑定到pvc上了
K8S客户端二 使用Rancher部署服务_第46张图片

6.4 创建“服务发现”

部署MySQL之前一定一定要先添加服务发现,否则就会报错
K8S客户端二 使用Rancher部署服务_第47张图片
选择Headless
K8S客户端二 使用Rancher部署服务_第48张图片
填写信息
K8S客户端二 使用Rancher部署服务_第49张图片
填写选择器
K8S客户端二 使用Rancher部署服务_第50张图片
可以看到创建成功
K8S客户端二 使用Rancher部署服务_第51张图片

6.5 部署mysql服务

创建StatefulSets
在这里插入图片描述
填写信息
K8S客户端二 使用Rancher部署服务_第52张图片

配置环境变量——密码
K8S客户端二 使用Rancher部署服务_第53张图片
docker官网查看mysql环境变量 dockerhub官网

往下拉,找到环境变量
K8S客户端二 使用Rancher部署服务_第54张图片
K8S客户端二 使用Rancher部署服务_第55张图片
K8S客户端二 使用Rancher部署服务_第56张图片
pod选择存储卷
K8S客户端二 使用Rancher部署服务_第57张图片
填写NFS服务器信息(挂载路径 /nfs/mysql)
K8S客户端二 使用Rancher部署服务_第58张图片
在容器里选择存储卷
K8S客户端二 使用Rancher部署服务_第59张图片
填写挂载路径(这里的路径是/var/lib/mysql)
K8S客户端二 使用Rancher部署服务_第60张图片

点击右下角“创建”后,发现对应pod已经运行了
K8S客户端二 使用Rancher部署服务_第61张图片
上图红框里是pod名称,如果状态一直是containering时,说明大概率报错了,在k8s的master机器执行以下命令查看日志

kubectl describe pod 	mysqlstateful-0 -n mytns

或者在nfs服务器执行以下命令查看挂载是否报错

cat /var/log/messages | grep mount

使用navicat客户端连接mysql,说明部署成功

K8S客户端二 使用Rancher部署服务_第62张图片

你可能感兴趣的:(运维,kubernetns,kubernetes,rancher,服务器)