(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Kubernetes】busyboxのDeployementを作成する

スポンサーリンク

はじめに

調査用の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を挟まないと起動が失敗する」事象が発生するのでメモとして残しておきました。
以上、ご参考になれば幸いです。