0Pricing
Kubernetes Basics · Lekcja

Pody wielokontenerowe (sidecary)

Poznaj wzorce uruchamiania wielu współlokowanych kontenerów w jednym Podzie, na przykład kontenerów sidecar.

Pody wielokontenerowe (sidecary) to bezpłatna lekcja Kubernetes Basics na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Kubernetes Basics, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Kubernetes Basics zawiera 4 lekcji w sumie.

Poza pojedynczym kontenerem

Do tej pory traktowaliśmy Pody jako uruchamiające pojedynczy kontener. Co jednak zrobić, jeśli aplikacja potrzebuje procesu pomocniczego?

Kubernetes pozwala uruchamiać w Podzie wiele kontenerów. Kontenery te zawsze znajdują się na tym samym węźle i współdzielą zasoby.

Dlaczego Pody wielokontenerowe?

Uruchamianie wielu kontenerów w jednym Podzie jest idealne w przypadku aplikacji, które są ściśle powiązane i muszą współdzielić:

  • Przestrzeń nazw sieci (ten sam adres IP, komunikacja za pośrednictwem localhost)
  • Woluminy danych
  • Cykl życia (uruchamiają się, zatrzymują i uruchamiają ponownie razem)

Pozwala to zarządzać powiązanymi procesami jako jedną jednostką.

Wyjaśnienie wzorca sidecar

Popularnym rozwiązaniem projektowym jest wzorzec sidecar. W tym przypadku kontener „sidecar” działa obok głównego kontenera aplikacji.

Rozszerza lub wzbogaca funkcjonalność głównej aplikacji bez modyfikowania samej aplikacji. Można myśleć o nim jak o pomocnym towarzyszu!

Zastosowania sidecarów

Sidecary są niezwykle wszechstronne. Do typowych zastosowań należą:

  • Zbieranie logów: Sidecar zbiera logi z głównej aplikacji i wysyła je do centralnej usługi rejestrowania.
  • Proxy: Sidecar zapewnia pośrednictwo sieciowe, na przykład na potrzeby bezpieczeństwa (mTLS) lub zarządzania ruchem.
  • Synchronizacja plików: Sidecar aktualizuje współdzielony wolumin, przechowując w nim konfigurację lub dane.

Pod z dwoma kontenerami (YAML)

Przyjrzyjmy się definiowaniu wielu kontenerów w manifeście YAML Poda. Każdy kontener jest elementem tablicy containers.

Zwróć uwagę na kontenery nginx-proxy i main-app zdefiniowane w sekcji spec.containers.

apiVersion: v1
kind: Pod
metadata:
  name: multi-container-pod
spec:
  containers:
  - name: nginx-proxy
    image: nginx:latest
    ports:
    - containerPort: 80
  - name: main-app
    image: busybox:latest
    command: ["sh", "-c", "echo 'Hello from main app!' && sleep 3600"]

Współdzielone miejsce na dane: emptyDir

Kontenery znajdujące się w tym samym Podzie mogą współdzielić dane za pomocą woluminów Kubernetes. Prostym sposobem jest użycie woluminu emptyDir.

Wolumin emptyDir jest tworzony po przypisaniu Poda do węzła i istnieje tak długo, jak długo ten Pod działa na tym węźle. Jest to tymczasowe miejsce na dane.

Przykład: sidecar zbierający logi

Wyobraź sobie główną aplikację, która zapisuje logi do pliku. Sidecar może następnie odczytać ten plik i wysłać jego zawartość do usługi rejestrowania.

Oddziela to logikę rejestrowania od głównej aplikacji, dzięki czemu pozostaje ona przejrzysta i skupiona na swoim zadaniu.

YAML sidecara zbierającego logi (część 1)

Oto YAML dla naszego przykładu sidecara zbierającego logi. Definiujemy wolumin emptyDir o nazwie log-volume. Oba kontenery zamontują ten wolumin.

Kontener main-app zapisuje komunikat logu do pliku /var/log/app.log we współdzielonym woluminie.

apiVersion: v1
kind: Pod
metadata:
  name: log-collector-pod
spec:
  volumes:
  - name: log-volume
    emptyDir: {}
  containers:
  - name: main-app
    image: busybox:latest
    command: ["sh", "-c", "while true; do echo $(date) 'Main app log entry' >> /var/log/app.log; sleep 1; done"]
    volumeMounts:
    - name: log-volume
      mountPath: /var/log

YAML sidecara zbierającego logi (część 2)

Teraz kontener log-sidecar montuje ten sam wolumin log-volume. Następnie używa polecenia tail -f, aby nieprzerwanie odczytywać plik logu zapisany przez główną aplikację.

W rzeczywistym scenariuszu ten sidecar przetwarzałby te logi i wysyłał je do systemu rejestrowania, takiego jak Elasticsearch lub Splunk.

apiVersion: v1
kind: Pod
metadata:
  name: log-collector-pod # Same Pod as before
spec:
  volumes:
  - name: log-volume
    emptyDir: {}
  containers:
  - name: main-app
    image: busybox:latest
    command: ["sh", "-c", "while true; do echo $(date) 'Main app log entry' >> /var/log/app.log; sleep 1; done"]
    volumeMounts:
    - name: log-volume
      mountPath: /var/log
  - name: log-sidecar
    image: busybox:latest
    command: ["sh", "-c", "tail -f /var/log/app.log"]
    volumeMounts:
    - name: log-volume
      mountPath: /var/log

Szybkie sprawdzenie: zalety sidecara

Pody wielokontenerowe, szczególnie korzystające ze wzorca sidecar, oferują kilka zalet podczas zarządzania złożonymi aplikacjami.

Jakie są najważniejsze korzyści ze stosowania kontenera sidecar?

Podsumowanie: Pody wielokontenerowe

Świetnie! Wiesz już, czym są Pody wielokontenerowe i na czym polega potężny wzorzec sidecar.

  • Pody mogą obsługiwać wiele kontenerów współdzielących sieć i miejsce na dane.
  • Wzorzec sidecar pomaga rozszerzać lub wzbogacać funkcjonalność głównej aplikacji.
  • Typowe zastosowania obejmują zbieranie logów, proxy i synchronizację danych.
  • Woluminy emptyDir zapewniają tymczasowe współdzielone miejsce na dane w Podzie.

Ten wzorzec ma kluczowe znaczenie przy tworzeniu niezawodnych, modułowych aplikacji w Kubernetes!

Często zadawane pytania

Czy lekcja „Pody wielokontenerowe (sidecary)” jest bezpłatna?

Tak — pełny tekst „Pody wielokontenerowe (sidecary)” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Kubernetes Basics, przejdź na CoddyKit PRO. Kurs Kubernetes Basics zawiera 4 lekcji w sumie.

Co nauczysz się w „Pody wielokontenerowe (sidecary)”?

Poznaj wzorce uruchamiania wielu współlokowanych kontenerów w jednym Podzie, na przykład kontenerów sidecar. Ćwiczysz Kubernetes Basics z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Kubernetes Basics?

Nie wymagamy żadnego doświadczenia. Kubernetes Basics w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Pody wielokontenerowe (sidecary)”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Kubernetes Basics?

Tak. Każda lekcja Kubernetes Basics zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Pody: najmniejsza jednostka
  2. Cykl życia i stany Poda
  3. Pody wielokontenerowe (sidecary)
  4. Kontenery init i kolejność uruchamiania
← Powrót do Kubernetes Basics