Под статусом `CreateContainerConfigError` в кластере Minikube - PullRequest
0 голосов
/ 19 мая 2018

Я пытаюсь запустить службу Sonarqube, используя следующую таблицу управления .

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

Когда я выполняю helm install, а затем kubectl get pods, я вижу состояние MySQL pod как running, но состояние Sonarqube pos отображается какCreateContainerConfigError.Я считаю, что это связано с установочным томом штука: ссылка .Хотя я не совсем уверен, как это исправить (довольно новое в среде Kubernetes и до изучения :))

Ответы [ 6 ]

0 голосов
/ 02 июля 2019

Попробуйте использовать параметр --from-env-file вместо --from-file и посмотрите, исчезнет ли эта проблема.Я получил ту же ошибку и, просматривая события pod, предположил, что пары ключ-значение внутри файла mysecrets.txt не читаются должным образом.Если у вас есть только одна строка, Kubernetes принимает содержимое файла как значение, а имя файла - как ключ.Чтобы избежать этой проблемы, необходимо прочитать файл как переменные среды, как показано ниже.

mysecrets.txt:

MYSQL_PASSWORD=dfsdfsdfkhk

Например:

kubectl create secret generic secret-name --from-env-file=mysecrets.txt
kubectl create configmap generic configmap-name --from-env-file=myconfigs.txt
0 голосов
/ 16 мая 2019

Проверьте ваши secrets и config maps (kubectl get [secrets|configmaps]), которые уже существуют и правильно указаны в файле дескриптора YAML, в обоих случаях неверный секретный файл / файл конфигурации (не создан, неправильно введен и т. Д.) Приводит к CreateContainerConfigError.

Как уже указывалось в ответах, можно проверить ошибку с помощью kubectl describe pod [pod name] и что-то вроде этого должно появиться в нижней части вывода:

  Warning  Failed     85s (x12 over 3m37s)  kubelet, gke-****-default-pool-300d3c89-9jkz
  Error: configmaps "config-map-1" not found
0 голосов
/ 03 апреля 2019

Я также столкнулся с этой проблемой, и проблема была из-за переменной среды, использующей поле ref на контроллере.Другой контроллер и рабочий смогли разрешить ссылку.У нас не было времени, чтобы отследить причину проблемы и привести к срыву кластера и его восстановлению.

          - name: DD_KUBERNETES_KUBELET_HOST
            valueFrom:
              fieldRef:
                fieldPath: status.hostIP
Apr 02 16:35:46 ip-10-30-45-105.ec2.internal sh[1270]: E0402 16:35:46.502567    1270 pod_workers.go:186] Error syncing pod 3eab4618-5564-11e9-a980-12a32bf6e6c0 ("datadog-datadog-spn8j_monitoring(3eab4618-5564-11e9-a980-12a32bf6e6c0)"), skipping: failed to "StartContainer" for "datadog" with CreateContainerConfigError: "host IP unknown; known addresses: [{Hostname ip-10-30-45-105.ec2.internal}]"
0 голосов
/ 11 марта 2019

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

0 голосов
/ 16 ноября 2018

Недавно я столкнулся с той же ошибкой CreateContainerConfigError, и после небольшой отладки я обнаружил, что это потому, что я использовал kubernetes secret в моем Deployment yaml, который былна самом деле не присутствует / не создан в том пространстве имен, где создавались стручки.

Также после прочтения предыдущего ответа, я думаю, можно быть уверенным, что эта конкретная ошибка сосредоточена вокруг секретов кубернетов!

0 голосов
/ 28 июня 2018

Я сам столкнулся с этой проблемой сегодня, когда пытался создать секреты и использовать их в своем файле yaml для определения модуля.Было бы полезно, если вы проверяете выходные данные kubectl get secrets и kubectl get configmaps, если используете какой-либо из них, и проверяете, правильно ли указано количество требуемых элементов данных.

Я понял, что в моем случае проблемабыло то, что когда мы создавали секреты с несколькими элементами данных: вывод kubectl get secrets <secret_name> содержал только 1 элемент данных, тогда как в моем secret_name_definition.yaml было указано 2 элемента.Это происходит из-за разницы между использованием kubectl create -f secret_name_definition.yaml против kubectl create secret <secret_name> --from-file=secret_name_definition.yaml Разница в том, что в первом случае все элементы, перечисленные в разделе данных yaml, будут рассматриваться как пары ключ-значение и, следовательно, # ofэлементы будут отображаться как правильный вывод при запросе с использованием kubectl get secrets secret_name, но в случае последнего только первый элемент данных в secret_name_definition.yaml будет оцениваться для пар ключ-значение и, следовательно, вывод kubectl get secrets secret_name будетпоказать только 1 элемент данных, и это когда мы видим ошибку «CreateContainerConfigError».

Обратите внимание, что эта проблема не возникнет, если мы используем kubectl create secret <secret_name> с опциями --from-literal=, потому что тогда нам придется использовать префикс --from-literal= для каждой пары ключ-значение, которую мы хотим определить.

Точно так же, если мы используем опцию --from-file=, нам все равно придется указывать префикс несколько раз, по одному для каждой пары ключ-значение, но мы можем просто передать необработанное значение ключа, когда используем--from-literal и закодированная форма (т.е. значение ключа теперь будет echo raw_value | base64 от него в качестве значения, когда мы используем --from-file.

Например, допустим, что ключами являются «имя пользователя» и «пароль»", если вы создаете секрет с помощью команды kubectl create -f secret_definition.yaml, нам нужно закодировать значения для" имени пользователя "и" пароля ", как указано в разделе" Создание секрета "https://kubernetes.io/docs/tasks/inject-data-application/distribute-credentials-secure/

Я хотел бы выделить раздел " Примечание: " в https://kubernetes.io/docs/tasks/inject-data-application/distribute-credentials-secure/ Кроме того, https://kubernetes.io/docs/concepts/configuration/secret/ имеет очень четкое объяснение создания секретов

Также убедитесь, чточто для deploy.yaml теперь есть правильное определение для этого контейнера:

      env:
        - name: DB_HOST
          value: 127.0.0.1
        # These secrets are required to start the pod.
        # [START cloudsql_secrets]
        - name: DB_USER
          valueFrom:
            secretKeyRef:
              name: cloudsql-db-credentials
              key: username
        - name: DB_PASSWORD
          valueFrom:
            secretKeyRef:
              name: cloudsql-db-credentials
              key: password
        # [END cloudsql_secrets]

Как цитируют другие, "kubectl describe pods pod_name" поможет, но в моем случае я только понял, что контейнер не создавалсяво-первых, вывод "kubectl logs pod_name -c container_name" не сильно помог.

...