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==0TCPSocketAction 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 successfailureTreshold 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ż 0NeverrestartPolicy 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.yamlkubectl get pods --show-labels wyświetlenie podów z labelkamikubectl get pod -l env=dev --show-labels filtrowanie zasobówkubectl delete pod -l env=devkey:valueapiVersion: 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)AlwaysNeverresources 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