• Масштабировать количество ВМ и контейнеров в обе стороны в зависимости от нагрузки
• Распределять трафик между своими ВМ и контейнерами
• Позволять своим ВМ и контейнерам находить друг друга и общаться между собой по сети
Выполнение этих задач находится в сфере ответственности
Подготовив рабочий кластер, вы можете описать развертывание своего контейнера Docker в виде кода внутри YAML-файла:
apiVersion: apps/v1
# Используем объект Deployment для развертывания нескольких реплик вашего
# Docker-контейнера (возможно, больше одного) и декларативного выкатывания
# обновлений для него
kind: Deployment
# Метаданные этого развертывания, включая его имя
metadata:
name: example-app
# Спецификация, которая конфигурирует это развертывание
spec:
# Благодаря этому развертывание знает, как искать ваш контейнер
selector:
matchLabels:
app: example-app
# Приказываем объекту Deployment развернуть три реплики Docker-контейнера
replicas: 3
# Определяет способ обновления развертывания. Здесь указываем скользящие обновления
strategy:
rollingUpdate:
maxSurge: 3
maxUnavailable: 0
type: RollingUpdate
# Этот шаблон описывает, какие контейнеры нужно развернуть
template:
# Метаданные контейнера, включая метки
metadata:
labels:
app: example-app
# Спецификация контейнера
spec:
containers:
# Запускаем Apache на порту 80
- name: example-app
image: httpd:2.4.39
ports:
- containerPort: 80
Этот файл говорит Kubernetes, что нужно создать
• Один или несколько контейнеров Docker для совместного запуска. Эта группа контейнеров называется
• Настройки каждого контейнера Docker в под-оболочке. В нашем примере под-оболочка настраивает Apach для прослушивания порта 80.
• Сколько копий
• Как развертывать обновления. Когда выходит новая версия контейнера Docker, наш код выкатывает три новые реплики, ждет, когда они станут работоспособными, и затем удаляет три старые копии.
Так много возможностей всего в нескольких строчках на YAML! Чтобы развернуть свое приложение в Kubernetes, нужно выполнить команду kubectlapply-fexample-app.yml. Чтобы выкатить обновления, вы можете отредактировать YAML-файл и снова запустить kubectlapply.
Средства инициализации ресурсов
В отличие от инструментов для управления конфигурацией, шаблонизации серверов и оркестрации, код которых выполняется на каждом сервере,
Рис. 1.5. Средства инициализации ресурсов можно использовать в связке с вашим облачным провайдером, чтобы создавать серверы, базы данных, балансировщики нагрузки и любые другие элементы вашей инфраструктуры
Например, следующий код развертывает веб-сервер с помощью Terraform:
resource "aws_instance" "app" {
instance_type = "t2.micro"
availability_zone = "us-east-2a"
ami = "ami-0c55b159cbfafe1f0"
user_data = <<-EOF
#!/bin/bash
sudo service apache2 start
EOF
}
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии