基于rancher搭建k8s容器管理平台

规划:

服务器描述内容
192.168.15.139master1节点etcd/Control /worker/rancher
192.168.8.142node1节点worker、etcd
192.168.8.141node2节点worker
192.168.15.56node3节点worker、etcd

1.rancher安装

mkdir -p /usr/rancher
docker run -d --privileged --restart=unless-stopped --name rancher -v /usr/rancher/:/var/lib/rancher/ -p 8842:80 -p 8843:443 rancher/rancher:v2.5.10

2.访问rancher

rancher所在主机IP
账号密码:admin/admin

3.部署k8s集群

1.添加集群

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.部署master节点

1.设置主机名

hostnamectl set-hostname master1 

2.选择角色后复制命令到master节点服务器执行
在这里插入图片描述

3.根据需求可复以上步骤布置其它master节点

3.部署node节点

1.设置主机名

hostnamectl set-hostname node1 

选择角色后复制命令到master节点服务器执行
在这里插入图片描述

3.根据需求可复以上步骤布置其它node节点

4.添加成功

状态为active则添加成功(部署过程大概要10分钟左右,等待部署完成即可)
在这里插入图片描述

查看节点
在这里插入图片描述

5.错误解决

安装错误清理容器和目录重新安装

docker stop $(docker ps -aq) &
docker system prune -f &
docker volume rm $(docker volume ls -q) &
docker image rm $(docker image ls -q) &
rm -rf /etc/ceph \
       /etc/cni \
       /etc/kubernetes \
       /opt/cni \
       /opt/rke \
       /run/secrets/kubernetes.io \
       /run/calico \
       /run/flannel \
       /var/lib/calico \
       /var/lib/etcd \
       /var/lib/cni \
       /var/lib/kubelet \
       /var/lib/rancher/rke/log \
       /var/log/containers \
       /var/log/pods \
       /var/run/calico \
       /usr/rancher

4.部署nacos

1.数据库准备

创建本地nacos数据库,执行conf文件夹下的 nacos-mysql.sql文件

2.安装nacos服务

在这里插入图片描述

设置参数:
在这里插入图片描述

镜像地址:

Docker镜像:nacos/nacos-server:latest

配置环境变量:
在这里插入图片描述

配置:

MODE=standalone 
SPRING_DATASOURCE_PLATFORM=mysql 
MYSQL_SERVICE_HOST=192.168.8.104
MYSQL_SERVICE_PORT=3306 
MYSQL_SERVICE_USER=root 
MYSQL_SERVICE_PASSWORD=Bairui$AnyChat123
MYSQL_SERVICE_DB_NAME=nacos_test 
JVM_XMX=256m
JVM_XMS=256m

状态为active则成功
在这里插入图片描述

3.访问nacos
ip:30848/nacos

5.部署registry私有仓库

1.启动应用商店

在这里插入图片描述

2.选择docker-registry应用

在这里插入图片描述

3.配置参数并启动

在这里插入图片描述

4.启动成功

在这里插入图片描述

查看仓库镜像

192.168.8.142:30500/v2/_catalog
192.168.8.142:30500/v2/镜像名/tags/list

在未添加证书的情况下,需要在docker客户端进行以下配才能推送和拉取镜像

vim /etc/docker/daemon.json

加入以下配置:

{ "insecure-registries":["192.168.8.142:30500"] }

重启docker:

systemctl restart docker

192.168.8.142:30500为docker-registry所在服务器的ip和端口

5.持久化

工作负载选择registry升级

配置环境变量

REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/var/lib/registry
REGISTRY_STORAGE_DELETE_ENABLED=true

挂载pv券进行持久化(参考步骤7和8)

6.部署docker-registry-web

镜像:

hyper/docker-registry-web

环境变量:

REGISTRY_NAME=192.168.18.142:30500
REGISTRY_READONLY=false
REGISTRY_URL=http://192.168.8.142:30500/v2

6.部署nfs

服务端 :192.168.15.139

客户端: 192.168.8.142

客户端: 192.168.8.141

1.nfs服务端部署
通过包管理器安装
yum -y install nfs-utils rpcbind

创建用于共享的目录
mkdir /nfs/registry 
chown nfsnobody:nfsnobody /nfs/registry 

编辑共享目录配置文件
vi /etc/exports
/nfs 192.168.8.141/142 192.168.15.56/139(rw,async,no_subtree_check)

使配置文件生效:
exportfs  -r

启动NFS服务,并设置为开机自启动:
systemctl start rpcbind
systemctl enable rpcbind
systemctl start nfs
systemctl enable nfs

查看网络上可用的NFS服务:
showmount -e 192.168.15.139
输出:
Export list for 192.168.15.139:
/nfs/registry 192.168.8.0/142 192.168.15.56/139

配置说明:

/nfs/registry:用于共享的目录
192.168.8.0/142:允许该网段的主机访问。多个网段可以用空格或逗号隔开,*代表所有主机可访问
rw:表示可读写
ro:只读
sync:同步写入内存和硬盘
async:先写入内存

no_root_squash:如果客户端使用root用户连接,则对服务端共享目录拥有root权限
root_squash:如果客户端使用root用户连接,则将其映射为普通用户nfsnobody,默认配置

subtree_check: 验证每个被请求的文件都在导出的目录树中
no_subtree_check: 只验证涉及被导出的文件系统的文件请求

2.nfs客户端部署
客户端挂载NFS文件系统,需要先安装nfs-utils:
yum -y install nfs-utils
挂载:
mkdir /data
mount -t nfs 192.168.15.139:/nfs/registry /data/ -o proto=tcp
查看是否挂载:
df

7.创建PV和PVC(数据卷挂载)

1.添加持久卷pv

选择集群-存储-持久卷-添加pv-设置参数后保存
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.添加持久卷PVC

选择某个集群-项目, PVC-添加PVC,需要填写的内容如下

选择一个当前项目下的命名空间

选择使用现有的PV,并选择刚才创建的PV

PVC创建完成后,就可以被服务使用了
在这里插入图片描述

在这里插入图片描述

3.部署服务,挂载数据卷

在这里插入图片描述

问题:

1.node.kubernetes.io/disk-pressure:NoSchedule
在这里插入图片描述
在这里插入图片描述

node.kubernetes.io/disk-pressure:NoSchedule
到服务器用df -h 查看,发现磁盘空间不足,清理磁盘空间后解决
df -h 查看磁盘空间
sudo du -h --max-depth=1 寻找当前目录,哪个文件夹占用空间最大


其它

1.registry证书不生效问题
2.nacos集群无法连接,报错503
3.registry本地仓库挂载服务器目录后push失败问题
  err.message="blob unknown to registry"
  排查原因后发现是挂载的目录没有写权限,加权限后解决
4.registry-web无法删除镜像
在docker-registry添加环境变量REGISTRY_STORAGE_DELETE_ENABLED=true后解决
5.配置分离的jar包和配置文件在同一级目录无法映射主机目录
6.部署服务时内存分配策略和限制待了解
7.部分服务通过部署应用商店部署后无法使用
8.主机调度的问题
9.rancher自带prometheus监控使用
10.是否能查到每个pod占用的资源
11.备份和恢复问题
12.服务器重启能否自动恢复(目前测试过node节点服务器重启可以恢复)

13.导入二进制安装的node节点
   rancher只支持导入现在k8s集群,无法导入单个node节点
   通过rancher安装的k8s集群添加二进制安装的node节点
   发现集群ip为容器ip
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐