离线部署k8s(v1.20.2)集群(一)

因为网络问题,使用的服务器都无法连接公网因此必须使用离线部署的方式进行部署
使用的设备列表如下:

hostname ip
master01 10.196.243.20
master02 10.196.243.21
master03 10.196.243.22
nod01 10.196.243.23
nod02 10.196.243.24
nod03 10.196.243.25
nod04 10.196.243.26
nod05 10.196.243.27

以上设备均无法连接公网,yum 也只能连接base库,k8s所需的安装包都需要从别的方式来获取,因此需要一台能上网的设备进行下载所需的安装包,设备的系统最好是全新的,未进行过任何的操作,因为我们需要yum下载所需要的的包
本地可以连接公网的设备需要保证与以上使用的设备内核版本一致,我使用的都是Centos7.6

[root@test-node ~]# uname -r
3.10.0-957.1.3.el7.x86_64
[root@test-node ~]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core) 
#修改yum安装保存rpm包
 vim /etc/yum.conf
修改:
keepcache=1

集群部署所需要的包下载

在test-node上进行操作,需要安装docker-ce,keepalived,以及k8s组件:kubelet,kubectl,kubeadm
配置相关的yum源:

#docker 安装
yum install -y yum-utils   device-mapper-persistent-data   lvm2  bash-completion
yum-config-manager     --add-repo     https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce  docker-ce-cli containerd.io -y
#k8s相关安装
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
repo_gpgcheck=0
EOF
#若想选择安装指定的版本,可以yum list kubelet --showduplicate查找对应版本
yum install -y kubelet  kubeadm kubectl    ##这样是安装的最新版本v1.20.2

同时k8s集群启动需要docker image,所以我们需要在本地机器上将相关的镜像下载之后,传到我们的服务器上

#启动docker
mkdir -p /etc/docker
cat <<EOF >/etc/docker/daemon.json
{
  "bridge": "none",
  "iptables": false,
  "exec-opts":
    [
      "native.cgroupdriver=systemd"
    ],
  "data-root": "/opt/docker",
  "live-restore": true,
  "log-driver": "json-file",
  "log-opts":
    {
      "max-size": "100m"
    },
  "registry-mirrors":
    [
      "https://lje6zxpk.mirror.aliyuncs.com",
      "https://lms7sxqp.mirror.aliyuncs.com",
      "https://registry.docker-cn.com"
    ]
}
EOF
systemctl --enable now  docker

#使用aliyun的镜像站拉取镜像,通过脚本的方式进行拉取
vim images.sh
#!/bin/bash
url=registry.cn-hangzhou.aliyuncs.com/google_containers
version=v1.20.2
images=(`kubeadm config images list --kubernetes-version=$version|awk -F '/' '{print $2}'`)
for imagename in ${images[@]} ; do
  docker pull $url/$imagename
  docker tag $url/$imagename k8s.gcr.io/$imagename
  docker rmi -f $url/$imagename
done

#执行结束后,查看相关的镜像:
docker images
REPOSITORY                           TAG           IMAGE ID       CREATED         SIZE
k8s.gcr.io/kube-proxy                v1.20.2       43154ddb57a8   2 weeks ago     118MB
k8s.gcr.io/kube-apiserver            v1.20.2       a8c2fdb8bf76   2 weeks ago     122MB
k8s.gcr.io/kube-controller-manager   v1.20.2       a27166429d98   2 weeks ago     116MB
k8s.gcr.io/kube-scheduler            v1.20.2       ed2c44fbdd78   2 weeks ago     46.4MB
k8s.gcr.io/etcd                      3.4.13-0      0369cf4303ff   5 months ago    253MB
k8s.gcr.io/coredns                   1.7.0         bfe3a36ebd25   7 months ago    45.2MB
k8s.gcr.io/pause                     3.2           80d28bedfe5d   11 months ago   683kB
#在test-node上起一个单节点的k8s
kubeadm --init
# 同时需要下载相关的flannel的网络镜像
#flannel的配置文件需要在github上自己找一下,https://github.com/coreos/flannel/tree/master/Documentation
kubectl apply -f kube-flannel.yml

将下载好的yum 包,以及docker images 都打包,传到相关的服务器

#打包yum包
cd /var/cache/
tar zcvf yum.tar.gz yum
#打包docker镜像(一定要使用tag的方式进行打包,若用id 进行打包,导出的时候tag信息是空)
docker save -o kube-proxy.tar k8s.gcr.io/kube-proxy:v1.20.2
docker save -o kube-apiserver.tar k8s.gcr.io/kube-apiserver:v1.20.2
docker save -o kube-controller-manager.tar kube-controller-manager:v1.20.2
docker save -o kube-controller-manager.tar k8s.gcr.io/kube-controller-manager:v1.20.2
docker save -o kube-scheduler.tar k8s.gcr.io/kube-scheduler:v1.20.2
docker save -o flannel.tar quay.io/coreos/flannel:v0.13.1-rc1
#打包镜像
tar zcvf images.tar.gz images

将yum.tar.gz 和images.tar.gz 传到相关的服务器上

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容