Может кто-нибудь уточнить, где можно указать KUBERNETES_SERVICE_HOST в azure AKS для других пространств имен? Kube-система верна, другое пространство имен нет - PullRequest
1 голос
/ 17 июня 2020

При развертывании контейнера в kube-системе вы можете увидеть fqdn используемого api мастерноды. При создании пространства имен и развертывании того же контейнера это служба kubernetes с внутренним IP-адресом для переменной среды KUBERNETES_SERVICE_HOST.

Мы не можем использовать kind: PodPreset в AKS, поэтому я не знаю другого способа, как установить эта переменная среды для новых модулей. Поды развертываются с помощью helm в этом пространстве имен, поэтому вы не можете установить эту переменную среды таким образом, чтобы helm использовал ее при развертывании.

Ответы [ 2 ]

0 голосов
/ 19 июня 2020

Контейнерная среда Kubernetes предоставляет несколько важных ресурсов для контейнеров, один из них:

  • Список всех служб, которые работали, когда Созданный контейнер доступен для этого контейнера как переменные среды. Эти переменные среды соответствуют синтаксису Docker ссылок.

Для службы с именем foo, которая сопоставляется с контейнером с именем bar , определены следующие переменные:

FOO_SERVICE_HOST=0.0.0.0 (IP-адрес службы foo)

FOO_SERVICE_PORT=65535 (порт службы foo)

  • XXX_SERVICE_PORT генерируется автоматически на основе сервисов, доступных для контейнера на момент его создания.

При развертывании контейнера в kube-системе вы можете увидеть fqdn используемого api мастерноды. При создании пространства имен и развертывании того же контейнера это служба kubernetes с внутренним IP-адресом для переменной среды KUBERNETES_SERVICE_HOST.

  • Он должен работать в обоих направлениях, потому что служба kubernetes.default является ретранслятором агента к главному API, взгляните на описание службы:
$ k describe svc kubernetes
Name:              kubernetes
Namespace:         default
Labels:            component=apiserver
                   provider=kubernetes
Annotations:       <none>
Selector:          <none>
Type:              ClusterIP
IP:                10.21.0.1
Port:              https  443/TCP
TargetPort:        443/TCP
Endpoints:         10.54.240.1:443
Session Affinity:  None
Events:            <none>

$ kubectl cluster-info
Kubernetes master is running at https://10.54.240.1
  • Конечная точка службы kubernetes.default является IP-адресом главного API, поэтому, если ваше развертывание не работает должным образом, у него может быть другая проблема под капотом.

Вы также можете следовать инструкциям, приведенным в ответе @djsly, и открыть проблему на пром-op github, проголосовать за podPreset чтобы стать доступным на AKS или даже поэкспериментировать с другими облачными провайдерами (например, GCP предлагает бесплатный уровень, чтобы вы могли попробовать).

Если у вас есть дополнительные вопросы, дайте нам знать.

0 голосов
/ 19 июня 2020

PodPreset действительно еще не поддерживается в AKS.

Я бы посоветовал вам проголосовать за следующий отзыв: https://feedback.azure.com/forums/914020-azure-kubernetes-service-aks/suggestions/35054089-support-podpreset-alpha-feature

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

https://github.com/helm/charts/tree/master/stable/prometheus-operator

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

...