Я развернул кластер elasticsearch на K8S с помощью этой команды helm install elasticsearch elastic/elasticsearch.

Я вижу, что под работает:

$ kubectl get pods
NAME                             READY   STATUS    RESTARTS   AGE
elasticsearch-master-0           0/1     Running   0          4m30s
kibana-kibana-5697fc485b-qtzzl   0/1     Running   0          130m

Сервис тоже выглядит неплохо:

$ kubectl get services
NAME                            TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE
elasticsearch-master            ClusterIP   10.105.59.248   <none>        9200/TCP,9300/TCP   4m50s
elasticsearch-master-headless   ClusterIP   None            <none>        9200/TCP,9300/TCP   4m50s
kibana-kibana                   ClusterIP   10.104.31.124   <none>        5601/TCP            6d7h
kubernetes                      ClusterIP   10.96.0.1       <none>        443/TCP             10d

Но для elasticsearch нет deployment:

$ kubectl get deployments
NAME            READY   UP-TO-DATE   AVAILABLE   AGE
kibana-kibana   0/1     1            0           6d7h

Я хотел бы перезапустить модуль elasticsearch, и я выполнил поиск, который люди говорят использовать {{X0} }, чтобы завершить работу модуля. Но нет развертывания для кластера elasticsearch. В этом случае, как я могу перезапустить elasticsearch pod?

3
Joey Yi Zhao 5 Дек 2020 в 14:31

2 ответа

Лучший ответ

Elasticsearch-master-0 поднимается с ресурсом statefulsets.apps в k8s.

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

kubectl delete pods elasticsearch-master-0
0
SAEED mohassel 5 Дек 2020 в 12:09

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

$ kubectl get pods
NAME    READY  STATUS   RESTARTS  AGE
busybox  1/1   Running     0      30s

Теперь я попробую отредактировать конфигурацию работающего модуля:

kubectl edit pod busybox

Эта команда откроет данные конфигурации в редактируемом режиме, я просто перейду в раздел спецификаций и скажу, что просто обновлю имя изображения, как показано ниже:
Ранее:

spec:
  containers:
  - command:
    - sleep 1000
    image: busybox
    imagePullPolicy: Always

После обновления имени изображения с busybox до busybox: latest :
Просто введите i, чтобы войти в режим вставки и внести изменения, а затем ESC и: wq так же, как мы используем редактор vi / vim.

spec:
  containers:
  - command:
    - sleep 1000
    image: busybox:latest
    imagePullPolicy: Always

Результат должен быть:

$ kubectl edit pod busybox
pod/busybox edited

Теперь, чтобы увидеть изменения, вы можете просто ввести следующую команду для просмотра событий:

$ kubectl describe pod busybox

В событиях вы можете увидеть: Определение контейнера busybox изменено, будет перезапущен

Вы можете проверить счетчик перезапусков:

$ kubectl get pods
 NAME    READY  STATUS   RESTARTS  AGE
busybox   1/1   Running     1      14m

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

1
Arbaaz 5 Дек 2020 в 15:05