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/logYAML 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/logSzybkie 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
emptyDirzapewniają 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
- Pody: najmniejsza jednostka
- Cykl życia i stany Poda
- Pody wielokontenerowe (sidecary)
- Kontenery init i kolejność uruchamiania