Рейтинг:1

Внедренный модуль агента хранилища не запускается, сервер API и хранилище не взаимодействуют

флаг vn

У меня есть локальный кластер kubernetes, использующий kind. Это кластер с одним узлом.

В этом кластере я следую это руководство по настройке Vault и vault-agent-injector.

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

kubectl получить стручки:

ПРОСТРАНСТВО ИМЕН ИМЯ ГОТОВ СТАТУС ПЕРЕЗАПУСКА ВОЗРАСТ
dnstools по умолчанию 0/1 Завершено 0 22 мес.
по умолчанию orgchart-7457f8489d-hxtqt 1/1 Выполняется 0 26 м
по умолчанию orgchart-798cbc6c76-4kzrl 0/2 Инициализация: 0/1 0 25 м
по умолчанию Vault-0 1/1 Бег 0 28м
по умолчанию vault-agent-injector-79d479cf7d-kz67q 1/1 Работает 0 28 м
kube-system coredns-558bd4d5db-gnxl7 1/1 Бег 0 45м
kube-system coredns-558bd4d5db-ph95m 1/1 Бег 0 45м
kube-system etcd-kind-control-plane 1/1 Бег 0 45м
kube-system kindnet-bjvzg 1/1 Бег 0 45м
kube-system kube-apiserver-kind-control-plane 1/1 Бег 0 45м
kube-system kube-controller-manager-kind-control-plane 1/1 Бег 0 45м
kube-system kube-proxy-v5545 1/1 Работает 0 45м
kube-system kube-scheduler-kind-control-plane 1/1 Бег 0 45м
local-path-storage local-path-provisioner-547f784dff-mp79j 1/1 Работает 0 45 м

kubectl получить svc:

    ТИП ПРОСТРАНСТВА ИМЕН КЛАСТЕР-IP ВНЕШНИЙ-IP ПОРТ(Ы) ВОЗРАСТ
по умолчанию kubernetes ClusterIP 10.96.0.1 <нет> 443/TCP 44 м
хранилище по умолчанию ClusterIP 10.96.42.180 <нет> 8200/TCP,8201/TCP 27m
по умолчанию vault-agent-injector-svc ClusterIP 10.96.156.79 <нет> 443/TCP 27m
по умолчанию Vault-internal ClusterIP None <none> 8200/TCP,8201/TCP 27m
kube-system kube-dns ClusterIP 10.96.0.10 <нет> 53/UDP,53/TCP,9153/TCP 44m

kubectl описывает организацию:

Имя: orgchart-798cbc6c76-4kzrl
Пространство имен: по умолчанию
Приоритет: 0
Узел: вид-контроль-плоскость/172.18.0.2
Время начала: пт, 20 августа 2021 г., 13:07:13 +0000
Ярлыки: app=orgchart
              под-шаблон-хэш = 798cbc6c76
Аннотации: vault.hashicorp.com/agent-inject: true
              vault.hashicorp.com/agent-inject-secret-database-config.txt: internal/data/database/config
              vault.hashicorp.com/agent-inject-status: введен
              vault.hashicorp.com/role: внутреннее приложение
Статус: ожидание
IP: 10.244.0.12
IP-адреса:
  IP: 10.244.0.12
Контролируется: ReplicaSet/orgchart-798cbc6c76
Инициальные контейнеры:
  агент-хранилище-инициализация:
    Идентификатор контейнера: containerd://d7dc0c9d089a1e59d85ac16a422a5195f5e7026a5c98a004d5e6a6a576900119
    Изображение: hashicorp/vault:1.8.0
    Идентификатор изображения: docker.io/hashicorp/vault@sha256:54d12f84c0bfbed57d2d2e1d89099540c5ccb4e6c3b2b0a123b82dab12c99e75
    Порт: <нет>
    Хост-порт: <нет>
    Команда:
      /бин/ш
      -ec
    Аргументы:
      эхо ${VAULT_CONFIG?} | base64 -d > /home/vault/config.json && агент хранилища -config=/home/vault/config.json
    Состояние: работает
      Начато: Пт, 20 Авг 2021 13:07:14 +0000
    Готово: Ложь
    Количество перезапусков: 0
    Ограничения:
      процессор: 500 м
      память: 128Ми
    Запросы:
      процессор: 250 м
      память: 64Ми
    Среда:
      VAULT_LOG_LEVEL: информация
      VAULT_LOG_FORMAT: стандартный
      VAULT_CONFIG: <УДАЛЕНО>
    Маунты:
      /home/vault из home-init (rw)
      /var/run/secrets/kubernetes.io/serviceaccount из kube-api-access-lx52m (ro)
      /vault/секреты из секретов хранилища (rw)
Контейнеры:
  оргсхема:
    Идентификатор контейнера:
    Изображение: jweissig/приложение:0.0.1
    Идентификатор изображения:
    Порт: <нет>
    Хост-порт: <нет>
    Состояние: Ожидание
      Причина: Инициализация пода
    Готово: Ложь
    Количество перезапусков: 0
    Среда: <нет>
    Маунты:
      /var/run/secrets/kubernetes.io/serviceaccount из kube-api-access-lx52m (ro)
      /vault/секреты из секретов хранилища (rw)
  агент хранилища:
    Идентификатор контейнера:
    Изображение: hashicorp/vault:1.8.0
    Идентификатор изображения:
    Порт: <нет>
    Хост-порт: <нет>
    Команда:
      /бин/ш
      -ec
    Аргументы:
      эхо ${VAULT_CONFIG?} | base64 -d > /home/vault/config.json && агент хранилища -config=/home/vault/config.json
    Состояние: Ожидание
      Причина: Инициализация пода
    Готово: Ложь
    Количество перезапусков: 0
    Ограничения:
      процессор: 500 м
      память: 128Ми
    Запросы:
      процессор: 250 м
      память: 64Ми
    Среда:
      VAULT_LOG_LEVEL: информация
      VAULT_LOG_FORMAT: стандартный
      VAULT_CONFIG: <УДАЛЕНО>
    Маунты:
      /home/хранилище из дома-коляски (rw)
      /var/run/secrets/kubernetes.io/serviceaccount из kube-api-access-lx52m (ro)
      /vault/секреты из секретов хранилища (rw)
Условия:
  Тип Статус
  Инициализировано Ложь
  Готов Ложь
  ContainersReady False
  PodScheduled True
Объемы:
  куб-апи-доступ-lx52m:
    Тип: спроецированный (том, который содержит внедренные данные из нескольких источников)
    TokenExpirationSeconds: 3607
    ConfigMapName: kube-root-ca.crt
    ConfigMapOptional: <ноль>
    Нисходящий API: правда
  домашняя инициализация:
    Тип: EmptyDir (временный каталог, который разделяет время существования модуля)
    Среда: Память
    Ограничение размера: <не установлено>
  домашняя коляска:
    Тип: EmptyDir (временный каталог, который разделяет время существования модуля)
    Среда: Память
    Ограничение размера: <не установлено>
  секреты хранилища:
    Тип: EmptyDir (временный каталог, который разделяет время существования модуля)
    Среда: Память
    Ограничение размера: <не установлено>
Класс QoS: взрывоустойчивый
Селекторы узлов: <нет>
Допуски: node.kubernetes.io/not-ready:NoExecute op=Существует в течение 300 с.
                 node.kubernetes.io/unreachable:NoExecute op=Существует 300 с.
События:
  Тип Причина Возраст от сообщения
  ---- ------ ---- ---- -------
  Обычный Запланировано 26 минут Планировщик по умолчанию Успешно назначено default/orgchart-798cbc6c76-4kzrl для вида-контрольной плоскости
  Обычный Вытащенный 26-мегапиксельный kubelet Образ контейнера "hashicorp/vault:1.8.0" уже присутствует на машине
  Обычный Создан 26-метровый кублет Создан контейнер vault-agent-init
  Обычный Запущен 26-метровый kubelet Запущен контейнер vault-agent-init
  Предупреждение DNSConfigForming 53s (x25 over 26m) kubelet Превышены ограничения строки поиска, некоторые пути поиска пропущены, применяемая строка поиска: default.svc.cluster.local svc.cluster.local cluster.local <УДАЛЕНО> <УДАЛЕНО> < УДАЛЕНО>

Глядя в журналы apiserver, я вижу следующее сообщение:

E0820 13:03:55.315142 1 dispatcher.go:171] не удалось вызвать веб-перехватчик «vault.hashicorp.com»: сообщение «https://vault-agent-injector-svc.default.svc:443/mutate?timeout=10s» : набрать tcp 10.96.156.79:443: подключиться: нет маршрута к хосту

И глядя в логи vault-agent-injector я вижу следующее сообщение:

2021-08-20T13:03:55.887Z Обработчик [INFO]: запуск обработчика..
Прослушивание ":8080"...
2021-08-20T13:03:55.896Z [INFO] handler.auto-tls: создан CA
2021-08-20T13:03:55.899Z [INFO] handler.certwatcher: получен обновленный пакет сертификатов. Обновление сертификатов...
2021-08-20T13:05:55.808Z Обработчик [INFO]: получен запрос: Method=POST URL=/mutate?timeout=10s
2021-08-20T13:07:13.447Z Обработчик [INFO]: получен запрос: Method=POST URL=/mutate?timeout=10s
2021-08-20T13:10:16.613Z Обработчик [INFO]: получен запрос: Method=POST URL=/mutate?timeout=10s

Я настроил свой кластер так, чтобы он мог использовать MutatingAdmissionWebhooks:

вид: Кластер
apiVersion: kind.x-k8s.io/v1alpha4
узлы:
- роль: плоскость управления
  kubeadmConfigPatches:
  - |
    вид: инитконфигуратион
    узелРегистрация:
      kubeletExtraArgs:
        метки узлов: "вход-готовность = истина"
  - |
    тип: конфигурация кластера
    API-сервер:
        дополнительные аргументы:
          enable-admission-plugins: NodeRestriction, MutatingAdmissionWebhook, ValidatingAdmissionWebhook
  дополнительные сопоставления портов:
  - контейнерПорт: 80
    порт хоста: 8080
    протокол: TCP
  - контейнерПорт: 443
    порт хоста: 8443
    протокол: TCP
сети:
  apiServerAddress: "127.0.0.1"
  аписерверпорт: 443

Какие следующие шаги я могу предпринять, чтобы устранить проблему?

Я думаю, что это проблема с поиском DNS для vault-agent-injector-svc, но я не уверен, с чего начать.

Спасибо, Макс Сарджент

Ответить или комментировать

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