概要
自由に使えるKubernetes環境が欲しかったので、GKEを使って構築してみます。
手順に沿うだけであれば、15分程度でKubernetesクラスタを用意できます。
- gcloudをセットアップ
- GKEクラスタを構築
前提
- GCPの無料トライアルアカウントは作成済み
gcloudのセットアップ
インストール
今回はCLIで構築を行いたいため、gcloudをセットアップします。
gcloudのインストールはScoopで行います。
Scoopを知らない方は以下の記事を読んで、ぜひ試してみてください。Windowsユーザオススメです!
- Scoopを使ったWindows環境構築のススメ - Super!!
以下のコマンドを叩いて、インストール完了です。簡単ですね。
途中ブラウザが開きGoogleアカウントの認証を求められるので認証して下さい。
$ scoop bucket add extras
$ scoop install gcloud
初期設定
追加で、デフォルトのリージョン/ゾーンと、今回GKEのハンズオンを行うプロジェクトを作成して設定します。
#リージョンとゾーンの設定
$ gcloud config set compute/region asia-northeast1
$ gcloud config set compute/zone asia-northeast1-a
#プロジェクトの作成と設定
$ gcloud projects create gke-handson-1234
$ gcloud config set project gke-handson-1234
GKEクラスタの構築
GKEクラスタの作成
下記のコマンドだけでK8sクラスタが構築できるのは凄い
$ gcloud container clusters create gke-handson
詳細な設定は下記を参照。
項目が多すぎたので、今回はシンプルに作成…
- gcloud container clusters create
しかし、kubectlが無いとエラー。
WARNING: Accessing a Kubernetes Engine cluster requires the kubernetes commandline
client [kubectl]. To install, run
$ gcloud components install kubectl
kubectlのインストール
kubectlをインストールせずにクラスタを作成しようとすると怒られたので、先にインストールします。
下記コマンドでインストール。これもScoopで一発です。エラーログのコマンドでも構いません。(Scoop使いたいだけ)
$ scoop install kubectl
Kubernetes Engine APIを有効化
kubectlインストール後に再度クラスタを構築しようとした所、またエラーが発生。
プロジェクトでKubernetes Engine APIが有効じゃないよとのこと。
ERROR: (gcloud.container.clusters.create) ResponseError: code=403, message=Kubernetes Engine API is not enabled for this project. Please ensure it is enabled in Google Cloud Console and try again:
visit https://console.cloud.google.com/apis/api/container.googleapis.com/overview?project=gke-handson-1234 to do so.
指定されたURLにアクセスして、有効にする
をクリック。
しかし、課金が必要です
との表示が。。
無料枠だけ使える設定だと、GKEは使えなさそう。素直に課金を有効化して、APIを有効化する。
(プロジェクト作成時のオプションで事前に設定できるのかな?)
GKEクラスタの作成
エラー対応したところで改めて作成。3分ぐらいで完了。
$ gcloud container clusters create gke-handson
クラスタの確認
kubectlの接続先を確認
$ kubectl config current-context
gke_gke-handson-1234_asia-northeast1-a_gke-handson
クラスタの接続先とか自分で設定しなくても勝手に設定してくれてた。
1つのクラスタだけ管理してる分には良いけど、複数管理してる人にはお節介かも?
nodeを確認
クラスタ作成時に台数指定していなかったけど、デフォルトは3台みたい
$ kubectl get node
NAME STATUS ROLES AGE VERSION
gke-gke-handson-default-pool-0e9ea686-63w1 Ready <none> 9m45s v1.12.7-gke.10
gke-gke-handson-default-pool-0e9ea686-br52 Ready <none> 9m45s v1.12.7-gke.10
gke-gke-handson-default-pool-0e9ea686-d0wz Ready <none> 9m45s v1.12.7-gke.10
podを確認
基本サービスが起動してますね。
$ kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system event-exporter-v0.2.3-f9c896d75-tb2zc 2/2 Running 0 8m50s
kube-system fluentd-gcp-scaler-69d79984cb-nwpdv 1/1 Running 0 8m39s
kube-system fluentd-gcp-v3.2.0-h7zs4 2/2 Running 0 7m37s
kube-system fluentd-gcp-v3.2.0-tngff 2/2 Running 0 8m5s
kube-system fluentd-gcp-v3.2.0-wr2t8 2/2 Running 0 7m57s
kube-system heapster-v1.6.0-beta.1-6fc8df6cb8-dkkqz 3/3 Running 0 8m12s
kube-system kube-dns-autoscaler-76fcd5f658-pxwpt 1/1 Running 0 8m29s
kube-system kube-dns-b46cc9485-8pq76 4/4 Running 0 8m51s
kube-system kube-dns-b46cc9485-zm25h 4/4 Running 0 8m20s
kube-system kube-proxy-gke-gke-handson-default-pool-0e9ea686-63w1 1/1 Running 0 8m37s
kube-system kube-proxy-gke-gke-handson-default-pool-0e9ea686-br52 1/1 Running 0 8m37s
kube-system kube-proxy-gke-gke-handson-default-pool-0e9ea686-d0wz 1/1 Running 0 8m35s
kube-system l7-default-backend-6f8697844f-94zkg 1/1 Running 0 8m52s
kube-system metrics-server-v0.3.1-5b4d6d8d98-zw7hk 2/2 Running 0 8m14s
kube-system prometheus-to-sd-j66jz 1/1 Running 0 8m37s
kube-system prometheus-to-sd-mfz8d 1/1 Running 0 8m37s
kube-system prometheus-to-sd-pbb22 1/1 Running 0 8m37s
クラスタの削除
勉強用なので、忘れず削除します。
$ gcloud container clusters delete gke-handson
所感
- 無料枠の範囲であればお金もかからず、かつ簡単に構築もできて、初学者のK8sの勉強に最適ですね。Google神…
- 次回は簡単にmanifestを色々書いたり、helmを使ったり、GitOpsを試してみます。