web-dev-qa-db-ja.com

kubectlを使用してポッドでbashコマンドを実行しますか?

私の質問は簡単です。

ポッドでbashコマンドを実行する方法は? 1つのbashコマンドですべてをやりたいですか?

[root@master ~]# kubectl exec -it --namespace="tools" mongo-pod --bash -c "mongo"
Error: unknown flag: --bash

そのため、コマンドは単に無視されます。

[root@master ~]# kubectl exec -it --namespace="tools" mongo-pod bash -c "mongo"
root@mongo-deployment-78c87cb84-jkgxx:/# 

とか、ぐらい。

[root@master ~]# kubectl exec -it --namespace="tools" mongo-pod bash mongo
Defaulting container name to mongo.
Use 'kubectl describe pod/mongo-deployment-78c87cb84-jkgxx -n tools' to see all of the containers in this pod.
/usr/bin/mongo: /usr/bin/mongo: cannot execute binary file
command terminated with exit code 126

それが単なるバッシュであれば、それは確かに動作します。しかし、すぐにmongo Shellに飛び込みたいです。

解決策を見つけましたが、うまくいきません。これが今可能かどうか教えてください? kubernetesポッドで複数のコマンドを実行する(またはシェルスクリプトから)

ありがとう。

20
JDev

二重ダッシュ記号「-」は、コマンドに渡す引数をkubectl引数から分離するために使用されます。正しい方法は次のとおりです。

kubectl exec -it --namespace=tools mongo-pod -- bash -c "mongo"

「-」と「bash」の間のスペースを忘れました。

複数のコマンドを実行するには、次のことが必要になる場合があります。

  • スクリプトを作成し、ポッドにボリュームとしてマウントして実行する

  • スクリプトでサイドコンテナを起動して実行するには

49
Nicola Ben

ポッドのシェルに入るには、次のようなものを使用します。

kubectl exec -it --namespace develop pod-name bash

次に、ポッド内で必要なコマンドを実行できます(例:ping)

ping www.google.com
1
Anthony Piñero