在我們從阿里雲上下載好Kubeadm的時候,我們需要去對其初始化
kubeadm init --kubernetes-version=v1.21.1 --image-repository=registry.aliyuncs.com/google_containers --pod-network-cidr=172.16.0.0/16 --apiserver-advertise-address=192.168.29.200
參數:
--kubernetes-version=v1.21.1 :指定初始化的kubernetes版本,不指定則默認更新最新版的。如果下載的是舊版本的kubeadm版本的話,需要指定
如果不指定會報版本異常
參數:--image-repository=registry.aliyuncs.com/google_containers :由於kubeadm的初始化需要去國外的k8s.gcr.io倉庫下拉取鏡像,但是國內並不能訪問到該倉庫,
所以我們需要添加該參數指定遠程倉庫為國內的阿里雲倉庫否則會報如下錯誤:
You can also perform this action in beforehand using 'kubeadm config images pull' error execution phase preflight: [preflight] Some fatal errors occurred: [ERROR ImagePull]: failed to pull image registry.aliyuncs.com/google_containers/coredns/coredns:v1.8.0: output:
Error response from daemon: pull access denied for registry.aliyuncs.com/google_containers/coredns/coredns, repository does not exist or may require 'docker login' , error: exit status 1 [preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...` To see the stack trace of this error execute with --v=5 or higher [root@master1 ~]# kubeadm config images pull failed to pull image "k8s.gcr.io/kube-apiserver:v1.21.1": output: Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) , error: exit status 1
總結:
在我們對Kubeadm進行初始化的時候,首先要注意指定版本號,如若指定版本號與本地不匹配的話會提示高低版本錯誤。
其次在初始化的時候Kubeadm會去國外倉庫k8s.io拉取對應版本號的所需鏡像。那由於某些原因,我們並無法訪問到國外的倉庫,
此時我們可以自己去國內鏡像倉庫(阿里雲等)拉取鏡像。然后初始化的時候就會優先加載匹配本地倉庫,當匹配到對應合適的鏡像即不用去訪問遠程倉庫。