Рубрики
Uncategorized

Быстрое руководство о том, как расширить kubectl с плагинами?

Kubectl Что такое плагин? Зачем писать плагин? Перезапустите POD Как написать … Теги с Куберовщиками, дежоптом, Opensource.

Kubernetes Primer (8 частей серии)

  • kubectl
  • Что такое плагин?
  • Зачем писать плагин?
    • Перезапустите стручок
  • Как написать плагин?
  • Демонстрация
  • Примечания
  • Показать вашу поддержку

kubectl

kubectl это интерфейс командной строки (CLI), используемый для взаимодействия с Кубернаны кластер. С помощью KUBECTL вы можете выполнить следующие операции на кластере Kubernetes:

  • Развернуть и управлять контейнерным приложением.
  • Подключитесь к нескольким кластерам Kubernetes.
  • Получите информацию о кластере Kubernetes.
  • Многое другое…

Посетить здесь Для более подробной информации на Kubectl.

Что такое плагин?

  • Плагин KUBECTL является автономным исполняемым файлом, используемым для улучшения функциональности Kubectl с новыми подкомандами.
  • С помощью плагинов вы можете добавить новые функции для Kubectl согласно вашему требованию.

Зачем писать плагин?

Для создания сложного применения случая с использованием существующих команд KUBECTL. Давайте понять это со следующим применением:

Перезапустите стручок

Чтобы перезапустить Подпирать Вы можете использовать следующие методы:

Метод 1:

  • Получить имя POD, используя следующую команду:
kubectl get pods
  • Удалите POD, используя следующую команду:
kubectl delete pod 

Способ 2:

  • Получить Развертывание Имя, используя следующую команду:
kubectl get deployment
  • Скаливайте реплику до нуля, используя следующую команду:
kubectl scale --replicas=0 deploy/
  • Расширяйте реплику к одному, используя следующую команду:
kubectl scale --replicas=1 deploy/

Примечание: Оба метода действительны только в том случае, если POD создается через развертывание.

В обоих способах перезапустить POD, вы должны выполнить несколько команд Kubectl. Но вы можете добиться того же, используя одну команду? Ответ да. Через плагины вы можете завернуть вышеуказанные команды kubectl в одну команду. Например, вы можете иметь команду, как KUBECTL RESTART POD NGINX где nginx это название развертывания.

Как написать плагин?

Давайте понять весь процесс процесса за шагом, написав плагин для Перезапустите стручок Используйте корпус.

  1. Создайте файл под названием kubectl-restart-pod.sh Используя следующую команду:
touch kubectl-restart-pod.sh
  1. Добавьте следующий контент в kubectl-restart-pod.sh файл:
#!/bin/bash

# Logging script execution start
echo "-------------------------"

DEPLOYMENT=$1
NAMESPACE=default

if [ ! -z $2 ]; then
 if [ $2 == "-n" ]; then
    NAMESPACE=$3
  fi
fi


# Logging name of the Deployment
echo "Deployment: $DEPLOYMENT"

# Logging name of the Namespace
echo "Namespace: $NAMESPACE"

# Retrieving Deployment
DEPLOYMENT_DETAILS={}

{
 DEPLOYMENT_DETAILS=$(kubectl get deploy $DEPLOYMENT -o json -n $NAMESPACE)
} || {
 echo "-------------------------"
 exit 1
}

# Retrieving the current replicas
CURRENT_REPLICAS=$(echo $DEPLOYMENT_DETAILS | jq .spec.replicas)

# Retrieving the labels
LABELS=$(echo $DEPLOYMENT_DETAILS | jq .spec.selector.matchLabels)
LABEL=$(echo $LABELS | jq -r 'to_entries|map("\(.key)=\(.value|tostring)")|.[0]')

# Scaling down the replicas
echo "Scaling down the replicas to 0"
kubectl scale --replicas=0 deploy/$DEPLOYMENT -n $NAMESPACE

while true; do

    PODS_COUNT=$(kubectl get po -l $LABEL -n $NAMESPACE -o json | jq '.items | length')

    if [ $PODS_COUNT == 0 ]; then
        break
    else
        printf "."
        sleep 5
    fi

done

# Scaling up the replicas
echo ""
echo "Scaling up replicas to $CURRENT_REPLICAS"
kubectl scale --replicas=$CURRENT_REPLICAS deploy/$DEPLOYMENT -n $NAMESPACE

while true; do

    INDEX=0
    RUNNING_COUNT=0
    PODS=$(kubectl get po -l $LABEL -n $NAMESPACE -o json | jq .items)

    while [ $INDEX -lt $CURRENT_REPLICAS ]; do
        PHASE=$(echo $PODS | jq -r --arg index $INDEX '.[$index | tonumber].status.phase')

        if [ $PHASE == "Running" ]; then
            RUNNING_COUNT=$((RUNNING_COUNT + 1))
        fi

        INDEX=$((INDEX + 1))
    done

    if [ $RUNNING_COUNT == $CURRENT_REPLICAS ]; then
        break
    else
        printf "."
        sleep 5
    fi

done

# Logging script execution end
echo ""
echo "-------------------------"

Обратитесь к исходному коду здесь Отказ

  1. Сделать kubectl-restart-pod.sh Файл исполняемый с помощью следующей команды:
chmod +x kubectl-restart-pod.sh
  1. Двигаться kubectl-restart-pod.sh Файл к /usr/local/bin каталог, используя следующую команду:
mv kubectl-restart-pod.sh /usr/local/bin/kubectl-restart-pod

Демонстрация

  • Установить JQ На машине рабочей станции, где вы можете получить доступ к Кубернаны кластер. Посетить здесь для шагов для установки JQ.

  • Перечислите все доступные плагины, используя следующую команду:

kubectl plugin list

Kubectl-Restart-Pod Плагин должен перечислить на выходе.

  • Создать пространство имен Демо Используя следующую команду:
kubectl create ns demo
  • Развертывание nginx Приложение на кластере Kubernetes, используя следующую команду:
kubectl create deploy nginx --image=nginx:latest -n demo
  • Проверьте состояние POD NGINX, используя следующую команду:
kubectl get po -n demo

nginx Стручок должен быть в Бег состояние.

  • Перезапустите POD NGINX, используя следующую команду:
kubectl restart pod nginx -n demo

Примечания

  • В качестве предварительного условия, у вас должен быть установлен Kubectl CLI на вашей машине рабочей станции, где вы можете получить доступ к Кубернаны кластер. Посетить здесь Для шагов для установки Kubectl CLI.
  • Название файла исполняемого файла Plugin STANDALONE должна начать с kubectl- Например kubectl-restart-pod.sh
  • Вы не можете переопределить существующую команду kubectl с помощью плагинов, например, вы не можете создать плагин kubectl-delete-pod Отказ Если вы создаете такой плагин, то он будет игнорироваться при запуске Kubectl Удалить POD команда.

Показать вашу поддержку

  • Купи мне кофе Если вам нравится контент и найти его полезным.
  • Сообщить о проблеме здесь Если вы найдете ошибку или хотите улучшить контент.

Kubernetes Primer (8 частей серии)

Оригинал: «https://dev.to/sagarjadhv23/a-quick-guide-on-how-to-extend-kubectl-with-plugins-2j2a»