はじめに
調査用のPodをKubernetesにて起動したい場合は以下のように起動でき
$ kubectl run busybox --image=busybox --image-pull-policy=IfNotPresent --restart=Never --tty -i If you don't see a command prompt, try pressing enter. / # hostname busybox / #
exitで抜ければ自動で停止します。
$ kubectl get pod NAME READY STATUS RESTARTS AGE busybox 0/1 Completed 0 50s
基本は上記で十分ですが、busyboxをDeploymentとして起動して管理したい場合の立ち上げ方を本記事では紹介します。
環境情報
kubectl v1.18.5
Deployment用YAML
以下のコマンドで作成したYAMLファイルに
$ kubectl create deployment busybox-dep --image=busybox --dry-run -o=yaml
以下を追記すれば
> imagePullPolicy: IfNotPresent
> command:
> - sleep
> - "9999"
busyboxのデプロイメントのYAMLになります。
apiVersion: apps/v1 kind: Deployment metadata: creationTimestamp: null labels: app: busybox-dep name: busybox-dep spec: replicas: 1 selector: matchLabels: app: busybox-dep strategy: {} template: metadata: creationTimestamp: null labels: app: busybox-dep spec: containers: - image: busybox imagePullPolicy: IfNotPresent command: - sleep - "9999" name: busybox resources: {} status: {}
以下、補足です。
補足
強制的にSleepを挟んでいるのはそれがないと
message: Back-off xx restarting failed container=busybox pod=... reason: CrashLoopBackOff
となりレプリカセットが停止を検知して起動と実行を繰り返してしまうからです。
Sleepの時間を短くすれば分かりますが時間が経つごとにRESTARTSの回数が増えていきます。
利用はPod名を入力して以下のように打ちたいコマンドを打てばいつものbusyboxとして利用できます。
$ kubectl exec -it busybox-dep-68b79c44d9-llb2m hostname busybox-dep-68b79c44d9-llb2m
終わりに
必要な場合のみに起動するPodだとは思いますが、Deploymentで動かそうとすると「Sleepを挟まないと起動が失敗する」事象が発生するのでメモとして残しておきました。
以上、ご参考になれば幸いです。