
kube-system
ポッドとアプリケーションの (xyz-system
名前空間) ポッドを含む k3s クラスターがあります。
kube-system pod/calico-node-xxxx
kube-system pod/calico-kube-controllers-xxxxxx
kube-system pod/metrics-server-xxxxx
kube-system pod/local-path-provisioner-xxxxx
kube-system pod/coredns-xxxxx
xyz-system pod/my-app
xyz-system pod/my-app-mqtt
将来さらに多くのデプロイメントが作成される可能性があるため、デプロイメント名を指定せずに、これらすべてのポッド (kube-system + xyz-system) を 1 つのコマンド (または、デプロイメント名なしで 2 つの名前空間に対して 2 つのコマンド) でリセット/再起動します。そのため、多くのデプロイメント名を手動で指定することが困難になります。
デバッグ:kubectl -n kube-system rollout restart daemonsets,deployments
前述の コマンド でリンクポッドを再起動できますkube-system
。ただし、このコマンドを次のように変更するとxyz-namespace
、kubectl -n xyz-system rollout restart deployments
それぞれのポッドは再起動されず、監視時にwatch kubectl get all -A
実行状態のままになります。
これを実現する方法を誰か教えてもらえますか?
答え1
2 つのコマンドで:
kubectl delete pod -n kube-system --all
kubectl delete pod -n xyz-system --all
「1」の場合:
kubectl get pods -A | awk 'NR>1{print $1" "$2}' \
| while read ns pod; do \
kubectl delete -n $ns pod $pod; done
または:
kubectl get ns | awk 'NR>1{print $1}' \
| while read ns; do \
kubectl delete pod -n $ns --all; done
@jonas のコメントに賛成します。奇妙な質問のように思えますが、私が知る限り、実際の使用例はありません。