У меня есть локальный кластер 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, но я не уверен, с чего начать.
Спасибо,
Макс Сарджент