Carpe Diem

備忘録

kubectl run --generator run-pod/v1 が使えなくなっていた

背景

Kubernetes上でサクッと動作検証でPodを立てたい時に

kubectl run \
  --generator run-pod/v1 \
  --namespace $NAMESPACE \
  --image google/cloud-sdk:alpine \
  --rm -it gcloud-test

とやりますが、今実行すると以下のようにエラーになります。

error: unknown flag: --generator

これの対応方法です。

環境

  • kubectl --client v1.24.1

理由

github.com

のPRで削除されたためです。なのでこのPRが入ったバージョン以降(v1.18~)は使えなくなっています。

対応

基本

単純に--generator run-pod/v1を削れば良いだけです。

$ kubectl run \
  --namespace $K8S_NAMESPACE \
  --image google/cloud-sdk:alpine \
  --rm -it gcloud-test

以前は--generator run-pod/v1を指定しないとDeploymentが作成されましたが、現在はPodのみになっています。

$ kubectl get po
NAME      READY   STATUS    RESTARTS   AGE
wi-test   1/1     Running   0          10s
$ kubectl get deploy
No resources found in default namespace.

--serviceaccountも使えなくなる

1.21では--serviceaccount=xxxも使えなくなっていました。

github.com

なので使いたい場合は--overridesで直接書き換える感じにします。

kubectl run \
  --namespace $K8S_NAMESPACE \
  --overrides='{ "spec": { "serviceAccount": "$KSA_NAME" }  }' \
  --image google/cloud-sdk:alpine \
  --rm -it gcloud-test

まとめ

最新版ではkubectl run --generator run-pod/v1が使えなくなっていたのでその対応方法を説明しました。