kubernetesのローカルミラーウェアハウスの作成


k 8 s導入アプリケーションでは、リモートミラーウェアハウスからミラーを引き出す必要があります.デフォルトのリモートミラーはdock hubで、このウェアハウスにアクセスするとタイムアウトや亀速の問題が発生するのは避けられません.では、何か解決策はありますか?
k 8 sローカルミラーを直接実行
直接k 8 sでローカルミラーを実行してコンテナを走らせることができます.ただし、前置条件は、すべてのnodeノードにこのミラーがあることを保証し、ミラープルポリシーをimagePullPolicy: Neverに指定すればよい.
1)ミラーをすべてのnodeノードに同期するには:
現在のミラーがspring-app:20200906-130657であると仮定し、tarパケットをミラーし、各nodeノードにscpする.
docker save spring-app:20200906-130657 -o spring-app-20200906-130657.tar
scp spring-app-20200906-130657.tar 192.168.6.131:/root/Desktop/docker-image/
scp spring-app-20200906-130657.tar 192.168.6.132:/root/Desktop/docker-image/

Node 1実行:
docker load < spring-app-20200906-130657.tar

Node 2実行:
docker load < spring-app-20200906-130657.tar

2)Deploymentリソースを変更するyamlファイル
      containers:
      - name: spring-app
        image: spring-app:20200906-130657
        imagePullPolicy: Never

最後にapplyコマンドを実行すればいいですが、もちろんこのスキームは下策にすぎません.同期するたびに時間を無駄にしませんか.
ローカルウェアハウスの作成
デフォルトの中央倉庫の代わりにローカル倉庫を使用し、配置するたびにミラーがローカル倉庫に送信され、k 8 sが特定のノードにスケジューリングされたときにローカル倉庫でミラーを引くと、より速くなります.
1)masterノードを選択してローカル倉庫を構築する:
docker run -d -p 5000:5000 --restart=always --name registry registry:2

2)ミラーリングのたびにregistryがlocalhost:5000であることを指定し、pushミラーリングを行うことができる.
docker push localhost:5000/spring-app:20200906-130657

3)すべてのnodeノードがdaemonを更新する.json、insecure-registriesをローカル倉庫アドレスとして指定します.ここのアドレスはmasterのipに記入してください.
echo '{ "insecure-registries":    ["192.168.6.128:5000"] }' > /etc/docker/daemon.json

4)デプロイメントフェーズで、Deploymentのyamlファイルを次のように指定します.
      containers:
      - name: spring-app
        image: 192.168.6.128:5000/spring-app:20200906-130657

ミラーリングのたびに、ミラーのフルネームはlocalhost:5000/spring-app:20200906-130657ですが、実際の配置はyamlが192.168.6.128:5000/spring-app:20200906-130657に指定します.k 8 sはデフォルトでnodeノードに適用されるため、nodeノードはローカルウェアハウスがインストールされていないため、実際のmasterのipを指定します.
これでローカルウェアハウスが作成されます.