Google Container Egine (GKE) にデプロイするための Kubernetes サービスを開発しています。最近まで、私は Google Cloud Shell で Docker イメージを構築していましたが、Cloud Shell が実行される無料の VM インスタンスの全体的な負荷が複数docker build
の s とpush
es から明らかに高すぎるため、現在割り当て制限に達しています。これまでの私の経験では、約 1 週間ほど作業を続けた後、次のエラー メッセージが表示され、Cloud Shell が再び利用可能になるまで約 2 日間待たなければなりませんでした。
Service usage limits temporarily exceeded. Try connecting later.
docker build
s とpush
es を課金対象のマシン (GCE VM インスタンスまたは GKE クラスター ノード)に移行しようとしましたが、成功しませんでした:
GCE VM インスタンスでは、Docker は明らかにインストールされていません。(これも一理あります。)
GKE クラスタ ノードでは、Docker がインストールされており、イメージを (
sudo
)実行できますが、 ( の後でさえ)数秒後 (いくつかのレイヤをプッシュした後) に次のエラー メッセージが表示されて失敗します。docker build
docker push
gcloud docker
denied: Access denied
では、GKE 内の Docker イメージの持続可能な開発ワークフローとは何でしょうか? Docker を VM インスタンスにインストールする必要がありますか (そうしないことを望みます)、それとも他の場所にインストールする必要がありdocker build
ますdocker push
かkubectl create
? (私はローカル開発マシンとして MacBook を使用していますが、できることならそこに Docker をインストールしたくありません。つまり、クラウドで Docker イメージを構築することを好みます。)
更新次のように VM インスタンスにContainer-VM イメージを装備すると、docker build
成功しますが、docker push
以前の GKE クラスタ ノードと同じように失敗します (with denied: Access denied
):
gcloud compute images list \
--project google-containers \
--no-standard-images
gcloud compute instances create tmp \
--machine-type g1-small
--image container-vm-v20160321 \
--image-project google-containers
--zone europe-west1-d