1. 程式人生 > 其它 >k8s各版本離線部署附件下載方法

k8s各版本離線部署附件下載方法

k8s各版本離線部署附件下載方法

準備

隨便找一臺能連線外網得伺服器

映象包獲取

叢集部署所需要的kubelet、kubeadm、kubectl包下載

#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=1

repo_gpgcheck=1

gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

EOF

#若想選擇安裝指定的版本,可以yum list kubelet --showduplicate查詢對應版本,不指定則安裝當前最新版本

yum install -y kubelet-1.20.2 kubeadm-1.20.2 kubectl-1.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

#給指令碼賦許可權

chmod +x images.sh

#執行指令碼

./ images.sh

#執行結束後,檢視相關的映象:

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

將下載好的docker images 都打包,傳到相關的伺服器

#打包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

需要得映象就製作完成,複製到其他伺服器上通過如下命令載入即可

docker load < xxxx.tar

二進位制rpm獲取

在上一步【映象包獲取】第一小節獲取執行的“yum install -y kubelet-1.20.2 kubeadm-1.20.2 kubectl-1.20.2”命令,換成如下命令即可:

yum install --downloadonly --downloaddir ./rpm kubelet-1.20.2 kubeadm-1.20.2 kubectl-1.20.2

會在當前目錄下生成rpm目錄,裡面存放的既是需要的檔案

注:如果沒有cri-tools等檔案(本次測試的k8s1.20.2版本里沒有,測試的1.16/1.18/1.21都沒問題),執行該rpm建立k8s環境的時候可能會提示缺少cri-tools>1.13的類似錯誤,解決辦法:同樣方法,可以去獲取較老版本的rpm,如k8s1.16.0、k8s1.18.6等的rpm檔案,複製過來即可

二進位制檔案獲取完成,複製到其他伺服器待用

K8s一鍵安裝方式

可參考本人另一篇隨筆《離線搭建K8s1.21.2叢集》,該方案通用目前所有主流k8s版本部署