Kubernetes dla każdego – sztuka konteneryzacji
Pending
Kubernetes przyjął definicję ale trwa tworzenie obiektu/przydzielanie do serweraRunning
W pełni działający pod, kontenery wewnątrz poda działają, conajmniej jeden kontener działaSucceeded
Exit code=0 zwrócone do konsoli, wszystki kontenery zakończyły pracąFailed
Wystąpił problem w przynajmniej jednym kontenerze w podzie (zakończył pracę ze złym kodem)Unknown
Nieokreślony, nieznany stan poda
PodScheduled
pod został przypisany do węzłaReady
pod jest gotowy do przyjęcia ruchuInitialized
wszystkie kontenery typu Init wystartowałyUnschedulable
nie można przypisać poda do węzłaContainersReady
wszystkie kontenery w podzie wystartowały i są gotoweDiagnowstyka uruchamiana okreowo przez kubelet na kontenerze.
W celu wykonania diagnostyki, kubelet odpytuje Handler zaimplementowany przez kontener
Zapewnia, że proces jest uruchomiony.
Jeśli zauważy, że kontener nie jest w stanie Running
lub Succeded
automatycznie wykona jego restart.
Stany: Success
, Failure
, Unknown
ExecAction
wykonuje określoną komendę w kontenerze i sprawdza czy exit code==0
TCPSocketAction
odpytanie TCP do określonego adresu oraz portu kontenera i sprawdza czy port jest otwartyHTTPGetAction
wykonuje zapytanie do określonego IP, portu oraz ścieżki w kontenerze. Zapytanie uważane jest za udane jeśli kod odpowiedzie mieści się pomiędzy <200,400).initialDelaySeconds
czas jaki musi minąć po uruchomieniu kontenera/aplikacji do inicjalizacji Liveness/Readiness ProbeperiodSeconds
czas pomiędzy kolejnymi testami [10s] [min. 1s]timeoutSeconds
timeout próby [1s] [min. 1s]successTreshold
minimalna ilość prób do określenia statusu success
failureTreshold
ilość prób restartuOkreśla czy kontener działa. Definicję sondy dołączamy do definicji poda i dotyczyć może każdego z naszych kontenerów. Jeśli próbka nie powiedzie się to Kubernetes automatycznie zrestartuje kontener.
Sprawdza czy kontener jest w stanie dostarczać odpowiedzi (przyjąć ruch przychodzący). Jeśli nie jego, to kontener jest odpinany z serwisu ponad podem i ruch nie jest do niego kierowany.
PodSpec
restartów restartPolicy
:
Always
domyślnie - niezależnie od koduOnFailure
kod wyjścia inny niż 0Never
restartPolicy
odnosi się do restartowania kontenerów przez kubelet tylko na tym samym nodzie, restart jest wykładniczy 10s, 20, 40s, ograniczony do 5 min.Odpowiednik tagów w Azure.
key
:value
kubectl apply -f pod_labels.yaml
kubectl get pods --show-labels
wyświetlenie podów z labelkamikubectl get pod -l env=dev --show-labels
filtrowanie zasobówkubectl delete pod -l env=dev
key
:value
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
name: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
apiVersion
wersja API Kubernetesakind
Typ obiektuspec
Specyfikacja określająca jaki kontener (lub kilka) chcemy uruchomić w naszym środowiskuimagePullPolicy
w jaki sposób pobrać obraz:
IfNotPresent
(domyślne)Always
Never
resources
limity zasobów dla konteneraports
udostępniane porty na zewnątrzcommand
przekazanie poleceniakubectl create -f pod.yaml
Utworzenie poda z pliku
kubectl create -f pod.yaml --save-config=true
utworzenie poda z pliku z zapamiętaną konfiguracją - konfiguracja obiektu zostanie zapisana w annotacjach, pozwala na zaktualizowanie definicji
kubectl apply -f pod.yaml
Utworzenie lub update poda z pliku
kubectl replace -f pod.yaml
zamiana poda, usuwa obecny i tworzy nowy
kubectl run NAME --image=IMAGE --generator=run-pod/v1
kubectl run NAME --image=IMAGE --restart=Never
kubectl run busybox --image=busybox --restart=Never --dry-run -o yaml > pod2.yaml
lifecycle:
postStart:
exec:
command: komenda
preStop:
exec:
command: komenda
Requests
zasoby potrzebne do startu konteneraLimits
maksymalne zasoby przydzielone kontenerowi
Guaranteed
gwarantowanaBurstable
mogąca powiększać swoje zasoby do określonego limituBestEffort
Kubernetes postara się przydzielić jak najlepiej zasoby aplikacji