Kubernetes k 8 s引き抜きミラー失敗最も簡単で最も完璧な解決方法[ERROR ImagePull]:failed to pull image k 8 s.gcr.io/kube-apiserver
に質問
国内のネットの原因のため、
完全なエラー・ログは次のとおりです.
k 8 sをダウンロードするからだ.gcr.ioのdockerミラーですが、国内では繋がりませんhttps://k8s.gcr.io/v2/.
他にも、VMware仮想マシンを使用してKubernetesを構築したMasterとWorkerノードの最終チュートリアル(1)の準備作業を参照してください.詳細な解決手順があります.次に本題に入ります.
解決策
アリクラウドミラーの使用
kubeadm initを実行するときにアリクラウドミラーのパラメータ
もし問題があれば、次の複雑な方法を使ってもいいです.
DockerHubの他の倉庫から引き出す
ネット上で半日捜索して、多くの人は他の倉庫から1つ1つ引き出して更に改名すると言って、しかしこれらの教程の倉庫の名称は異なって、ある教程はすでにとても古くて、倉庫は何年も更新していないで、ここは直接漁を教えて、自分でどのように倉庫を探すかを学びます.名前を変えるのに疲れたので、スクリプトを書くことができます.
プロセスは次のとおりです.
まず、次のコマンドを使用して、必要なdockerミラー名を取得します.
結果は次のとおりです.
まず、どこで引き出すべきかを見て、docker hubに行って、どこにkube-proxyなどのコンポーネントがあるかを探してdockerhub検索に入ることができます.https://hub.docker.com/search?q=kube-proxy&type=imageは最近の更新順で、結果は以下のように、ダウンロード回数10 k+を発見することができ、更新も頻繁な倉庫:
次に、スクリプトの作成を開始します.
そして実行権限を付与
実行:
実行中にミラーを引き出し、完了後、
ある場合は、この倉庫がcorelabと呼ばれている場合、vimコマンドを使用して実行可能ファイルを新規作成します.
コンテンツの追加:
そして実行権限を付与
実行:
これで大丈夫だと思います
結果
さらに
国内のネットの原因のため、
kubeadm init
は動かないことができて、1カードは30分で、それからこのような問題を報告します:[ERROR ImagePull]:failed to pull image k 8 s.gcr.io/kube-apiserver:v1.18.5: 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) 完全なエラー・ログは次のとおりです.
root@ubuntu:/home/c# kubeadm init
W0709 04:14:45.954974 70230 configset.go:202] WARNING: kubeadm cannot validate component configs for API groups [kubelet.config.k8s.io kubeproxy.config.k8s.io]
[init] Using Kubernetes version: v1.18.5
[preflight] Running pre-flight checks
[preflight] Pulling images required for setting up a Kubernetes cluster
[preflight] This might take a minute or two, depending on the speed of your internet connection
[preflight] 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 k8s.gcr.io/kube-apiserver:v1.18.5: 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
[ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-controller-manager:v1.18.5: 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
[ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-scheduler:v1.18.5: 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
[ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-proxy:v1.18.5: 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
[ERROR ImagePull]: failed to pull image k8s.gcr.io/pause:3.2: 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
[ERROR ImagePull]: failed to pull image k8s.gcr.io/etcd:3.4.3-0: 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
[ERROR ImagePull]: failed to pull image k8s.gcr.io/coredns:1.6.7: 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
[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
k 8 sをダウンロードするからだ.gcr.ioのdockerミラーですが、国内では繋がりませんhttps://k8s.gcr.io/v2/.
他にも、VMware仮想マシンを使用してKubernetesを構築したMasterとWorkerノードの最終チュートリアル(1)の準備作業を参照してください.詳細な解決手順があります.次に本題に入ります.
解決策
アリクラウドミラーの使用
kubeadm initを実行するときにアリクラウドミラーのパラメータ
--image-repository=registry.aliyuncs.com/google_containers
を加えると、以下のようになります:(バージョンは自分の必要なものに変更されます)kubeadm init --image-repository=registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16 --kubernetes-version=v1.18.5
もし問題があれば、次の複雑な方法を使ってもいいです.
DockerHubの他の倉庫から引き出す
ネット上で半日捜索して、多くの人は他の倉庫から1つ1つ引き出して更に改名すると言って、しかしこれらの教程の倉庫の名称は異なって、ある教程はすでにとても古くて、倉庫は何年も更新していないで、ここは直接漁を教えて、自分でどのように倉庫を探すかを学びます.名前を変えるのに疲れたので、スクリプトを書くことができます.
プロセスは次のとおりです.
まず、次のコマンドを使用して、必要なdockerミラー名を取得します.
kubeadm config images list
結果は次のとおりです.
k8s.gcr.io/kube-apiserver:v1.18.5
k8s.gcr.io/kube-controller-manager:v1.18.5
k8s.gcr.io/kube-scheduler:v1.18.5
k8s.gcr.io/kube-proxy:v1.18.5
k8s.gcr.io/pause:3.2
k8s.gcr.io/etcd:3.4.3-0
k8s.gcr.io/coredns:1.6.7
まず、どこで引き出すべきかを見て、docker hubに行って、どこにkube-proxyなどのコンポーネントがあるかを探してdockerhub検索に入ることができます.https://hub.docker.com/search?q=kube-proxy&type=imageは最近の更新順で、結果は以下のように、ダウンロード回数10 k+を発見することができ、更新も頻繁な倉庫:
次に、スクリプトの作成を開始します.
vim pull_k8s_images.sh
set -o errexit
set -o nounset
set -o pipefail
##
KUBE_VERSION=v1.18.5
KUBE_PAUSE_VERSION=3.2
ETCD_VERSION=3.4.3-0
DNS_VERSION=1.6.7
GCR_URL=k8s.gcr.io
##
DOCKERHUB_URL=gotok8s
##
images=(
kube-proxy:${KUBE_VERSION}
kube-scheduler:${KUBE_VERSION}
kube-controller-manager:${KUBE_VERSION}
kube-apiserver:${KUBE_VERSION}
pause:${KUBE_PAUSE_VERSION}
etcd:${ETCD_VERSION}
coredns:${DNS_VERSION}
)
##
for imageName in ${images[@]} ; do
docker pull $DOCKERHUB_URL/$imageName
docker tag $DOCKERHUB_URL/$imageName $GCR_URL/$imageName
docker rmi $DOCKERHUB_URL/$imageName
done
そして実行権限を付与
chmod +x ./pull_k8s_images.sh
実行:
./pull_k8s_images.sh
実行中にミラーを引き出し、完了後、
docker images
コマンドを使用してすべてのミラーを表示します.以下のようにします.ミラーがまだ取り外していない場合、例えば私が最初に使ったのはgotok 8 s倉庫ではなく、別の倉庫ですが、最新のetcdとcorednsは入っていません.だから、この2つは取り外していません.では、倉庫を探します.直接etcdを検索して、倉庫に入ってからTagをクリックして、あなたの必要なバージョンがあるかどうかを見て、以下の図:ある場合は、この倉庫がcorelabと呼ばれている場合、vimコマンドを使用して実行可能ファイルを新規作成します.
vim pull_k8s_images2.sh
コンテンツの追加:
set -o errexit
set -o nounset
set -o pipefail
##
ETCD_VERSION=3.4.3-0
DNS_VERSION=1.6.7
GCR_URL=k8s.gcr.io
##
DOCKERHUB_URL=corelab
##
images=(
etcd:${ETCD_VERSION}
coredns:${DNS_VERSION}
)
for imageName in ${images[@]} ; do
docker pull $DOCKERHUB_URL/$imageName
docker tag $DOCKERHUB_URL/$imageName $GCR_URL/$imageName
docker rmi $DOCKERHUB_URL/$imageName
done
そして実行権限を付与
chmod +x ./pull_k8s_images2.sh
実行:
./pull_k8s_images2.sh
これで大丈夫だと思います
結果
さらに
kubeadm init
を行い、今回は何の問題もありません(他の問題があれば、VMware仮想マシンを使用してKubernetesを構築するMasterとWorkerノードの最も完全なチュートリアル(1)の準備作業を参照してください.詳細な解決手順があります.)