Rancher部署K8S容器集群及NFS存储

引入:      

         kubernetes,简称K8s,是把中间8个字母说成8。是一个开源用来管理云平台中多个主机上的容器化的应用,简而言之就是容器的集群化部署,提供了高可用。Kubernetes的目标是让部署容器化的应用简单并且高效,用来编排容器,Kubernetes提供了应用部署,规划,更新,维护的一种机制。

        Rancher,简而言之就是一个用于web界面管理k8s集群的服务,对服务的创建、修改、停用等等一些列操作,方便运维处理,同时可以监控各个微服务以及宿主机本身,功能非常强大,社区也很不错。

一、环境准备

1、准备服务器

        搭建K8S集群至少几台服务器(同一局域网),也可以用1台做,但是1台没必要做搭k8s,自己练习或者学习可以使用1台,明白里面的几种角色原理即可。

2、基础环境准备

1、更新yum
yum install 

2、安装依赖包工具 
sudo yum install -y yum-utils \ 
device-mapper-persistent-data \ 
lvm2 

3、设置阿里镜像地址 (从国内下载速度快,docker官方镜像也不稳定后期貌似关闭访问了)
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 

3、linux基础系统配置

1、关闭swap分区 (不关使用虚拟内存会有问题)
swapoff -a # 临时关闭 
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab #永久关闭 


3、 配置 Docker使用systemd作为默认Cgroup驱动,每台服务器都需要执行(master和node) 

cat <<EOF > /etc/docker/daemon.json 
{ 
   "exec-opts": ["native.cgroupdriver=systemd"] 
} 
EOF 
 

4、 桥接的IPv4流量到iptables,每台服务器都需要执行(master和node)
cat <<EOF >>  /etc/sysctl.conf  
net.bridge.bridge-nf-call-ip6tables = 1 
net.bridge.bridge-nf-call-iptables = 1 
net.ipv4.ip_nonlocal_bind = 1 
net.ipv4.ip_forward = 1 
vm.swappiness=0 
EOF 
 
sysctl -p  让内核重新读取数据,加载生效 

4、安装指定版本Docker

1、查看docker-ce支持版本 
yum list docker-ce --showduplicates|sort -r 


2、查看docker-ce-cli版本 
yum list docker-ce-cli --showduplicates|sort -r 

3、安装docker 
  安装指定版本docker 18.09.9 
  yum install -y docker-ce-18.09.9 docker-ce-cli-18.09.9 containerd.io 
  
4、启动docker服务,设置开机启
systemctl start docker && systemctl enable docker 

5、docker 版本验证 
  docker version

以下为查询部署指定docker的版本:

二、Rancher部署

在docker部署完成后,就可以通过拉取一个Rancher镜像启动Rancher服务。

1、开始指定版本安装Rancher v2.3.6

# 拉取Rancher v2.3.6 镜像 
docker pull rancher/rancher:v2.3.6 

2、通过docker inspect 可以看到有个两个数据卷需要挂着的

# 等待下载完成,查看一下镜像包 
docker inspect rancher/rancher:v2.3.6 

宿主机创建相应的目录用来挂着这两个路径文件

#宿主机下创建volumes目录 
 mkdir -p /docker/rancher/rancher 
 mkdir -p /docker/rancher/log 

3、启动rancher

docker run --privileged -d --restart=unless-stopped -p 8080:80 -p 4430:443 \ 
-v /docker/rancher/rancher:/var/lib/rancher \ 
-v /docker/rancher/log:/var/log/log \ 
 --name rancher rancher/rancher:v2.3.6 

4、需要关闭防火墙

(建议开启指定端口,见Centos防火墙配置。最简单的方法就是直接停用防火墙)

打开单个端口:firewall-cmd --zone=public --add-port=4430/tcp --permanent 
打开多个端口:firewall-cmd --zone=public --add-port=20000-29999/tcp --permanent 

或者直接停用(最简单)

systemctl stop firewalld && systemctl disable firewalld 

5、通过web访问 Rancher

https://IP:4430

首次登录需要设置账号密码

登陆后如下:

此时rancher部署成功 !

三、通过Rancker部署K8S集群

1、登录Rancher首页界面点击右上方,新建集群

2、选择自定义集群

3、配置参数

其它参数默认即可 !

4、点击下一步

选择主机角色功能,再复制一下命令到对应主机。注意主机需要安装docker后。

注意:

1、master节点勾选Etced和Controller两个,工资node节点勾选worker几点就行,把下面对应的命令拷贝到对应的服务器即可!

2、如果只有1台服务器,那就3个都勾选上,再执行到对应服务器上!

以下为只有1台服务器的:

仅供参考,需要拷贝自对应的命令!

sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.3.6 --server https://39.103.200.229:4430 --token jkgks8j4njxlfnv5fv2qrlk9q2fdlsj8bsrbgd6jr4gxt92ltc9pd6 --ca-checksum 2ecf277824226c8ab72980079e823e4a722a42e7db986a8b50cec72f975e18c0 --etcd --controlplane --worker 

执行完Rancher界面会有以下提示 :

5、此时报错 2380、1337 。

重启docker服务即可解决。(一次性pull多个镜像出现的问题)

6、部署完镜像及docker如下

7、此时报错。是在预拉镜像服务。等待即可

在后台可以看见正在增加镜像

到此时,集群可以正常使用。(后台镜像还在拉取)

到这里,一个基本的单节点1台服务部署的k8s集群完成了,一般集群是多台服务器,上面的界面旧货出现对应的master和node节点服务器

四、NFS存储部署

部署NFS方便在Rancher部署容器服务时候将卷数据挂载到NFS上面。集群环境容器持久化卷到宿主机本身不方便做映射已经共享,高可用重新拉取容器不可用。

1、 下载 nfs 服务

下载 nfs 服务 
yum -y install nfs-utils rpcbind 

其它三台服务器都安装nfs工具 
 yum install -y nfs-utils  

2、启动服务并加入开机自启


systemctl start nfs && systemctl enable nfs 
systemctl start rpcbind && systemctl enable rpcbind 

3、创建共享目录并赋予最大权限

mkdir -p /nfs && chmod -R 777 /nfs 

4、配置完成后重新加载

#重新加载 
exportfs -r 

# 查看挂载点信息 
showmount -e 

5、rancher平台配置

创建持久卷PV

添加完后 nfs-pv为Avilable状态 证明添加成功

6、在命名空间中创建数据卷(PVC)

很快就会绑定完成

PVC

PV

注意:因为是通过外网口挂载nfs,后台需关闭防火墙!!!!!

7、部署服务挂载NFS卷

        用docker随便拉取一个服务下来测试(以nginx为例),用来演示挂载NFS卷

docker run -d --privileged --restart=unless-stopped \ -p 80:80 -p 443:443 \ -v /etc/nginx.conf:/etc/nginx/nginx.conf \ nginx:1.14 

部署容器时需要映射卷,在映射之前需要先拉去nginx容器拷贝映射文件(或者会报错)

复制命令

通过命令查看容器ID

docker ps

先把需要的nginx文件拷贝下来:

docker cp 2c3f6a87803c:/etc/nginx/conf.d /nfs/nginx/conf.d 
docker cp 2c3f6a87803c:/etc/nginx/nginx.conf /nfs/nginx/nginx.conf 
docker cp 2c3f6a87803c:/usr/share/nginx/html /nfs/nginx/html 

copy后,再开始映射(子路径及nfs路径,省去/nfs,直接从子路径开始)

端口映射

此时保存就可以在Rancher界面看见对应的pod服务了。对应持久化配置文件在NFS卷里面。

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值