Монтируйте тома секретов с помощью драйвера CSI и поставщика хранилища в kubernetes, когда у модуля есть допуск и сходство.

У меня есть кластер kubernetes с двумя группами узлов в AWS. Один для спотовых инстансов, а другой для инстансов по запросу. Я установил Vault и драйвер CSI для управления секретами.

Когда я создаю это развертывание, все работает нормально, модули создаются, запускаются и секреты есть.

      apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: vault-test
  name: vault-test
  namespace: development
spec:
  replicas: 1
  selector:
    matchLabels:
      app: vault-test
  strategy: {}
  template:
    metadata:
      labels:
        app: vault-test
    spec:
      containers:
      - image: jweissig/app:0.0.1
        name: app
        envFrom:
        - secretRef:
            name: dev-secrets
        resources: {}
        volumeMounts:
        - name: secrets-store-inline
          mountPath: "/mnt/secrets"
          readOnly: true
      serviceAccountName: vault-sa
      volumes:
        - name: secrets-store-inline
          csi:
            driver: secrets-store.csi.k8s.io
            readOnly: true
            volumeAttributes:
              secretProviderClass: dev
status: {}

Но когда я добавляю nodeAffinity и допуски для создания модулей на спотовых машинах, модули остаются в состоянии ContainerCreating со следующей ошибкой:

Предупреждение FailedMount 10 м (x716 более 24 часов) kubelet MountVolume.SetUp не удалось выполнить для тома «secrets-store-inline»: ошибка rpc: code = Unknown desc = не удалось смонтировать объекты хранилища секретов для разработки модуля / имя модуля, ошибка: ошибка при подключении к провайдер "хранилище": провайдер не найден: провайдер "хранилище"

Я создал два приложения для проверки поведения хранилища, одно без допусков только для тестирования и настоящее, с допусками и nodeAffinity. И после множества тестов я понял, что проблема в том, где планируются модули, но я не понимаю, почему такое поведение

1 ответ

Проблема заключается в конфигурации драйвера хранилища CSI, который не работает на всех узлах из-за отсутствия файла . Я должен был добавитьtolerationsкDaemonSetпроявляется так, что естьPodво всех узлах, и таким образом все узлы знают, что такое хранилище.

Другие вопросы по тегам