Поиск по сайту:

Использование команд и аргументов в модуле Kubernetes


Здравствуйте, читатели! В этой статье рассказывается об использовании команд и аргументов в модуле Kubernetes с различными сценариями для лучшего понимания.

Итак, начнем!! :)

Использование команд и аргументов — выполнение процесса

Когда мы говорим, что приложение работает в поде Kubernetes, мы на самом деле имеем в виду, что контейнер упакован и представлен как под.

Контейнер включает в себя все необходимые зависимости и команды для совместного выполнения процессов и находится внутри пода. Во время создания пода мы можем определить команды и аргументы, которые будут выполняться внутри контейнера.

Обычно команда и аргументы, которые мы определяем в пользовательской форме, переопределяют команду и аргументы по умолчанию базового образа контейнера.

В контексте этой темы мы будем иметь дело со способами создания и определения команд и аргументов для контейнера, работающего как модуль приложения.

Определение команд и аргументов для модуля Kubernetes

Чтобы определить аргумент внутри контейнера, мы можем использовать поле команды. В тот момент, когда мы определяем команды, нам потребуются аргументы для передачи. Мы можем передать эти аргументы команде, используя поле args.

В приведенном ниже примере мы передали команду printenv контейнеру, чтобы он распечатал значения переменной среды KUBECONFIG в качестве аргумента.

Пример: pod.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

Как только мы создадим под, мы можем получить журналы пода и конкретного контейнера для поиска результата выполнения команды.

kubectl logs -f demo-cmd

Выход:

Вывод возвращает значение для выполнения команды. То есть в качестве значения отображается путь к файлу KUBECONFIG.

/home/.kube

1. Использование переменных env для определения аргументов

Как вариант, мы можем использовать переменные окружения для передачи значений аргументов командам. Давайте посмотрим на приведенный ниже раздел кода:

Пример: пример кода

env:
- name: data
  value: "002234-welcome-message"
command: ["/bin/data"]
args: ["$(data)"]

Используя приведенный выше блок кода, мы можем передать значение аргументов с помощью переменной среды. Здесь мы передаем значение аргумента команде в виде переменной с именем data, значение которой указывается как переменная среды.

Помимо переменных среды, мы также можем аналогичным образом анализировать значение в форме секрета.

2. Запуск команд в оболочке

Иногда, когда мы хотим выполнить сразу несколько команд, нам потребуется оболочка, которая будет запущена внутри контейнера для выполнения.

Этого можно добиться, запустив виртуальную оболочку во время выполнения.

Для того же мы определяем команду для запуска всех указанных команд в поде в оболочке, как показано ниже:

command: ["/bin/sh"]
args: ["-c", "while true; do echo Welcome to JournalDev; sleep 100;done"]

Здесь, в этом примере, мы дали поду указание использовать оболочку для запуска сценария BASH, выполняющего несколько команд в целом, например выполнение цикла while.

Заключение

На этом мы подошли к концу данной темы. Не стесняйтесь комментировать ниже, если у вас возникнут какие-либо вопросы.

Если у вас есть дополнительные вопросы, связанные с Docker и Kubernetes, оставайтесь с нами.

А пока удачного обучения! :)