Menu

Region US

Grandmetric LLC
Brookfield Place Office
200 Vesey Street
New York, NY 10281
EIN: 98-1615498
+1 302 691 94 10
info@grandmetric.com

Region EMEA

GRANDMETRIC Sp. z o.o.
ul. Metalowa 5, 60-118 Poznań, Poland
NIP 7792433527
+48 61 271 04 43
info@grandmetric.com

UK

Grandmetric LTD
Office 584b
182-184 High Street North
London
E6 2JA
+44 20 3321 5276
info@grandmetric.com

  • en
  • pl
  • K8S Liveness Probe HTTP Request

    Projektowanie i konfigurowanie

    K8S Liveness Probe HTTP Request

    Liveness Probe HTTPRequest to element w Kubernetes, dzięki któremu możesz kontrolować stan życia licznika w podach za pomocą protokołu HTTP. Komponent umożliwia wysyłanie zapytań do określonego punktu końcowego w kontenerze i wnioskowanie, czy aplikacja działa poprawnie.

    W tym artykule wymienię niektóre typowe ustawienia opcji Kubernetes Liveness Probe i httpGet. Następnie pokażę ci działający przykład, jak poprawnie skonfigurować Liveness Probe w swoim kodzie.

     

    Ustawienia Liveness Probe

    Liveness Probe ponownie uruchamia kontener, gdy dany punkt końcowy zwróci stan wyższy niż 399. Ta funkcja ma również kilka przydatnych ustawień, takich jak:

    1. initialDelaySeconds – czas, po jakim liveness probe powinien rozpocząć odpytywanie punktu końcowego
    2. periodSeconds — częstotliwość odpytywania punktu końcowego
    3. timeoutSeconds – czas, po którym upłynie limit czasu.
    4. successThreshold – minimalna liczba udanych prób, po której liveness probe stwierdzi poprawność działania kontenera
    5. failThreshold – liczba nieudanych prób, po których kontener zostanie zrestartowany

    Opcje httpGet:

    1. host — nazwa hosta, z którym ma zostać nawiązane połączenie
    2. scheme – typ protokołu HTTP lub HTTPS
    3. path – ścieżka dostępu na serwerze HTTP/HTTPS
    4. httpHeaders — niestandardowe nagłówki do ustawienia w żądaniu
    5. port — numer portu, do którego można uzyskać dostęp w kontenerze

     

     

    # YAML example
    # liveness-pod-example.yaml
    #
    apiVersion: v1 
    kind: Pod 
    metadata: 
      name: liveness-request 
    spec: 
      containers: 
      - name: liveness 
        image: nginx 
        ports: 
            - containerPort: 80 
        livenessProbe: 
          httpGet: 
            path: / 
            port: 80 
          initialDelaySeconds: 2 #Default 0 
          periodSeconds2 #Default 10 
          timeoutSeconds: 1 #Default 1 
          successThreshold: 1 #Default 1 
          failureThreshold: 3 #Default 3 

     

    Liveness Probe HTTP Request – przykłady

    Utwórz pod:

    kubectl create -f liveness-pod-example.yaml

     

    Opisz pod:

    kubectl describe pod liveness-request  
    Restart Count:  0
    .
    .
    .
    Events:
    Type Reason Age From Message
    ---- ------ ---- ---- -------
    Normal Scheduled <unknown> default-scheduler Successfully assigned example-dc/liveness-request to dcpoz-d-sou-k8swor3
    Normal Pulling 4m45s kubelet, dcpoz-d-sou-k8swor3 Pulling image "nginx"
    Normal Pulled 4m42s kubelet, dcpoz-d-sou-k8swor3 Successfully pulled image "nginx"
    Normal Created 4m42s kubelet, dcpoz-d-sou-k8swor3 Created container liveness
    Normal Started 4m42s kubelet, dcpoz-d-sou-k8swor3 Started container liveness

     

    Pod działa.

     

    Żeby sprawdzić, czy działa liveness probe, usuń plik index.html z poda „liveness-request” poniższą komendą.

    kubectl exec -it liveness-request -- rm /usr/share/nginx/html/index.html 

    Plik index.html został usunięty, a liveness probe próbował wysłać request do portu 80, ponieważ status odpowiedzi nie znajdował się w zakresie między 200 a 399. Kontener zostanie uruchomiony ponownie. Rezultat zobaczysz poniżej:

    kubectl describe pod liveness-request 
    Restart Count: 1
    .
    .
    .
    Events:
    Type Reason Age From Message
    ---- ------ ---- ---- -------
    Normal Scheduled <unknown> default-scheduler Successfully assigned example-dc/liveness-request to dcpoz-d-sou-k8swor3
    Normal Pulling 9s (x2 over 11m) kubelet, dcpoz-d-sou-k8swor3 Pulling image "nginx"
    Warning Unhealthy 9s (x3 over 13s) kubelet, dcpoz-d-sou-k8swor3 Liveness probe failed: HTTP probe failed with statuscode: 403
    Normal Killing 9s kubelet, dcpoz-d-sou-k8swor3 Container liveness failed liveness probe, will be restarted
    Normal Pulled 7s (x2 over 11m) kubelet, dcpoz-d-sou-k8swor3 Successfully pulled image "nginx"
    Normal Created 7s (x2 over 11m) kubelet, dcpoz-d-sou-k8swor3 Created container liveness
    Normal Started 7s (x2 over 11m) kubelet, dcpoz-d-sou-k8swor3 Started container liveness 
    Autor: Wojciech Tokarski
     
    Grandmetric: Network & Security