皆さん、Google Kubernetes Engineはお使いでしょうか?
今回は、それぞれにウェブサーバーが含まれた複数のコンテナを含む Google Kubernetes Engine クラスタを作成します。
また、クラスタの手前にロードバランサを配置してコンテンツを参照させます。

全体像

①Kubernetes Engine を使用して Kubernetes クラスタをプロビジョニングする。

②kubectl を使用して Docker コンテナをデプロイおよび管理する。

①Kubernetes Engine を使用して Kubernetes クラスタをプロビジョニングする。

まず、必要な API が有効であることを確認しましょう。

GCP Console のナビゲーション メニュー(ナビゲーション メニュー)で、[API とサービス] をクリックします。

有効になっている API のリストを下にスクロールして、次の API が両方とも有効になっていることを確認します。

Kubernetes Engine API
Container Registry API

API がない場合は、上部にある [API とサービスを有効化] をクリックします。
上記の API を名前で検索し、現在のプロジェクトでそれぞれを有効にします。

②kubectl を使用して Docker コンテナをデプロイおよび管理する。

Kubernetes Engine クラスタを開始する

GCP Console の右上のツールバーにある「Cloud Shell をアクティブにする」ボタンをクリックします。

[続行] をクリックします。

ゾーンを MY_ZONE という環境変数に配置します。Cloud Shell プロンプトで、次のコマンドを入力します。
今回は、私はus-central1-aで設定しています。任意のゾーンで実行してください。

$ export MY_ZONE=us-central1-a

Kubernetes Engine で管理されている Kubernetes クラスタを起動します。
このクラスタに (例) webfrontend という任意の名前を付けて、2 つのノードを実行するように構成します。

$ gcloud container clusters create webfrontend --zone $MY_ZONE --num-nodes 2

Kubernetes Engine によって仮想マシンがプロビジョニングされるため、クラスタの作成には数分かかります。

クラスタが作成されたら、kubectl version コマンドを使用して、インストール済みの Kubernetes のバージョンを確認します。

$ kubectl version

GCP Console で実行中のノードを表示します。
ナビゲーション メニュー(ナビゲーション メニュー)で、[Compute Engine] > [VM インスタンス] をクリックします。

Kubernetes クラスタを使用する準備が整いました。

コンテナを実行してデプロイする

Cloud Shell プロンプトで、nginx コンテナの単一インスタンスを起動します。

$ kubectl create deploy nginx --image=nginx:1.17.10

Kubernetes では、すべてのコンテナはポッドで実行されます。
kubectl create コマンドを使用すると、Kubernetes で、nginx コンテナを含む単一のポッドで構成された Deployment が作成されます。Kubernetes の Deployment は、ポッドが実行されているノード間で障害が発生した場合でも、指定した数のポッドを稼動状態に保ちます。このコマンドでは、デフォルトの数(1)の Pod が起動されました。

nginx コンテナを実行している Pod を表示します。

$ kubectl get pods

nginx コンテナをインターネットに公開します。

$ kubectl expose deployment nginx --port 80 --type LoadBalancer

Kubernetes によって、サービスと、パブリック IP アドレスが関連付けられた外部ロードバランサが作成されました。
この IP アドレスは、サービスの存続期間中は変更されません。そのパブリック IP アドレスへのネットワーク トラフィックは、サービスの背後にあるポッド(今回の場合は nginx ポッド)にルーティングされます。

新しいサービスを表示します。

$ kubectl get services

表示された外部 IP アドレスを使用して、nginx コンテナをリモートでテストしてアクセスすることができます。

Service の External-IP フィールドに入力されるまでに数秒かかる場合がありますので、少し待ちましょう。
このフィールドに入力されるまで何回か kubectl get services コマンドを再実行します。

新しいウェブブラウザ タブを開き、クラスタの外部 IP アドレスをアドレスバーに貼り付けます。
Nginx ブラウザのデフォルトのホームページが表示されます。

サービスで実行するポッドの数をスケールアップします。

$ kubectl scale deployment nginx --replicas 3

Deployment のスケールアップは、利用が拡大しているアプリケーションで使用できるリソースを増やす場合に役立ちます。

Kubernetes でポッドの数が更新されたことを確認します。

$ kubectl get pods

外部 IP アドレスが変更されていないことを確認します。

$ kubectl get services

クラスタの外部 IP アドレスを表示したウェブブラウザ タブに戻ります。
ページを更新して、nginx ウェブサーバーが応答していることを確認します。

これで、Kubernetes Engine で Kubernetes クラスタを構成、アプリケーションを含む複数の Pod をこのクラスタに配置し、アプリケーションの公開とスケーリングができました。

いかがだったでしょうか。
なんとな〜く雰囲気を掴めたかと思います。これを機にGoogle Cloudを更に使ってみませんか?楽しいですよ!w

元記事はこちら

https://qiita.com/namely_/items/65da8050a464333ccf98