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だとあんまり使わないが、テストなどいじる時のアドホックな変更によい。