1つのコマンド解決kubeadmを使用してkubernetesをk 8 sからインストール.gcr.io引き抜きミラーリングに失敗した問題

4447 ワード

の原因となる

kubernetesのインストール時にk8s.gcr.ioからミラーを引く必要があるため、このサイトはわが国に遮断され、国内で正常にアクセスできず、kubernetesの正常なインストールができなかった.
ここでは、Dockerの公式デフォルトミラープラットフォームからミラーを引き出し、tagを再ダイヤルする方法を紹介することによって、k8s.gcr.ioへのアクセスを迂回する.

ソリューション

kubeadm config images listを実行することによって、プルする必要があるミラーリストを取得し、sedを介して実行する必要があるコマンドにフォーマットする.
コマンドは次のとおりです.
kubeadm config images list
kubeadm config images list 2>/dev/null | sed 's/k8s.gcr.io/docker pull mirrorgcrio/g' | sudo sh
kubeadm config images list 2>/dev/null | sed 's/k8s.gcr.io\(.*\)/docker tag mirrorgcrio\1 k8s.gcr.io\1/g' | sudo sh
kubeadm config images list 2>/dev/null | sed 's/k8s.gcr.io/docker image rm mirrorgcrio/g' | sudo sh

コマンド機能


ここで、1行目のコマンドは、情報を印刷するためのものであり、主に2〜4行目のコマンドを用いて必要なコマンドを実行する.
  • kubeadm config images list 2>/dev/null | sed 's/k8s.gcr.io/docker pull mirrorgcrio/g'
  • kubeadm config images list 2>/dev/null | sed 's/k8s.gcr.io\(.*\)/docker tag mirrorgcrio\1 k8s.gcr.io\1/g'
  • kubeadm config images list 2>/dev/null | sed 's/k8s.gcr.io/docker image rm mirrorgcrio/g'

  • まず、コマンド1によりミラープルコマンドを生成する。

    core@localhost ~ $ kubeadm config images list 2>/dev/null | sed 's/k8s.gcr.io/docker pull mirrorgcrio/g'
    docker pull mirrorgcrio/kube-apiserver:v1.17.4
    docker pull mirrorgcrio/kube-controller-manager:v1.17.4
    docker pull mirrorgcrio/kube-scheduler:v1.17.4
    docker pull mirrorgcrio/kube-proxy:v1.17.4
    docker pull mirrorgcrio/pause:3.1
    docker pull mirrorgcrio/etcd:3.4.3-0
    docker pull mirrorgcrio/coredns:1.6.5
    

    上記出力を実行してhttps://hub.docker.com//mirrorgcrio/xxxからk8s.gcr.io対応のミラーを引き抜く.

    次に、コマンド2によりdocker tagコマンドを生成してミラーの名前を変更します。

    core@localhost ~ $ kubeadm config images list 2>/dev/null | sed 's/k8s.gcr.io\(.*\)/docker tag mirrorgcrio\1 k8s.gcr.io\1/g'
    docker tag mirrorgcrio/kube-apiserver:v1.17.4 k8s.gcr.io/kube-apiserver:v1.17.4
    docker tag mirrorgcrio/kube-controller-manager:v1.17.4 k8s.gcr.io/kube-controller-manager:v1.17.4
    docker tag mirrorgcrio/kube-scheduler:v1.17.4 k8s.gcr.io/kube-scheduler:v1.17.4
    docker tag mirrorgcrio/kube-proxy:v1.17.4 k8s.gcr.io/kube-proxy:v1.17.4
    docker tag mirrorgcrio/pause:3.1 k8s.gcr.io/pause:3.1
    docker tag mirrorgcrio/etcd:3.4.3-0 k8s.gcr.io/etcd:3.4.3-0
    docker tag mirrorgcrio/coredns:1.6.5 k8s.gcr.io/coredns:1.6.5
    

    上記の出力を実行すると、https://hub.docker.com//mirrorgcrio/xxxのミラーは、docker tagを打つことによってk8s.gcr.ioのフォーマットに名前が変更されます.

    最後に、コマンド3によりdocker image rmコマンドを生成して元のミラーを削除する。

    core@localhost ~ $ kubeadm config images list 2>/dev/null | sed 's/k8s.gcr.io/docker image rm mirrorgcrio/g'
    docker image rm mirrorgcrio/kube-apiserver:v1.17.4
    docker image rm mirrorgcrio/kube-controller-manager:v1.17.4
    docker image rm mirrorgcrio/kube-scheduler:v1.17.4
    docker image rm mirrorgcrio/kube-proxy:v1.17.4
    docker image rm mirrorgcrio/pause:3.1
    docker image rm mirrorgcrio/etcd:3.4.3-0
    docker image rm mirrorgcrio/coredns:1.6.5
    

    上記の出力を実行すると、https://hub.docker.com//mirrorgcrio/xxxから引き出されたミラーが削除されます.

    ミラーの表示

    docker image lsを実行して、ミラーが正常にプルされたかどうかを確認します.
    core@localhost ~ $ docker image ls
    REPOSITORY                           TAG                 IMAGE ID            CREATED             SIZE
    k8s.gcr.io/kube-proxy                v1.17.4             6dec7cfde1e5        10 days ago         116MB
    k8s.gcr.io/kube-apiserver            v1.17.4             2e1ba57fe95a        10 days ago         171MB
    k8s.gcr.io/kube-controller-manager   v1.17.4             7f997fcf3e94        10 days ago         161MB
    k8s.gcr.io/kube-scheduler            v1.17.4             5db16c1c7aff        10 days ago         94.4MB
    k8s.gcr.io/coredns                   1.6.5               70f311871ae1        4 months ago        41.6MB
    k8s.gcr.io/etcd                      3.4.3-0             303ce5db0e90        4 months ago        288MB
    k8s.gcr.io/pause                     3.1                 da86e6ba6ca1        2 years ago         742kB
    

    ここまで、ミラーは引き抜きに成功し、kubernetesのインストールを継続することができます.