赞
踩
背景要求:公司线上环境由于某些原因不方便连接公网 但是想要部署k8s系统。
整体思路:先找一个可以连接外网的工作环境,部署一套k8s集群,然后在部署期间 下载对应的rpm包、导出k8s需要的docker 对应的镜像,然后把对应的包拷贝到离线环境,人工手动的去安装 ;
大体步骤如下:
1、服务集群基本设置
# 关闭防火墙 systemctl stop firewalld systemctl disable firewalld # 关闭selinux sed -i 's/enforcing/disabled/' /etc/selinux/config #永久 setenforce 0 #临时 # 关闭swap(k8s禁止虚拟内存以提高性能) sed -ri 's/.*swap.*/#&/' /etc/fstab #永久 swapoff -a #临时 # 在master添加hosts 一下是我的服务器集群信息,需要根据自己的实际情况去配置 cat >> /etc/hosts << EOF 192.168.1.50 k8smaster 192.168.1.51 k8snode1 192.168.1.52 k8snode2 EOF # 设置网桥参数 cat > /etc/sysctl.d/k8s.conf << EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF sysctl --system #生效 # 时间同步 timedatectl set-timezone Asia/Shanghai (设置时区) yum install ntpdate -y ntpdate time.windows.com # 离线安装docker 自行百度了,下面的是非离线方式 更新docker的yum源 yum install wget -y wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo 安装指定版本的docker: yum install docker-ce-19.03.13 -y #配置docker加速器 自行百度拉 我这是内网环境,也就不需要配置 然后重启服务
2、手动下载k8s 部署需要yum 安装包(kubelet kubeadm kubectl socat conntrack-tools) 到本地
最好是找一台没有安装过以上命令的机器
然后通过 命令
yum install --downloadonly --downloaddir=./ kubelet kubeadm kubectl socat conntrack-tools
把这些命令的rpm包下载到当前文件夹
然后把下载下来的rpm包 拷贝到每台内网服务器
通过 命令
rpm -ivh *.rpm --nodeps --force
去手动安装对应的命令
3、手动导入docker镜像
去已经装好的k8s集群里面 手动的把 master 、node 上的docker镜像 保存下来,拷贝到内网环境对应的服务,导入到对应的docker里面
1> 手动导出镜像 对应的路径地址 根据实际情况修改
- echo "导出k8s需要的docker镜像"
- IMGINFO=`docker images |awk '{print $1,$2,$3}'|sed 1d >> $TARDIR/tmp.txt`
- RESLIST=`/usr/bin/cat $TARDIR/tmp.txt |awk '{print $1}' `
- for i in $RESLIST
- do
- RESTAG=`docker images |grep "$i" |awk '{a=$1":"$2;print a }'`
- BAKNAME=`docker images |grep "$i" |awk '{a=$1":"$2;print a }'|sed 's/\//_/g'`
- /usr/bin/docker save $RESTAG -o $TARDIR/${BAKNAME}_`date +%Y%m%d`.tar >/dev/null 2>>$BAKLOGFILE
- done
2>导入命令
- echo "导入k8s需要的docker镜像"
- LIST=`/root/k8s-install/k8s-docker-images`
- for i in $LIST
- do
- /usr/bin/docker load -i '/root/k8s-install/k8s-docker-images/'$i
- doney
- 以下的操作就跟正常的部署k8s集群一样了
4、去k8s master 执行 init 命令 由于对应的命令已经安装成功,这时候就可以执行成功了
kubeadm init --apiserver-advertise-address=192.168.190.2 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.19.4 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16
5、去k8s node 节点执行 join 命令
。。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。