Kubernetes Pod内でのコマンドと引数の使用
こんにちは、読者の皆さん!この記事は、異なるシナリオでKubernetesポッドでのコマンドと引数の使用について解説しています。より良い理解のために、さまざまなシナリオを取り上げています。
もしマネージドなKubernetesホスティングサービスをお探しの場合は、成長を目指したシンプルなマネージドKubernetesサービスをご覧ください。
では、始めましょう!! 🙂
コマンドと引数の使用-プロセスの実行
Kubernetes Pod内でアプリケーションが実行されると言うとき、実際にはコンテナが包まれてPodとして提供されることを意味しています。
コンテナは、必要な依存関係とコマンドをまとめたもので、Podの内部に配置されます。Podの作成時に、コンテナ内で実行されるコマンドと引数を定義することができます。
通常、カスタムフォームで定義するコマンドと引数は、ベースのコンテナイメージのデフォルトのコマンドと引数を上書きします。
このトピックの文脈において、私たちはアプリケーションポッドとして実行されるコンテナのコマンドと引数を作成および定義する方法について取り扱います。
Kubernetes Pod のコマンドと引数を定義してください。
引数を含んだコンテナ内の引数を定義するために、コマンドフィールドを使用できます。コマンドを定義すると同時に、そのコマンドに渡す必要がある引数が必要になります。argsフィールドを使って、これらの引数をコマンドに渡すことができます。
以下の例では、環境変数KUBECONFIGの値を引数としてコンテナにprintenvコマンドを渡し、それを出力させました。
例:ポッド.YAML
例:ポッドのYAML
apiVersion: v1
kind: Pod
metadata:
name: demo-cmd
spec:
containers:
- name: cmd-arg-demo
image: debian
command: ["printenv"]
args: ["KUBECONFIG"]
restartPolicy: OnFailure
以上のファイルを適用して、Podを作成しましょう。
kubectl apply -f pod.yaml
Podを作成すると、コマンドの実行結果を確認するために、そのPodと特定のコンテナのログを取得することができます。
kubectl logs -f demo-cmd
出力:
出力は、コマンドの実行に対する値を返します。つまり、値としてKUBECONFIGファイルのパスを表示します。
/home/.kube
環境変数を使用して引数を定義する。
バリエーションとして、環境変数を使って引数の値をコマンドに渡すこともできます。以下のコードセクションを見てみましょう。
サンプルコード
env:
- name: data
value: "002234-welcome-message"
command: ["/bin/data"]
args: ["$(data)"]
上記のコードブロックを使用することで、引数の値を環境変数を使って渡すことができます。ここでは、引数の値を環境変数として指定された値を持つ変数dataの形式でコマンドに渡します。
環境変数以外にも、ConfigMapやSecretという形式で値を解析することもできます。
2. シェル内でコマンドを実行する
時々、複数のコマンドをまとめて実行したいときは、実行のためにコンテナ内でシェルが動作している必要があります。
このことは、実行時に仮想シェルを実行することで実現できます。
同じことについて、以下に示すように、Pod内で指定されたすべてのコマンドをシェルで実行するためのコマンドを定義します。
command: ["/bin/sh"]
args: ["-c", "while true; do echo Welcome to JournalDev; sleep 100;done"]
ここでは、この例でPodに対してシェルを使用して複数のコマンドを同時に実行するBASHスクリプトを実行するように指示しました。
結論
これにより、このトピックの終わりに近づきました。もし質問があれば、コメント欄に自由に書いてください。
DockerとKubernetesに関連する他の質問については、お気軽にご連絡ください。お待ちしております。
それまで、学びを楽しんでください!:)