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
это название развертывания.
Как написать плагин?
Давайте понять весь процесс процесса за шагом, написав плагин для Перезапустите стручок Используйте корпус.
- Создайте файл под названием
kubectl-restart-pod.sh
Используя следующую команду:
touch kubectl-restart-pod.sh
- Добавьте следующий контент в
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 "-------------------------"
Обратитесь к исходному коду здесь Отказ
- Сделать
kubectl-restart-pod.sh
Файл исполняемый с помощью следующей команды:
chmod +x kubectl-restart-pod.sh
- Двигаться
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»