GKE Невозможно вытащить изображение, даже если imagesPullSecret определен - PullRequest
1 голос
/ 10 июля 2019

В Google Kubernetes Engine я создал кластер POC для нашей компании, который работал безупречно.Но теперь, когда я пытаюсь создать нашу производственную среду, я не могу заставить работать imagesPullSecrets, это те же учетные данные, что и в POC, та же диаграмма управления и тот же файл regcred yaml.

Пока япродолжайте получать классические:

Back-off pulling image "registry.company.co/frontend/company-web/upload": ImagePullBackOff 
  • Ручное извлечение узла работает с теми же учетными данными, что и те, которые я указал в imagesPullSecret
  • Я пытался определить imagesPullSecret как дляуровень диаграммы и в учетной записи службы
  • Я проверил секретный формат и напрямую скопировал туда учетные данные при попытке ручного извлечения
  • GKE берет regcred и показывает его в развертывании

Regcred, сгенерированный kubectl create secret docker-registry regcred --docker-server="registry.company.co" --docker-username="gitlab" --docker-password="[PASSWORD]"

regcred secret

kind: Secret
apiVersion: v1
metadata:
  name: regcred
  namespace: default
data:
  .dockerconfigjson: eyJhdXRocyI6eyJyZWdpc3RyeS5jb21wYW55LmNvIjp7InVzZXJuYW1lIjoiZ2l0bGFiIiwicGFzc3dvcmQiOiJbUkVEQUNURURdIiwiYXV0aCI6IloybDBiR0ZpT2x0QmJITnZJRkpsWkdGamRHVmtYUT09In19fQ==
type: kubernetes.io/dockerconfigjson

Сервисная учетная запись

kind: ServiceAccount
apiVersion: v1
metadata:
  name: default
  namespace: default
secrets:
  - name: default-token-jktj5
imagePullSecrets:
  - name: regcred

Deployment.yaml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
    name: nfs-server
spec:
    replicas: 1
    selector:
        matchLabels:
            role: nfs-server
    template:
        metadata:
            labels:
                role: nfs-server
        spec:
            containers:
                - name: nfs-server
                  image: gcr.io/google_containers/volume-nfs:latest
                  ports:
                      - name: nfs
                        containerPort: 2049
                      - name: mountd
                        containerPort: 20048
                      - name: rpcbind
                        containerPort: 111
                  securityContext:
                      privileged: true
                  volumeMounts:
                      - mountPath: /exports
                        name: mypvc
            initContainers:
                - name: init-volume-perms
                  imagePullPolicy: Always
                  image: alpine
                  command: ["/bin/sh", "-c"]
                  args: ["mkdir /mnt/company-logos; mkdir /mnt/uploads; chown -R 1337:1337 /mnt"]
                  volumeMounts:
                      - mountPath: /mnt
                        name: mypvc
                - name: company-web-uploads
                  image: registry.company.co/frontend/company-web/uploads
                  imagePullPolicy: Always
                  volumeMounts:
                      - mountPath: /var/lib/company/web/uploads
                        subPath: uploads
                        name: mypvc
                - name: company-logos
                  image: registry.company.co/backend/pdf-service/company-logos
                  imagePullPolicy: Always
                  volumeMounts:
                      - mountPath: /var/lib/company/shared/company-logos
                        subPath: company-logos
                        name: mypvc
            volumes:
                - name: mypvc
                  gcePersistentDisk:
                      pdName: gke-nfs-disk
                      fsType: ext4

Я огляделся, следуя различным путеводителям с нуля, но безуспешно.

Так что я в полной растерянности относительно того, что делать.

Пространство имен по умолчаниювсе вокруг

1 Ответ

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

Это может быть связано с проблемой пространства имен. Можете ли вы проверить несколько вещей

  1. Используете ли вы пространство имен по умолчанию в обоих местах?
  2. Разница в версии K8S между Poc и Prod.
  3. Можете ли вы воссоздать рабочий секрет чем-то вроде kubectl get secret default-token-jktj5 -o yaml > imagepullsecret.yaml. Отредактируйте файл yaml, чтобы удалить ревизию и другую информацию о состоянии. Примените то же самое к продукту
  4. Я видел эту проблему в GKE из-за многострочного секретного преобразования в base64. Убедитесь, что секреты совпадают между средами.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...