Menu

Region US

Grandmetric LLC
Lewes DE 19958
16192 Coastal Hwy USA
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
  • Sonda aktywności Kubernetes – HTTPRequest

    Projektowanie i konfigurowanie

    Sonda aktywności Kubernetes – HTTPRequest

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

    W tym artykule wymienię kilka typowych ustawień Kubernetes Liveness Probe i opcji httpGet. Następnie pokażę działający przykład prawidłowego skonfigurowania Liveness Probe w kodzie.

    Ustawienia sondy 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 którym 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órych sonda określi poprawność działania pojemnika
    5. failureThreshold – liczba nieudanych prób, po których kontener zostanie uruchomiony ponownie

     

    Opcje httpGet: 

    1. host – Nazwa hosta, z którym można się połączyć
    2. scheme – Typ protokołu HTTP lub HTTPS
    3. path – Ścieżka dostępu do serwera 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 

     

    Sonda żywotności – przykład

    Utwórz kapsułę:

    kubectl create -f liveness-pod-example.yaml

     

    Opisz kapsułę:

    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 świetnie, nie ma żadnych problemów.

     

    Aby sprawdzić czy sonda na żywo działa, usuń plik Index.html z poda „liveness-request”.

    kubectl exec -it liveness-request -- rm /usr/share/nginx/html/index.html 
    Plik Index.html został usunięty, a sonda na żywo próbowała wysłać żądanie na port 80, ponieważ stan odpowiedzi nie mieścił się w zakresie od 200 do 399. W związku z tym kontener zostanie uruchomiony ponownie. Wynik możesz zobaczyć 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