【大阪 / 横浜】インフラ / サーバーサイドエンジニア募集中!

【大阪 / 横浜】インフラ / サーバーサイドエンジニア募集中!

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【圧倒的 低コスト】Oracle Cloud 構築・運用保守・監視サービス

【圧倒的 低コスト】Oracle Cloud 構築・運用保守・監視サービス

【WordPress専用】高速 クラウド / サーバー『WebSpeed』

【WordPress専用】高速 クラウド / サーバー『WebSpeed』

【低コスト】Wasabi オブジェクトストレージ 構築・運用サービス

【低コスト】Wasabi オブジェクトストレージ 構築・運用サービス

【次世代】ゲーム専用データ分析エンジン『ThinkingEngine』

【次世代】ゲーム専用データ分析エンジン『ThinkingEngine』

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【SNSアプリ開発】LINE カスタムアプリ開発サービス

【SNSアプリ開発】LINE カスタムアプリ開発サービス

【ECアプリ開発】Shopify カスタムアプリ開発サービス

【ECアプリ開発】Shopify カスタムアプリ開発サービス

【音声アプリ開発】Twilio カスタムアプリ開発サービス

【音声アプリ開発】Twilio カスタムアプリ開発サービス

【グローバル対応】北米リージョン・クラウド / サーバー サポート

【グローバル対応】北米リージョン・クラウド / サーバー サポート

【取材記事】サーバーサイド・バックエンドエンジニアを募集中

【取材記事】サーバーサイド・バックエンドエンジニアを募集中

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

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クラスタを削除しました。

この記事がお役に立てば【 いいね 】のご協力をお願いいたします!
0
読み込み中...
0 票, 平均: 0.00 / 10
2,355
facebook twitter はてなブックマーク
【大阪 / 横浜】インフラエンジニア / サーバーサイドエンジニア 積極採用中!

【大阪 / 横浜】インフラエンジニア / サーバーサイドエンジニア 積極採用中!

この記事をかいた人

About the author

ohara

通信業界にて法人向けの NWサービス・OA機器・グループウェア などの IT製品 の導入を担当するセールスとしてキャリアをスタート。

その後、SIer系のデータセンター事業会社で、物理サーバー / ホスティングサービス の プリセールスエンジニア、SaaS型 の SFA / CRM・BtoB ECサービス など の カスタマーエンジニア を経て、現在のビヨンドへ入社。現在は毎日 Google検索 で インターネットの世界を徘徊してます。

所有資格:AWS Certified Cloud Practitioner(CLF)・簿記二級