Kubernetes - Hello World Walkthrough
CloudSDKとkubectlのインストール
Cloud SDKをインストールしてgloud
コマンドを使えるようにする。
$ gcloud --version
Google Cloud SDK 122.0.0
$ gcloud components install kubectl
Google Container RegistryにPush
$ export PROJECT_ID="******"
$ docker build -t gcr.io/$PROJECT_ID/test:v1 .
$ gcloud docker push gcr.io/$PROJECT_ID/test:v1
プロジェクトの課金を有効にしていないとこんなエラーメッセージが出る。
denied: Unable to create the repository, please check that you have access to do so.
Clusterの作成
$ gcloud config set core/project $PROJECT_ID
$ gcloud config set compute/zone asia-east1-b
$ gcloud container clusters create test-cluster
$ gcloud config set container/cluster test-cluster
Container Engine APIが有効になっていない場合はこうなる。 一度コンソールからContainer Engineを選ぶと、サービスの準備が始まって有効になる。
ERROR: (gcloud.container.clusters.create) ResponseError: code=503, message=Project **** is not fully initialized with the default service accounts. Please try again later.
Pod(とそのDeployment)の作成
$ kubectl run test-node --image=gcr.io/$PROJECT_ID/test:v1 --port=8080
$ kubectl get deployments
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
test-node 1 1 1 0 12s
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
test-node-1016577872-h7yiz 0/1 ContainerCreating 0 18s
Serviceを作成してクラスタの外からアクセスできるようにする
--type="LoadBalancer"
のServiceを作成すると外からアクセスできるようになる。
GKEでのService(ClusterIP/NodePort/LoadBalancer)とIngress - sambaiz-net
$ kubectl expose deployment test-node --type="LoadBalancer"
$ kubectl get services test-node
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
test-node 10.43.247.66 104.199.158.131 8080/TCP 1m
スケーリング
$ kubectl scale deployment test-node --replicas=4
$ kubectl get deployment
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
test-node 4 4 4 2 11m
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
test-node-1016577872-fso09 0/1 ContainerCreating 0 12s
test-node-1016577872-h7yiz 1/1 Running 0 11m
test-node-1016577872-sbdvl 1/1 Running 0 12s
test-node-1016577872-z9ji3 0/1 ContainerCreating 0 12s
更新
$ docker build -t gcr.io/$PROJECT_ID/test:v2 .
$ gcloud docker push gcr.io/$PROJECT_ID/test:v2
$ kubectl set image deployment/test-node test-node=gcr.io/$PROJECT_ID/test:v2
削除
$ kubectl delete service,deployment test-node
$ gcloud container clusters delete test-cluster
$ gcloud config unset container/cluster