KubernetesのDeploymentの操作
#Kubernetes #Deployment
apply:マニフェストの内容を反映する
Manifestの適用 = yamlからcreate/updateするときは kubectl apply する。
code:shell
$ kubectl apply -f deployment.yaml
deployment.apps/nginx-deployment created
get:情報を表示する
applyした後の状態を確認する。
code:shell
## Deploymentの確認
$ kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 3/3 3 3 26m
## ReplicaSetもできている
$ kubectl get replicaset
NAME DESIRED CURRENT READY AGE
nginx-deployment-66b6c48dd5 3 3 3 26m
## Nodeの確認
$ kubectl get node
NAME STATUS ROLES AGE VERSION
docker-desktop Ready master 142m v1.19.3
## Podも立ち上がって、READY=1/1, STATUS=Runningなので正常に動いてる
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-deployment-66b6c48dd5-67w4g 1/1 Running 0 26m
nginx-deployment-66b6c48dd5-bcflf 1/1 Running 0 26m
nginx-deployment-66b6c48dd5-sqs78 1/1 Running 0 26m
これは kubectl [global-option] get [option] [resource] [resource-name] のsyntax。
-o を指定すると出力結果をカスタマイズできる。
-o yaml YAML形式で
-o json JSON形式で
-o jsonpath=xxx JsonPathで一部項目だけフィルタする
-o wide Docker psっぽく横に長いテーブルで
describe:より細かい情報を見る
code:shell
## Deploymentの細かい情報
$ kubectl describe deployment nginx-deployment
## Podの細かい情報
$ kubectl describe pod nginx-deployment-66b6c48dd5-bcflf
これで表示される「Events」に重要な情報が出てることが多い。
logs:コンテナのログを表示する
code:shell
## Pod単位
$ kubectl logs nginx-deployment-66b6c48dd5-bcflf
$ kubectl logs nginx-deployment-66b6c48dd5-bcflf -f
## Deployment単位の指定もできるらしい
$ kubectl logs deployment/nginx-deployment
$ kubectl logs deployment/nginx-deployment -f
基本はdocker logsと同じ。
-c でコンテナが指定できるのがdockerと違うところ。 
exec:コンテナ内で任意のコマンドを実行
code:shell
$ kubectl exec -it nginx-deployment-66b6c48dd5-bcflf bash
要はdocker execと同じ。
scale:レプリカ数を変えてスケールする
3 -> 1に減らす
code:shell
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-deployment-66b6c48dd5-67w4g 1/1 Running 0 80m
nginx-deployment-66b6c48dd5-bcflf 1/1 Running 0 80m
nginx-deployment-66b6c48dd5-sqs78 1/1 Running 0 80m
$ kubectl scale --replicas 1 deployment nginx-deployment
deployment.apps/nginx-deployment scaled
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-deployment-66b6c48dd5-67w4g 0/1 Terminating 0 80m
nginx-deployment-66b6c48dd5-bcflf 0/1 Terminating 0 80m
nginx-deployment-66b6c48dd5-sqs78 1/1 Running 0 80m
1 -> 10にふやす
code:shell
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-deployment-66b6c48dd5-sqs78 1/1 Running 0 80m
$ kubectl scale --replicas 10 deployment nginx-deployment
deployment.apps/nginx-deployment scaled
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-deployment-66b6c48dd5-6chxt 0/1 ContainerCreating 0 4s
nginx-deployment-66b6c48dd5-94pcc 0/1 ContainerCreating 0 4s
nginx-deployment-66b6c48dd5-dbmjr 1/1 Running 0 4s
nginx-deployment-66b6c48dd5-k2fh2 0/1 ContainerCreating 0 4s
nginx-deployment-66b6c48dd5-r6wdr 1/1 Running 0 4s
nginx-deployment-66b6c48dd5-sqs78 1/1 Running 0 81m
nginx-deployment-66b6c48dd5-sr4fd 0/1 ContainerCreating 0 4s
nginx-deployment-66b6c48dd5-thjrw 1/1 Running 0 4s
nginx-deployment-66b6c48dd5-tlr4s 0/1 ContainerCreating 0 4s
nginx-deployment-66b6c48dd5-xdd85 1/1 Running 0 4s
kubectl edit の詳細編集でもできるし、deployment.ymlを編集して apply しても同じ。
scale の方が便利コマンドみたいなもの。
IaaCだとあんまり使わないが、テストなどいじる時のアドホックな変更によい。