Введение
Docker — это платформа, которая упрощает развертывание программного обеспечения, позволяя вам объединить приложение с его средой выполнения в единый пакет, называемый контейнером. Это гарантирует, что приложение будет работать одинаково независимо от того, где оно развернуто.
Kubernetes (часто сокращенно K8s) — это система оркестрации контейнеров с открытым исходным кодом. Он используется для автоматизации развертывания, масштабирования и управления контейнерными приложениями, например созданными с помощью Docker.
Предпосылки
- Базовое понимание команд Linux
- Докер установлен на вашем компьютере. Следуйте руководству по установке Docker, чтобы настроить это.
- Kubernetes установлен на вашем компьютере. Следуйте официальному руководству по установке Kubernetes.
Шаг 1: Docker — создание образа
Во-первых, давайте создадим простой Dockerfile для приложения Node.js.
Создайте новый каталог на локальном компьютере и перейдите в него.
mkdir my-node-app && cd my-node-app
Создайте файл с именем Dockerfile.
touch Dockerfile
Откройте Dockerfile и добавьте следующий код:
# Use an official Node.js runtime as the base image
FROM node:14
# Set the working directory in the container to /app
WORKDIR /app
# Copy package.json and package-lock.json to the working directory
COPY package*.json./# Install the application dependencies
RUN npm install
# Copy the rest of your application's source code to the working directory
COPY..
# Make the container listen on port 8080 at runtime
EXPOSE 8080
# Define the command to run the app
CMD [ "node", "server.js" ]
Создайте образ Docker с помощью команды docker build
.
docker build -t my-node-app.
Шаг 2: Docker — запуск контейнера
После сборки образа вы можете запустить его как контейнер с помощью docker run
.
docker run -p 8080:8080 -d my-node-app
Эта команда указывает Docker запустить контейнер с образом my-node-app, сопоставить порт 8080 внутри контейнера Docker с портом 8080 на хост-компьютере и запустить контейнер в фоновом режиме (отключенный режим).
Шаг 3: Kubernetes — создание развертывания
Kubernetes управляет контейнерами Docker через такие объекты, как Pods и Deployments. Pod — это самый маленький и простой объект Kubernetes. Он представляет собой один экземпляр работающего процесса в кластере и может содержать один или несколько контейнеров.
Создайте файл с именем deployment.yaml
со следующим содержимым:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-node-app
spec:
replicas: 3
selector:
matchLabels:
app: my-node-app
template:
metadata:
labels:
app: my-node-app
spec:
containers:
- name: my-node-app
image: my-node-app:latest
ports:
- containerPort: 8080
Примените это развертывание к кластеру Kubernetes с помощью команды kubectl apply
.
kubectl apply -f deployment.yaml
Это развертывание создает три реплицированных модуля, которые запускают контейнер my-node-app. Если модуль выходит из строя, развертывание автоматически воссоздает его, чтобы поддерживать счет до трех.
Шаг 4: Kubernetes — раскрытие вашего развертывания
После запуска развертывания вы можете захотеть открыть его в Интернете. В Kubernetes вы можете сделать это с помощью службы, которая представляет собой абстракцию, определяющую набор подов и политику доступа к ним.
Создайте файл с именем service.yaml
со следующим содержимым:
apiVersion: v1
kind: Service
metadata:
name: my-node-app
spec:
selector:
app: my-node-app
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: LoadBalancer
Примените эту службу к вашему кластеру Kubernetes с помощью команды kubectl apply
.
kubectl apply -f service.yaml
Эта служба предоставляет развертывание my-node-app за пределами кластера. Тип «LoadBalancer» обеспечивает доступ к Сервису через выделенный сетевой IP-адрес в облаке, если он поддерживается вашим облачным провайдером.
Шаг 5: Kubernetes — проверка развертывания и обслуживания
Чтобы убедиться, что развертывание работает должным образом, выполните следующую команду:
kubectl get deployments
Вы должны увидеть развертывание my-node-app с тремя репликами.
Точно так же для проверки службы используйте следующую команду:
kubectl get services
Вы должны увидеть службу «my-node-app» с внешним IP-адресом. Вы можете использовать этот IP-адрес для доступа к вашему приложению из веб-браузера.
Заключение
Вот и все! Это очень простой пример, но он должен дать вам представление о том, как использовать Docker и Kubernetes для контейнеризации приложения и развертывания его в кластере Kubernetes.