k3s со скаффольдом: контейнер нельзя тянуть

Я создаю API-интерфейс микросервиса, который хочу запустить в локальном кластере Raspberry K3S.

Цель состоит в том, чтобы использовать skaffold для развертывания во время разработки.

Проблема, с которой я сталкиваюсь, заключается в том, что каждый раз, когда я использую skaffold dev, у меня возникает одна и та же ошибка:

deployment/epos-auth-deploy: container epos-auth is waiting to start: 192.168.1.10:8080/epos_auth:05ea8c1@sha256:4e7f7c7224ce1ec4831627782ed696dee68b66929b5641e9fc6cfbfc4d2e82da can't be pulled

Я попытался настроить локальный реестр докеров, который определяется этим файлом docker-compose.yaml:

version: '2.0'
services:
  registry:
    image: registry:latest
    volumes:
      - ./registry-data:/var/lib/registry
    networks:
      - registry-ui-net

  ui:
    image: joxit/docker-registry-ui:static
    ports:
      - 8080:80
    environment:
      - REGISTRY_TITLE=Docker Registry
      - REGISTRY_URL=http://registry:5000
    depends_on:
      - registry
    networks:
      - registry-ui-net

networks:
  registry-ui-net:

Он работает на http://192.168.1.10:8080 в моей локальной сети.

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

Изображение видно в хранилище

Я также установил /etc/docker/daemon.json на моем локальном компьютере

{
        "insecure-registries": ["192.168.1.10:8080"],
        "registry-mirrors": ["http://192.168.1.10:8080"]
}

Я установил /etc/rancher/k3s/registries.yaml на всех узлах:

mirrors:
  docker.io:
    endpoint:
      - "http://192.168.1.10:8080"

skaffold.yaml выглядит так:

apiVersion: skaffold/v2alpha3
kind: Config
metadata:
  name: epos-skaffold
deploy:
  kubectl:
    manifests:
      - ./infra/k8s/skaffold/*
build:
  local:
    useBuildkit: true
  artifacts:
    - image: epos_auth
      context: epos-auth
      docker:
        dockerfile: Dockerfile
      sync:
        manual:
          - src: 'src/**/*.ts'
            dest: . 

И ./infra/k8s/skaffold/epos-auth-deploy.yaml выглядит так:

apiVersion: apps/v1
kind: Deployment
metadata: 
  name: epos-auth-deploy
spec:
  replicas: 1
  selector:
    matchLabels:
      app: epos-auth
  template:
    metadata:
      labels:
        app: epos-auth
    spec:
      containers:
        - name: epos-auth
          image: epos_auth
          env:
            - name: NATS_URL
              value: http://nats-srv:4222
            - name: NATS_CLUSTER_ID
              value: epos
            - name: NATS_CLIENT_ID
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
            - name: JWT_KEY
              valueFrom:
                secretKeyRef: 
                  name: jwt-keys
                  key: key
            - name: JWT_PRIVATE_KEY
              valueFrom:
                secretKeyRef: 
                  name: jwt-keys
                  key: private_key
            - name: JWT_PUBLIC_KEY
              valueFrom:
                secretKeyRef: 
                  name: jwt-keys
                  key: public_key
            - name: MONGO_URI
              value: mongodb://mongodb-srv:27017/auth-service
---
apiVersion: v1
kind: Service
metadata:
  name: epos-auth-srv
spec:
  selector:
    app: epos-auth
  ports:
    - name: epos-auth
      protocol: TCP
      port: 3000
      targetPort: 3000

я сделал

skaffold config set default-repo 192.168.1.10:8080

skaffold config set insecure-registries 192.168.1.10:8080

Я действительно не знаю, что в этом плохого.

У вас есть какие-нибудь подсказки, пожалуйста?


person T00rk    schedule 12.02.2021    source источник
comment
Здравствуйте, я думаю, вам следует опубликовать отредактированную (часть ответа) как фактический ответ на этот вопрос и принять его. Это сделало бы его более заметным для других членов сообщества.   -  person Dawid Kruk    schedule 15.02.2021


Ответы (2)


Измените ссылку docker.io, так как она сбивает с толку;

mirrors:
  docker.io:
    endpoint:
      - "http://192.168.1.10:8080"

И используйте image с полным путем реестра, например: registry.local:5000/epos_auth

https://devopsspiral.com/articles/k8s/k3d-skaffold/

person DarthHTTP    schedule 13.02.2021
comment
Проблема не в этом. - person T00rk; 13.02.2021
comment
Конечная точка - 192.168.1.10:8080. Я исправил эту проблему. Это был контекст, неправильно установленный в .skaffold/config. Теперь моя последняя проблема, я надеюсь, - создать образы докеров arm64 на компьютере amd64, чтобы поместить их в реестр и загрузить их на узлы. - person T00rk; 13.02.2021

  • Я установил docker-ce на главный узел. Затем я создал главный узел с параметром --docker в команде.

  • Когда я создал узел k3s, я определил контекст. Я забыл заменить default контекст в ~/.skaffold/config

person T00rk    schedule 15.02.2021