シンプルなpod / deploymentをコマンドラインで作る手順
目的
シンプルなpod / deploymentをコマンドラインで作る手順を整理する。複雑なことをしたいときは-o yaml
オプションでYAMLファイルに書き出して編集し、kubectl create -f 作成したYAMLファイル名
*1したほうがやりやすいことが多い。
バージョン
Kubernetesの1.18で確認。
master $ kubectl version Client Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.0", GitCommit:"9e991415386e4cf155a24b1da15becaa390438d8", GitTreeState:"clean", BuildDate:"2020-03-25T14:58:59Z", GoVersion:"go1.13.8", Compiler:"gc", Platform:"linux/amd64"} Server Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.0", GitCommit:"9e991415386e4cf155a24b1da15becaa390438d8", GitTreeState:"clean", BuildDate:"2020-03-25T14:50:46Z", GoVersion:"go1.13.8", Compiler:"gc", Platform:"linux/amd64"}
kubectl runコマンド
普通にkubectl run ポッド名 --image=イメージ名
でPodを作成できる。これも以前のバージョンではエラーが出たような気がする*2
master $ kubectl run mypod --image=nginx pod/mypod created master $ kubectl get po NAME READY STATUS RESTARTS AGE mypod 1/1 Running 0 50s
--generator=run-pod/v1
をつけても同じことができる。ただし、将来的にdepricatedになる旨の警告が出る。
master $ kubectl run mypod-2 --generator=run-pod/v1 --image=nginx Flag --generator has been deprecated, has no effect and will be removed in the future. pod/mypod-2 created master $ kubectl get po NAME READY STATUS RESTARTS AGE mypod 1/1 Running 0 3m39s mypod-2 1/1 Running 0 88s
レプリカ数(deploymentに含まれるpodの数*3)をオプションで指定すれば自動でdeploymentにしてくれるかと思いきや、--replicasのオプション自体がないようである。
master $ kubectl run mydeploy --image=nginx --re(tabを押下) --record --recursive --requests --requests= --request-timeout --request-timeout= --restart --restart=
kubectl createコマンド
kubectl run
ではなくkubectl create
を使う方法もある。これで作れるリソースは下記の通りである。podは作れない。
master $ kubectl create(tabを押下) clusterrole configmap deployment namespace priorityclass role secret serviceaccount clusterrolebinding cronjob job poddisruptionbudget quota rolebinding service
いきなりレプリカ数が複数のdeploymentは作れないようである。
master $ kubectl create deployment mydeploy --image=nginx --replicas=2 Error: unknown flag: --replicas See 'kubectl create deployment --help' for usage.
したがって、レプリカ数が1のdeploymentを作成し、しかるのちにレプリカ数をkubectl scale
コマンドで増やす等の二段階のやり方になる。
master $ kubectl create deployment mydeploy --image=nginx deployment.apps/mydeploy created master $ kubectl describe deployments.apps mydeploy Name: mydeploy Namespace: default CreationTimestamp: Thu, 30 Jul 2020 03:32:06 +0000 Labels: app=mydeploy Annotations: deployment.kubernetes.io/revision: 1 Selector: app=mydeploy Replicas: 1 desired | 1 updated | 1 total | 1 available | 0 unavailable (略)
master $ kubectl scale deployment mydeploy --replicas=2 deployment.apps/mydeploy scaled master $ kubectl describe deployments.apps mydeploy Name: mydeploy Namespace: default CreationTimestamp: Thu, 30 Jul 2020 03:32:06 +0000 Labels: app=mydeploy Annotations: deployment.kubernetes.io/revision: 1 Selector: app=mydeploy Replicas: 2 desired | 2 updated | 2 total | 1 available | 1 unavailable
いきなりレプリカ数が複数のdeploymentを作る方法だが、kubectl Cheat Sheet | Kubernetes を見ても特になさそうである。
まとめ
- podを作成する:kubectl run pod名 --image=イメージ名
- deploymentを作成する:kubectl create deployment deployment名 --image=イメージ名
ほとんどのリソースはkubectl create
で作れそうなので、podだけrunで作る、と覚えておけばよさそう。