基于rancher搭建k8s容器管理平台
规划:
服务器 | 描述 | 内容 |
---|
192.168.15.139 | master1节点 | etcd/Control /worker/rancher | 192.168.8.142 | node1节点 | worker、etcd | 192.168.8.141 | node2节点 | worker | 192.168.15.56 | node3节点 | 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
|