не могу удалить стручки в кубернетес - PullRequest
0 голосов
/ 21 ноября 2018

Я попытался установить dgraph (один сервер) с помощью kubernetes. Теперь все, что мне нужно, это удалить созданные модули.Я удалил его, используя kubectl delete pod-name, результат показывает «pod удален», но снова pod воссоздает сам себя, он продолжает реплицироваться.Мне нужны эти стручки из моего kubernetes.Что мне теперь делать?

Ответы [ 5 ]

0 голосов
/ 11 декабря 2018

Стручки в кубернете также зависят от его типа.Как

  • Контроллеры репликации
  • Наборы реплик
  • Statefulsets
  • Развертывания
  • Наборы демонов
  • Pod

Выполните kubectl describe pod <podname> и проверьте

apiVersion: apps/v1
kind: StatefulSet
metadata:

Теперь выполните kubectl get <pod-kind>
В конце удалите то же самое, и модуль также будет удален.

0 голосов
/ 27 ноября 2018

я столкнулся с той же проблемой.запустите команду "kubectl get deploy", вы получите соответствующее развертывание на вашем модуле.скопируйте его, а затем выполните команду "kubectl delete deploy xyz", затем проверьте.там не будет создавать новый модуль.

0 голосов
/ 21 ноября 2018

Как вы указали, вы создали dgraph сервер, используя этот https://raw.githubusercontent.com/dgraph-io/dgraph/master/contrib/config/kubernetes/dgraph-single.yaml, Так что просто используйте этот, чтобы удалить созданные вами ресурсы:

$ kubectl delete -f https://raw.githubusercontent.com/dgraph-io/dgraph/master/contrib/config/kubernetes/dgraph-single.yaml
0 голосов
/ 21 ноября 2018

Поскольку ответ @Shudipta Sharma, очевидно, является правильным способом удаления стручков.Я просто хотел бы убедиться, что автор поймет, почему это происходит.Причиной является «мышление» Kubernetes, в котором стручки считаются эфемерными, одноразовыми объектами.По мере того, как блоки приходят и уходят, StatefulSets - это один из способов обеспечения того, что определенное количество модулей с уникальными идентификаторами будет работать в любой момент времени.Достигнув файла yaml, который вы использовали для развертывания:

# This StatefulSet runs 1 pod with one Zero, one Alpha & one Ratel containers.
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: dgraph
spec:
  serviceName: "dgraph"
  replicas: 1

Развертывая его, вы в основном говорите, что хотите, чтобы Kubernetes всегда запускал 1 реплику этого Pod в любое время.Когда вы удаляете Pod, это условие больше не выполняется, поэтому после удаления появляется другой Pod, чтобы убедиться, что указанное выше условие будет выполнено.Способ, который предоставляет @Shudipta Sharma, - это просто удаление этого StatefulSet, так что у вас больше не будет желаемого состояния, которое будет следить за количеством запущенных модулей.

Подробнее об этом можно узнать в документации Kubernetes по адресу:

StatefulSets

Желаемое состояние кластера

Подробнее об объектах Kubernetes и разнице между ними

0 голосов
/ 21 ноября 2018

Вы можете выполнить постепенное удаление модуля с помощью следующей команды:

kubectl delete pods <pod>

Если вы хотите принудительно удалить модуль с помощью версии kubectl> = 1.5, выполните следующие действия:

kubectl delete pods <pod> --grace-period=0 --force

Если вы используете любую версию kubectl <= 1.4, вы должны опустить опцию --force и использовать: </p>

kubectl delete pods <pod> --grace-period=0

Если даже после этих команд модуль застрял в неизвестном состоянии, используйтеСледующая команда для удаления модуля из кластера:

kubectl patch pod <pod> -p '{"metadata":{"finalizers":null}}'
...