Развертывание локальных образов Docker с помощью Minikube и kubectl: изучено несколько методов

При работе с 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 сможет извлечь образ из локального реестра во время развертывания. Вот шаги:

  1. Запустите локальный реестр Docker:

    docker run -d -p 5000:5000 --restart=always --name registry registry:2
  2. Пометить локальный образ и отправить его в реестр:

    docker tag my-local-image:latest localhost:5000/my-local-image:latest
    docker push localhost:5000/my-local-image:latest
  3. Обновите конфигурацию развертывания, чтобы использовать образ из локального реестра:

    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. После этого образ будет доступен для развертывания без какой-либо дополнительной настройки. Вот пример:

  1. Создайте и пометьте локальный образ внутри Minikube:

    minikube docker-env
    eval $(minikube docker-env)
    docker build -t my-local-image:latest .
  2. Обновите конфигурацию развертывания, чтобы использовать локальный образ:

    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.