Wdrażanie pierwszej aplikacji (bezstanowej)

Wprowadzenie do Kubernetes

Frank Heilmann

Platform Architect and Freelance Instructor

Więcej o "kubectl"

  • kubectl: główne polecenie do interakcji z obiektami Kubernetes
  • Obiekty to np. pod, service itp.

$$

  • Typowe wzorce użycia:

    • kubectl create -f <Manifest.yml>: tworzenie nowych obiektów, -f oznacza „filename"
    • kubectl apply -f <Manifest.yml>: tworzenie nowych obiektów i zmiana ich stanu
    • kubectl get <object>: przegląd obiektów wdrożonych w Kubernetes
    • kubectl describe <object>: szczegółowe informacje o obiekcie

    $$

  • Szczegółowa pomoc dostępna przez opcję wiersza poleceń --help

Wprowadzenie do Kubernetes

Więcej o manifestach

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
  • Pamiętaj: manifesty są deklaratywne
  • Zazwyczaj w formacie YAML, ale też JSON
  • Dwie ważne sekcje:
    • metadata: podstawowe informacje o obiekcie lub zasobie
    • spec: definiuje specyfikacje lub pożądany stan obiektu lub zasobu
  • Sekcje mogą być zagłębione, w zależności od wdrażanego zasobu
Wprowadzenie do Kubernetes

Aplikacje bezstanowe

  • Aplikacje bezstanowe:

    • Ogólna koncepcja
    • Nie jest specyficzna dla Kubernetes
    • Nie zapisują wewnętrznego stanu ani kontekstu przetwarzanych danych
  • Po przerwaniu działania tworzona jest nowa replika aplikacji bezstanowej, która wznawia pracę.

  • Przykłady:
    • Frontend bazy danych odpytujący backend bazy danych
    • Aplikacja wyszukiwania odpytująca indeks pełnotekstowy
    • Aplikacja strumieniowa konwertująca odczyty temperatury z czujnika IoT z °F na °C
Wprowadzenie do Kubernetes

Wdrożenia Kubernetes

  • „Aplikacje bezstanowe" odpowiadają „Wdrożeniom Kubernetes"
  • Przykładowy manifest zawiera:
    • apiVersion i kind
    • metadata i spec
  • spec definiuje liczbę replicas, selector oraz template
  • Więcej o selector w dalszej części
  • template opisuje szczegóły tworzenia podów we wdrożeniu
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>
Wprowadzenie do Kubernetes

Wdrażanie w klastrze Kubernetes

  • kubectl apply -f <manifest.yml> – tworzenie podów i stosowanie zmian.
  • Płaszczyzna sterowania Kubernetes planuje wdrożenie na węzłach.
    • Następnie na węzłach uruchamiane jest tworzenie podów.
  • Pody otrzymują unikalny, lecz losowy (nieprzewidywalny) identyfikator – każdy pod jest „równoważny z innymi"
Wprowadzenie do Kubernetes

Czas na ćwiczenia!

Wprowadzenie do Kubernetes

Preparing Video For Download...