Почему при поиске имени с ошибками не удается найти командуasticsearch-master-headless в Kubernetes 1.16? - PullRequest
0 голосов
/ 15 марта 2020

Я пытаюсь запустить эластичный поиск на Kubernetes 1.16 с Helm 3 на GKE. Я знаю, что и 1.16 и 3 еще не поддерживаются. Я хочу подготовить PR, чтобы сделать его совместимым. Я использую рулевые диаграммы из https://github.com/elastic/helm-charts.

Если я использую исходную диаграмму 7.6.1, создание модуля завершается неудачей из-за create Pod elasticsearch-master-0 in StatefulSet elasticsearch-master failed error: pods "elasticsearch-master-0" is forbidden: unable to validate against any pod security policy: [spec.volumes[1]: Invalid value: "projected": projected volumes are not allowed to be used]. Поэтому я создал следующий патч:

diff --git a/elasticsearch/values.yaml b/elasticsearch/values.yaml
index 053c020..fd9c37b 100755
--- a/elasticsearch/values.yaml
+++ b/elasticsearch/values.yaml
@@ -107,6 +107,7 @@ podSecurityPolicy:
       - secret
       - configMap
       - persistentVolumeClaim
+      - projected

 persistence:
   enabled: true

С этим патчем на master / d9ccb5a и тегом 7.6.1 (пробовал оба) стручки быстро попадают в нездоровое состояние из-за failed to resolve host [elasticsearch-master-headless], вызванного java.net.UnknownHostException: elasticsearch-master-headless .

Я не понимаю, почему разрешение имен не работает, поскольку в 1.16 не внесено никаких изменений, которые изменяют разрешение имен с именами Kubernetes afaik. Если я попытаюсь пропинговать elasticsearch-master-headless из оболочки в модуле, начинающемся с kubectl exec, я тоже не смогу связаться с ним.

Я попытался связаться с сервером имен в /etc/resolv.conf с помощью telnet, потому что это позволяет указать указанный c порт:

[elasticsearch@elasticsearch-master-1 ~]$ cat /etc/resolv.conf
search default.svc.cluster.local svc.cluster.local cluster.local us-central1-a.c.myproject.internal c.myproject.internal google.internal
nameserver 10.23.240.10
options ndots:5
[elasticsearch@elasticsearch-master-1 ~]$ telnet 10.23.240.10
Trying 10.23.240.10...
^C
[elasticsearch@elasticsearch-master-1 ~]$ telnet 10.23.240.10 53
Trying 10.23.240.10...
telnet: connect to address 10.23.240.10: Connection refused

Я запутал идентификатор проекта с помощью myproject.

Патч уже предлагается объединить в апстрим с другими изменениями на https://github.com/elastic/helm-charts/pull/496.

Ответы [ 2 ]

1 голос
/ 15 марта 2020

Это вызвано сбоем модуля kube-dns из-за

F0315 20:01:02.464839 1 server.go:61] Failed to create a kubernetes client: open /var/run/secrets/kubernetes.io/serviceaccount/token: permission denied

Поскольку Kubernetes 1.16 доступен только в быстром канале GKE и является системным модулем, я считаю это ошибкой.

Я обновлю этот ответ, если найду энергию для сообщения об ошибке.

0 голосов
/ 15 марта 2020

Скорее всего, существует брандмауэр (firewalld), блокирующий 53 / udp, tcp, или проблема с модулем CoreDNS в кластере, в котором вы выполняете тест.

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