私はk8を初めて使っています。私はここで少し問題に遭遇しています。kubectlで新しいポッドの名前を探す
はここで文脈だ: 私は一日一回crontask経由kubectl delete [podname]
を呼び出し、そしてK8Sはポッドを再作成するまで待って、そのポッド内のコンテナにログインし、シェルコマンドを実行する必要があります。
だから私は、展開を照会し、このような何かを得る:
[email protected]:~$ kubectl get pods
NAME READY STATUS RESTARTS AGE
firstpod-123456789-something 1/1 Running 570 2d
secondpod-http-backend-something 1/1 Running 597 2d
を、私は5分間隔でポッドを削除しますbashスクリプトを書きました。それは簡単な部分です。
kubectl delete firstpod-123456789-something
を呼び出し、k8sが新しいポッドを再作成するのを待つとします。新しいポッドには新しい名前がつきますfirstpod-[some random hash here]-something
問題は私のbashスクリプトでそのポッドの名前をキャプチャする必要があるので、そのポッドでuname -a
のようなコマンドを実行することができます。新しいポッドが稼働しており、うまく動作しています。
私はそれを検索し、kubectlドキュメントを読んでいますが、私はbashスクリプトでこれを行う簡単な方法はないと思いますか?ここでは、ポッド名を取得する唯一の方法はk8s API経由であると仮定していますか?
この時点でどのソリューションを使用してもうれしいです。 k8が新しいものを生み出すときに新しいポッドの名前を変更する方法があるのだろうか?特定のキーワードでgrepできますか?
egrepのようなものは、firstpod-[0-9]-something
のようなものではないので、これは単なる例です。多くのポッドにはさまざまな名前がありますが、それは単なる例です。
ありがとうございます!
POD=$(kubectl get pod -l app=my-app -o jsonpath="{.items[0].metadata.name}")
をし、そこにいくつかのコマンドを実行します。あなたは非常に簡単な展開のポッド名を取得することができた後
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx
spec:
template:
metadata:
labels:
app: my-app
spec:
containers:
- image: nginx
name: nginx
: