どんな事でもお気軽にお問い合わせください
0120-803-656
24時間受付いたします

GCPのGKEを使ってKubernetesクラスタを作成してみる


技術営業部の大原です。

GCPのコンテナオーケストレーションツール「Google Kubernetes Engine(GKE)」を使って
ネットワーク負荷分散のクラスターを作成します。

はじめに

Google Kubernetes  Engine(GKE)には、
ネットワーク負荷分散をマネージドしてくれる機能があります。

ネットワーク負荷分散を使用するには、
サービス設定ファイルに type: LoadBalancer フィールドを含めるだけで、
GKE がサービスをセットアップしてネットワーク負荷分散を接続します。

参照:https://cloud.google.com/kubernetes-engine/

今回はGCPの管理マシンの [Cloud Shell] を起動して設定していきます。

利用リージョンの確認

最初にgcloudのデフォルト値・環境変数を設定します。
自分の [プロジェクト ID] を設定し、GCPの [ゾーン] と [リージョン] を選択する必要があります。

[リージョン] は下記コマンドで利用可能なGCPリージョンの一覧を確認できます。
ちなみに [ゾーン] は下記コマンドでも確認できないので、
[a~c] のいずれか任意のゾーンを選択し割り当ててください。

※ 下記のGCP公式サイトでも[リージョン] [ゾーン]の確認が可能です。
参照:https://cloud.google.com/compute/docs/regions-zones/regions-zones?hl=ja

 
gcloud compute regions list

今回は下記を例にして設定をおこないます。

[プロジェクト名]
ohara-test

[ゾーン名]
asia-northeast1-a ※ [a~c] のいずれか任意ゾーンを入力

[リージョン名]
asia-northeast1

gcloud のデフォルト値を設定

gcloud config set project [プロジェクト名]
gcloud config set compute/zone [ゾーン名]
gcloud config set compute/region [リージョン名]
gcloud config list

 環境変数の設定

export CLUSTER_NAME="httploadbalancer"
export ZONE="[ゾーン]" ※ 先のデフォルト値で設定した同じゾーン
export REGION="[リージョン]" ※ 先のデフォルト値で設定した同じリージョン

※注:[gcloud のデフォルト値] と [環境変数]で設定する値は
ゾーン と リージョンで同じ値にしないと Error になります。

GKEで Kubernetes クラスタを作成する

例では「3ノード(3インスタンス)」を起動してみます。
※ 起動には 3分~5分 ぐらいかかる場合があります。

 gcloud container clusters create networklb --num-nodes 3 

※ 起動成功です。

Google Compute Engine(GCE)のコントロールパネルを確認すると、
3個のノード(インスタンス)が作成され、
それぞれが Kubernetes ノードとして設定されています。

Kubernetes に nginx をデプロイする

 kubectl run nginx --image=nginx --replicas=3 

3個のポッドを起動するレプリケーションコントローラーが作成され、
それぞれのポッドでnginxコンテナが実行されます。

ポッドが動作していることを確認する

デプロイのステータスを確認します。
ポッドが異なるノードで実行されていることがわかります。

全てのポッドが実行中のステータスになったら、
nginx クラスタを外部サービスとして公開することができます。

 kubectl get pods -owide 

nginx を 外部に公開する

負荷分散トラフィックを 3個の nginx インスタンスに送る、
ネットワーク ロードバランサーを作成しています。

 kubectl expose deployment nginx --port=80 --target-port=80 \
--type=LoadBalancer

ネットワークロードバランサーのアドレスを確認

EXTERNAL-IP(グローバルIP)を確認します。

なお、下記コマンドを実行した直後は [pending]と出る場合があります。
その場合は、EXTERNAL-IPにIPアドレスが表示されるまで、下記コマンドを実行してください。
※ IPアドレスが表示されるまで、数分かかる場合があります。

 kubectl get service nginx

これで完了です!

EXTERNAL-IPに表示されているIPアドレスをブラウザで叩いて
下記の表示になれば成功です。

===============================================

nginx をアンデプロイする(削除していく)

今度はさっきに作成したKubernetesクラスタを削除する手順です。
GCE・GKEのコントロールパネルでの操作で削除することも可能ですが、
Cloud Shell から 削除してみます。

■ サービスの削除

 kubectl delete service nginx

■ レプリケーションコントローラーの削除

 kubectl delete deployment nginx


■ クラスターの削除

 gcloud container clusters delete networklb 

これで全て削除が完了しました。
GCEのコントロールパネルを確認しても、3個のインスタンスが削除されているはずです。

まとめ

■ Cloud ShellからGKEを使用し、3個のKubernetesクラスタを作成しました。

■ Kubernetesクラスタ上で、nginxをデプロイし外部公開しました。

■ Kubernetesクラスタを削除しました。


お問い合わせ 採用情報 エンジニアブログ
ISO27001認証
Contact PageTop
株式会社ビヨンド

© beyond Co., Ltd. All rights reserved.