Розгортання, масштабування та моніторинг станового застосунку

Вступ до Kubernetes

Frank Heilmann

Platform Architect and Freelance Instructor

Підсумок: безстанові застосунки

  • Коротко: безстанові застосунки відповідають «Deployments» у Kubernetes
  • Використовують, коли кожен Pod застосунку виконує ті самі завдання
  • Станові застосунки потребують Pod'и, що належать до одного набору, але можуть працювати над різними завданнями та даними
  • Більшість знань про Deployments застосовні й до StatefulSets
Вступ до Kubernetes

Станові застосунки

  • Станові застосунки:

    • загальне поняття
    • добре підходять для Kubernetes
    • зберігають певний стан
  • Після переривання чи зупинки нова репліка (Pod) може прочитати збережений стан і продовжити роботу з нього

  • Приклад:
    • База даних (наприклад, PostgreSQL) віддає дані фронтенду, використовуючи 3 Pod'и.
    • Щоразу, коли ми змінюємо дані через будь-який Pod, ці дані слід зберегти постійно
    • Коли Pod завершує роботу, створюється новий і має підхопити збережений стан
Вступ до Kubernetes

Kubernetes StatefulSets

  • Станові застосунки відповідають «Kubernetes StatefulSets»
  • Зразок маніфесту має ті самі секції, як-от:
    • apiVersion, kind, metadata, spec, template
  • replicas визначає кількість Pod'ів у StatefulSet
  • Про selector — далі
apiVersion: apps/v1
kind: StatefulSet
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

  • StatefulSet розгортається подібно до Deployments: kubectl apply -f <manifest.yml>
  • Після розгортання StatefulSet створюється інакше, ніж Deployment:
    • Pod'и створюються послідовно, а не одночасно, як у Deployment
    • Pod'и мають передбачувані імена: pod-0, pod-1, pod-2 тощо
  • Тобто, на відміну від Pod'ів у Deployment, Pod'и в StatefulSet мають ідентичність і стан
  • Тому різні Pod'и StatefulSet з різною ідентичністю можуть виконувати різні ролі в застосунку
Вступ до Kubernetes

Масштабування StatefulSet

  • Як і Deployments, StatefulSets можна масштабувати вгору чи вниз:
    • Змініть число replicas у маніфесті й застосуйте знову
    • Або скористайтеся командою kubectl scale statefulsets ...
  • Під час масштабування вгору нові Pod'и створюються послідовно:
    • напр., після pod-0, pod-1, pod-2 додаються спершу pod-3, потім pod-4
  • Під час масштабування вниз останні створені Pod'и видаляються першими:
    • напр., спочатку pod-4, потім pod-3
Вступ до Kubernetes

Моніторинг StatefulSet

  • Як і для Deployments, моніторинг дозволяє реагувати на збої, піки навантаження чи брак сховища
  • Тут ми використовуємо kubectl для базових завдань моніторингу
  • Типові команди: як і для Deployments
  • Приклад 1: kubectl get pods повертає всі pod'и в StatefulSet з їхнім поточним станом
  • Приклад 2: kubectl get services повертає всі сервіси, які може використовувати StatefulSet
Вступ до Kubernetes

Давайте потренуємось!

Вступ до Kubernetes

Preparing Video For Download...