8
5

More than 3 years have passed since last update.

なるべくCLIでGKEクラスタを作成してみる

Last updated at Posted at 2019-05-25

概要

自由に使える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にアクセスして、有効にするをクリック。

image.png

しかし、課金が必要ですとの表示が。。
無料枠だけ使える設定だと、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を試してみます。
8
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
5