Я бы порекомендовал следовать документам из k3d, они здесь .
Точнее это
Если вы не хотите, чтобы k3d управлял вашим реестром, вы можете запустить его с помощью некоторых команд docker, например:
docker volume create local_registry
docker container run -d --name registry.local -v local_registry:/var/lib/registry --restart always -p 5000:5000 registry:2
Эти команды запустит ваш реестр в registry.local: 5000. Чтобы добавить в этот реестр sh, вам нужно добавить строку в / etc / hosts, как мы описали в предыдущем разделе . Как только ваш реестр будет запущен, нам нужно будет добавить его в файл конфигурации registries.yaml. Наконец, вы должны подключить сеть реестра к сети кластера k3d: docker network connect k3d-k3s-default registry.local. И тогда вы можете проверить ваш локальный реестр .
Нажав на ваш локальный адрес реестра
Реестр будет расположен по умолчанию в registry.local: 5000 (настраивается с помощью параметров --registry-name и --registry-port). Все узлы в вашем кластере k3d могут разрешать это имя хоста (благодаря DNS-серверу, предоставленному демоном Docker), но для того, чтобы иметь возможность отправить sh в этот реестр, это имя хоста, но также должно быть разрешено с вашего хоста .
Самым простым решением для этого является добавление записи в ваш файл / etc / hosts , например:
127.0.0.1 registry.local
Еще раз это будет работать только с k3s> = v0.10.0 (см. раздел ниже при использовании k3s <= v0.9.1) </p>
Том локального реестра
В локальном реестре k3d для создания изображений используются тома. Этот том будет уничтожен при выходе из реестра k3d. Чтобы сохранить этот том и заставить эти образы пережить удаление реестра, вы можете указать том с параметром --registry-volume и использовать флаг --keep-registry-volume при удалении кластера. Это создаст том с указанным именем при первом использовании реестра, в то время как последовательные вызовы просто монтируют этот существующий том в контейнер реестра k3d.
Docker Кэш-концентратор
Локальный реестр k3d также можно использовать для кэширования изображений из Docker Hub. Вы можете запустить реестр как сквозной кеш, когда кластер создается с помощью --enable-registry-cache. Используемый вместе с --registry-volume / - keep-registry-volume может ускорить все загрузки с концентратора, сохраняя постоянный кэш изображений на локальном компьютере.
Тестирование реестра
Вы должны проверить, что вы можете
- pu sh в свой реестр с локального компьютера разработки.
- использовать изображения из этого реестра в Deployments в вашем кластере k3d.
Мы проверим эти две вещи для локального реестра (расположенного в registry.local: 5000), работающего на вашей машине разработки. Для проверки внешнего реестра все будет в основном так же, но при использовании аутентифицированного или безопасного реестра может потребоваться дополнительная настройка на локальном компьютере (для этого обратитесь к документации Docker).
Во-первых, мы можем загрузить изображение (например, nginx) и добавить его в наш локальный реестр с помощью:
docker pull nginx:latest
docker tag nginx:latest registry.local:5000/nginx:latest
docker push registry.local:5000/nginx:latest
Затем мы можем развернуть модуль, ссылающийся на этот образ в ваш кластер:
cat <<EOF | kubectl apply -f -
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-test-registry
labels:
app: nginx-test-registry
spec:
replicas: 1
selector:
matchLabels:
app: nginx-test-registry
template:
metadata:
labels:
app: nginx-test-registry
spec:
containers:
- name: nginx-test-registry
image: registry.local:5000/nginx:latest
ports:
- containerPort: 80
EOF
Затем вы должны убедиться, что модуль работает с kubectl get pods -l "app = nginx -test-registry".
Дополнительно есть 2 ссылки на github, которые стоит посетить