kubectlをちょっと便利にするスニペット集
kubectlをちょっぴり便利にするためのコマンドを掲載していきます。
kubectl with HEREDOC
コピーアンドペーストで簡易にマニフェストを実行したいなどの用途で利用してください。
cat <<EOF | kubectl apply -f -
ここにYAMLファイルを記述する
複数行記述できます
EOF
注1)ヒアドキュメント終了符号は任意のものを用いることができます。変更する場合は「EOF」(2箇所)を置き換えてください。
curl即時実行(都度Pod破棄)
疎通確認等の目的で単発でcurlを実行したい、だけどPodの管理(破棄)はしたくないといった用途で利用してください。
kubectl run curl --image=curlimages/curl -n <TARGET_NAMESPACE> -it --rm -- curl -o - <URL>
注1)「-o」オプションで「」の結果を標準出力にリダイレクトしています。オプションはお好みで。
注2)「--rm」オプションによって実行後Podが削除されます。間を置かず本スニペットを連続実行すると下記のようなエラーが出ることがあります。これはPod削除が間に合わないためです。連続実行する場合は素直にPod内でcurlコマンドを実行しましょう。
Error from server (AlreadyExists): pods "curl" already exists
Pod内でcurl実行(ログアウト後Pod破棄)
切り分け等で連続的にcurlを実行したい、だけどPodの管理(破棄)はしたくないといった用途で利用してください。
kubectl run curl --image=curlimages/curl -n <TARGET_NAMESPACE> -it --rm -- /bin/sh
curl -o - <URL1> #例1
curl -o - <URL2> #例2
注1)Podへのログイン後、例1・例2のように自身でcurl
コマンドを発行します。
注2)「exit
+enter
」「ctrl+d
(同時押し)」でシェルを抜けることでPodが破棄されます。
CentOS7環境をサクッと立てる
何かと揃っている環境をサクッと立てたいときはこちら(CentOS7)。
cat <<EOF | kubectl apply -n <TARGET_NAMESPACE> -f -
apiVersion: v1
kind: Pod
metadata:
name: centos7
spec:
restartPolicy: OnFailure
containers:
- name: centos7
image: centos:7
command:
- "/sbin/init"
EOF
/sbin/init
が使えない場合はsleepコマンドを組み合わせるとよいでしょう。
cat <<EOF | kubectl apply -n <TARGET_NAMESPACE> -f -
apiVersion: v1
kind: Pod
metadata:
name: awscli
spec:
restartPolicy: OnFailure
containers:
- name: awscli
image: amazon/aws-cli
command: [ "/bin/bash", "-c", "--" ]
args: [ "while true; do sleep 30; done;" ]
EOF
作成後、下記コマンドでPodにログインします。
kubectl exec -it centos7 -n <TARGET_NAMESPACE> -- /bin/bash
以上