文章目录
项目基础信息
在内部网络的离线环境中,通过使用sealos工具自动化部署一套高可用的k8s服务集群,配置使用NFS共享存储,以及搭建了一个Docker Registry本地镜像仓库的服务。
近期因工作所需,不得已又捡起放下了几年的k8s,在多方咨询后,确认sealos工具是可以满足我们部署一套高可用k8s服务集群需求的,也不致于影响到后续的长期运行维护与故障处理,于是使用了几天时间部署、验证并整理出这样一篇技术资料,发与大家共享。
工具版本
- sealos v4.3.7
- 集群镜像版本 labring/kubernetes:v1.27.16
测试环境
操作系统版本为RHEL7.9 64
测试机信息如下:
- 172.16.10.52 k8s master节点
- 172.16.10.53 k8s master节点
- 172.16.10.54 k8s master节点
- 172.16.10.55 k8s worker节点
- 172.16.10.56 k8s worker节点
- 172.16.10.57 k8s worker节点
- 172.16.10.63 NFS共享节点
- 172.16.10.64 docker image仓库
需要注意的是容器默认使用/var/lib作为数据存储路径,在开始安装服务前,务必检查下各主机节点的数据盘空间分配使用,或者是直接挂载到/var/lib路径,或者是将数据盘空间追加到/var分区均可。
在k8s集群所有主机节点上增加/etc/hosts映射配置如下:
cat << EOF >> /etc/hosts
172.16.10.52 test-APP-10-52
172.16.10.53 test-APP-10-53
172.16.10.54 test-APP-10-54
172.16.10.55 test-APP-10-55
172.16.10.56 test-APP-10-56
172.16.10.57 test-APP-10-57
EOF
下载资源文件
需要先找一个能访问互联网的linux主机,下载需要的资源文件。拷贝到内网中离线使用。
下载sealos二进制命令文件
以下命令均使用root用户执行。
VERSION=v4.3.7
export VERSION
wget https://mirror.ghproxy.com/https://github.com/labring/sealos/releases/download/${VERSION}/sealos_${VERSION#v}_linux_amd64.tar.gz
查看下载的文件:
ls -lh
-rw-r--r--. 1 root root 61M Oct 31 2023 sealos_4.3.7_linux_amd64.tar.gz
下载k8s安装镜像和组件资源
以下命令均使用root用户执行。
在有网络的环境中导出集群镜像:
sealos pull registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.27.16
sealos save -o kubernetes.tar registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.27.16
sealos pull registry.cn-shanghai.aliyuncs.com/labring/helm:v3.9.4
sealos save -o helm.tar registry.cn-shanghai.aliyuncs.com/labring/helm:v3.9.4
sealos pull registry.cn-shanghai.aliyuncs.com/labring/calico:v3.26.1
sealos save -o cilium.tar registry.cn-shanghai.aliyuncs.com/labring/calico:v3.26.1
sealos pull registry.cn-shanghai.aliyuncs.com/labring/ingress-nginx:v1.11.2
sealos save -o ingress-nginx.tar registry.cn-shanghai.aliyuncs.com/labring/ingress-nginx:v1.11.2
sealos pull registry.cn-shanghai.aliyuncs.com/labring/nfs-subdir-external-provisioner:v4.0.18
sealos save -o nfs-subdir-external-provisioner.tar registry.cn-shanghai.aliyuncs.com/labring/nfs-subdir-external-provisioner:v4.0.18
下载docker离线安装包
https://download.docker.com/linux/static/stable/x86_64/docker-20.10.24.tgz
下载Docker Registry容器镜像
找一个可以访问互联网的docker容器,执行下面命令下载并导出一份容器镜像文件:
docker pull registry
docker images
docker save IMAGE_ID > registry.tar
将上面下载的各种资源文件,拷贝到内网中做离线部署使用。
NFS共享配置
我们测试环境中没有nas共享网盘资源,所以在搭建该测试服务时改为使用一台测试机自行搭建一个NFS共享服务,管理信息如下:
- 测试机地址 :172.16.10.64
- 文件系统共享路径:/nfsdata
在这里跳过怎么配置上述linux系统下的nfs共享服务了,有不明白的可自行查找参考资料。
需要特别注意的一点是,需要调整nfs共享路径的属主权限如下:
## nfs 目录权限问题,执行命令修改权限:
chown nfsnobody:nfsnobody /nfsdata
coredns服务的DNS解析配置
由于目前测试环境没有dns解析服务,coredns容器会因找不到dns server而启动失败,解决方法有两种:
1)在k8s集群所有测试机上手工配置一条dns server地址
cat << EOF >> /etc/resolv.conf
nameserver 114.114.114.114
EOF
对于无法访问互联网的测试机来说,其实上面的nameserver地址可以随便写一个即可。需要注意的是,还需要手工修改下测试机网卡配置文件,增加DNS1=114.114.114.114的配置内容,以防测试机重启后会丢失resolv.conf中的配置信息。
2)执行命令kubectl edit cm coredns -n kube-system
在configmap配置文件中删除以下内容: