Розгортання першого (безстанного) застосунку

Вступ до 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

Безстанні застосунки

  • Безстанні застосунки:

    • Загальна концепція
    • Не привʼязані лише до Kubernetes
    • Не зберігають внутрішній стан чи контекст оброблених даних
  • Якщо роботу перервано, створюється нова репліка безстанного застосунку й продовжує роботу.

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

Kubernetes Deployments

  • «Безстанні застосунки» відповідають «Kubernetes Deployments»
  • Зразковий маніфест містить:
    • apiVersion і kind
    • metadata і spec
  • spec визначає кількість replicas, selector і template
  • Про selector — далі
  • template описує деталі створення pods у 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> для створення pods і застосування змін.
  • Площина керування Kubernetes спланує Deployment на вузлах (Nodes).
    • Потім запуск створених Pods ініціюється на вузлах.
  • Pods отримують унікальний, але випадковий (непередбачуваний) ідентифікатор; кожен Pod «не гірший за інший»
Вступ до Kubernetes

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

Вступ до Kubernetes

Preparing Video For Download...