При работе с Kubernetes обычно развертываются образы Docker для создания приложений и управления ими. Хотя образы контейнеров часто извлекаются из удаленных репозиториев, существуют сценарии, в которых для развертывания может потребоваться использовать локальный образ Docker. В этой статье мы рассмотрим несколько методов развертывания локальных образов Docker с помощью Minikube и kubectl, а также приведем примеры кода.
Метод 1: использование поля imagePullPolicy
Один простой подход — изменить поле imagePullPolicy в конфигурации развертывания, чтобы гарантировать использование локального образа. Если для политики извлечения установлено значение «Никогда», Kubernetes не будет пытаться получить образ из удаленного репозитория. Вот пример:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
spec:
replicas: 1
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-container
image: my-local-image:latest
imagePullPolicy: Never
Метод 2: использование локального реестра Docker
Другой подход предполагает настройку локального реестра Docker и отправку в него образа. Затем Kubernetes сможет извлечь образ из локального реестра во время развертывания. Вот шаги:
-
Запустите локальный реестр Docker:
docker run -d -p 5000:5000 --restart=always --name registry registry:2 -
Пометить локальный образ и отправить его в реестр:
docker tag my-local-image:latest localhost:5000/my-local-image:latest docker push localhost:5000/my-local-image:latest -
Обновите конфигурацию развертывания, чтобы использовать образ из локального реестра:
apiVersion: apps/v1 kind: Deployment metadata: name: my-deployment spec: replicas: 1 selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - name: my-container image: localhost:5000/my-local-image:latest
Метод 3: использование демона Docker Minikube
Minikube позволяет вам использовать демон Docker, что означает, что вы можете создавать и помечать локальный образ внутри среды Minikube. После этого образ будет доступен для развертывания без какой-либо дополнительной настройки. Вот пример:
-
Создайте и пометьте локальный образ внутри Minikube:
minikube docker-env eval $(minikube docker-env) docker build -t my-local-image:latest . -
Обновите конфигурацию развертывания, чтобы использовать локальный образ:
apiVersion: apps/v1 kind: Deployment metadata: name: my-deployment spec: replicas: 1 selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - name: my-container image: my-local-image:latest
В этой статье мы рассмотрели несколько методов развертывания локальных образов Docker с помощью Minikube и kubectl. Изменяя поле imagePullPolicy, используя локальный реестр Docker или демон Minikube Docker, вы можете легко развертывать свои приложения с помощью локальных образов. Выберите метод, который лучше всего соответствует вашим потребностям, и наслаждайтесь гибкостью и удобством развертывания локальных образов в Kubernetes.