Google Kubernetes Engineをちょっと動かしてみました
はじめに
Google Kubernetes Engineをちょっと動かしてみました。
内容としては@mihiratさんが書いたkubernetes初心者のための入門ハンズオン - Qiita の前半を辿ってみた作業ログです。@mihiratさんありがとうございました。
Google Kubernetes Engineはdockerコンテナをフルマネージドで実行できるサービスです。なんか巨大なデータの分散処理に使えないかなぁと思って調べてみてる所です。
参考にした資料
- kubernetes初心者のための入門ハンズオン - Qiita
- Google Kubernetes Engine | Google Cloud Platform
- Kubernetes Engine クイックスタート | Kubernetes Engine のドキュメント | Google Cloud Platform
作業ログ
セットアップ
- project作成
> gcloud projects create --name try-k8s No project id provided. Use [try-k8s-190412] as project id (Y/n)? y Create in progress for [https://cloudresourcemanager.googleapis.com/v1/projects/try-k8s-190412]. Waiting for [operations/pc.6812860857256074521] to finish...done.
> gcloud config set project try-k8s-190412 Updated property [core/project].
- clusters createしてみる➡エラー➡kubectlを入れないとダメ
> gcloud container clusters create k0 --zone asia-northeast1-a WARNING: Accessing a Kubernetes Engine cluster requires the kubernetes commandline client [kubectl]. To install, run $ gcloud components install kubectl ERROR: (gcloud.container.clusters.create) ResponseError: code=403, message=The Kubernetes Engine API is not enabled for project try-k8s-190412. Please ensure it is enabled in the Google Cloud Console at https://console.cloud.google.com/apis/api/container.googleapis.com/overview?project=try-k8s-190412 and try again.
- kubectlを入れる
> gcloud components install kubectl
- もう一度clusters create➡エラー➡consoleでk8sを有効化する必要がある
> gcloud container clusters create k0 --zone asia-northeast1-a ERROR: (gcloud.container.clusters.create) ResponseError: code=403, message=The Kubernetes Engine API is not enabled for project try-k8s-190412. Please ensure it is enabled in the Google Cloud Console at https://console.cloud.google.com/apis/api/container.googleapis.com/overview?project=try-k8s-190412 and try again.
表示されたURLを開いて[有効化]ボタンを押したが、同じページにリダイレクトされてしまう。
- 今回、この検証に使っているアカウントは課金を有効化していなかったからかも知れない。(未確認)
- 課金を有効化して、再び[有効化]ボタンを押した所、webにconsole画面が表示された。上手く行ったらしい。
もう一度clusters create➡できた。
- 数分くらいかかった気がする。
> gcloud container clusters create k0 --zone asia-northeast1-a Creating cluster k0...done. Created [https://container.googleapis.com/v1/projects/try-k8s-190412/zones/asia-northeast1-a/clusters/k0]. kubeconfig entry generated for k0. NAME LOCATION MASTER_VERSION MASTER_IP MACHINE_TYPE NODE_VERSION NUM_NODES STATUS k0 asia-northeast1-a 1.7.8-gke.0 35.200.97.160 n1-standard-1 1.7.8-gke.0 3 RUNNING
動かしてみる
- nginx起動➡一瞬で起動した…
> kubectl run nginx --image=nginx:1.11.3 deployment "nginx" created
- get podsでステータス確認。
> kubectl get pods NAME READY STATUS RESTARTS AGE nginx-1062973755-dcsqc 1/1 Running 0 1m
- 上記ではポート空いてないらしいので空ける。
- この1行でport80が空き、ロードバランシングされるらしい。
- え…簡単。
kubectl expose deployment nginx --port 80 --type LoadBalancer
- get servicesでステータス確認。
- serviceというのはpodより大きな粒度の管理単位です。
- おや? EXTERNAL-IPが
になっている。
> kubectl get services NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.43.240.1 <none> 443/TCP 11m nginx LoadBalancer 10.43.251.87 <pending> 80:32240/TCP 42s
- 数分後に再びget servicesしたらEXTERNAL-IP割り振られていた。
> kubectl get services NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.43.240.1 <none> 443/TCP 14m nginx LoadBalancer 10.43.251.87 35.200.7.89 80:32240/TCP 2m
アクセスしてみる
EXTERNAL-IPに表示されたIPにブラウザからアクセスしてみる。 ...出来てる。すごい
後片付け
- 消しておこう
> kubectl delete svc nginx service "nginx" deleted
> kubectl delete svc kubernetes service "kubernetes" deleted
- 消えた
> kubectl get services
No resources found.
今日はここまで