Развёртывание первого (stateless) приложения

Введение в Kubernetes

Frank Heilmann

Platform Architect and Freelance Instructor

Подробнее о «kubectl»

  • kubectl: основная команда для работы с объектами Kubernetes
  • Объекты: например, pod, service и др.

$$

  • Типичные шаблоны использования:

    • kubectl create -f <Manifest.yml>: создание новых объектов, -f означает «filename»
    • kubectl apply -f <Manifest.yml>: создание новых объектов и изменение состояния существующих
    • kubectl get <object>: обзор объектов, развёрнутых в Kubernetes
    • kubectl describe <object>: подробная информация об объекте

    $$

  • Подробная справка доступна через опцию --help

Введение в Kubernetes

Подробнее о манифестах

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 5
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.25.4
        ports:
        - containerPort: 80
  • Манифесты декларативны — помните об этом
  • Обычно в формате YAML, но также поддерживается JSON
  • Два ключевых раздела:
    • metadata: основная информация об объекте или ресурсе
    • spec: определяет спецификации или желаемое состояние объекта или ресурса
  • Разделы могут быть весьма вложенными — в зависимости от ресурса
Введение в Kubernetes

Stateless-приложения

  • Stateless-приложения:

    • Общая концепция
    • Не специфична для Kubernetes
    • Не сохраняют внутреннее состояние или контекст обработанных данных
  • При сбое создаётся новая реплика stateless-приложения и начинает работу.

  • Примеры:
    • Фронтенд базы данных, выполняющий запросы к бэкенду БД
    • Поисковое приложение, обращающееся к полнотекстовому индексу
    • Приложение обработки потока данных, переводящее показания температуры IoT-датчика из °F в °C
Введение в Kubernetes

Kubernetes Deployments

  • «Stateless-приложения» соответствуют «Kubernetes Deployments»
  • Пример манифеста включает:
    • apiVersion и kind
    • metadata и spec
  • spec задаёт количество replicas, selector и template
  • Подробнее о selector — далее
  • template описывает параметры создания подов в Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  name: <deployment name>
  labels:
    app: <a label for the application>
spec:
  replicas: <number of initial replicas>
  selector:
    matchLabels:
      app: <matches the label above>
  template:
    metadata:
      labels:
        app: <label to be given to each pod>
    spec:
      containers:
      - name: <container name>
        image: <the image to be used>
        ports:
        - containerPort: <ports for networking>
Введение в Kubernetes

Развёртывание в кластере Kubernetes

  • kubectl apply -f <manifest.yml> — для создания подов и применения изменений.
  • Плоскость управления Kubernetes распланирует Deployment по узлам.
    • Затем на узлах инициируется создание подов.
  • Поды получают уникальный, но случайный (непредсказуемый) идентификатор; каждый под «равнозначен любому другому»
Введение в Kubernetes

Давайте потренируемся!

Введение в Kubernetes

Preparing Video For Download...