Czym jest Multi container Pod?¶
Jest to rodzaj Poda w Kubernetes, w którym działa więcej, niż jeden kontener. Jest to celowy Design Pattern, drugi kontener uzupełnia działanie pierwszego.
Taki mechanizm stosowany jest w tylko niektórych przypadkach, lepiej jednak rozdzielać kontenery na osobne Pody - upraszcza to skalowanie, monitorowanie, a także aktualizowanie aplikacji wewnątrz kontenerów.
Rodzaje Multi container Podów¶
Co-located Containers¶
Mechanizm polega na uruchomieniu więcej niż jednego kontenera w Podzie. Nie jest zwracana uwaga, w jakiej kolejności kontenery się uruchomią wewnątrz Poda.
Definicja Poda:
apiVersion: v1
kind: Pod
metadata:
name: <pod_name>
spec:
containers:
- name: <container1_name>
image: <container1_image>
- name: <container2_name>
image: <container2_image>
...
Init Containers¶
Ten rodzaj mechanizmu polega na uruchomieniu więcej, niż jednego kontenera w Podzie, lecz tutaj już kolejność jest ważna. Uruchamiany jest na początku init container, a następnie, gdy skończy swoje działanie, uruchamiane są kolejne kontenery w sekcji właściwej (spec.containers).
Jest to stosowane do wykonywania przykładowo sprawdzenia (np. połączenia z bazą danych), przed uruchomieniem aplikacji właściwej.
Info
Może istnieć wiele init containerów w Podzie.
Definicja Poda:
apiVersion: v1
kind: Pod
metadata:
name: <pod_name>
spec:
containers:
- name: <container1_name>
image: <container1_image>
- name: <container2_name>
image: <container2_image>
...
initContainers:
- name: <initcontainer_name>
image: <initcontainer_image>
... # może istnieć wiele init kontenerów
Sidecar Containers¶
Jego działanie jest podobne do init container, jest on uruchamiany przed głównym kontenerem, działa on w tle, nawet gdy właściwy kontener z aplikacją już działa. Restartowanie, stopowanie jego może odbywać się bez udziału głównego kontenera aplikacji, nawet aktualizowany bądź skalowany. Może być wykorzystywany do monitorowania, zbierania logów, lub innych funkcji monitorujących aplikację.
Definicja Poda:
apiVersion: v1
kind: Pod
metadata:
name: <pod_name>
spec:
containers:
- name: <container1_name>
image: <container1_image>
- name: <container2_name>
image: <container2_image>
...
initContainers:
- name: <initcontainer_name>
image: <initcontainer_image>
restartPolicy: Always # dodane
... # może istnieć wiele sidecar kontenerów