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
  • Liveness Probe Command Exec – Kubernetes

    Projektowanie i konfigurowanie

    Liveness Probe Command Exec – Kubernetes

    Liveness Probe Command Exec to element w Kubernetesie, dzięki któremu możesz kontrolować stan życia licznika w Podach za pomocą poleceń wewnątrz kontenerów. Opcja ta pozwala nam sprawdzić np. zawartość plików, istnienie plików oraz inne opcje (dostępne z poziomu poleceń), które mogą dać nam informację o poprawnej pracy naszego kontenera.

    W tym artykule pokażę przykład użycia Kubernetes Liveness Probe Command Exec i dostępnych opcji.

    Ustawienia Command Exec

    Liveness Probe ponownie uruchamia kontener, gdy polecenie zwróci kod błędu. 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 wykonawcze: 

    1. polecenie – lista poleceń (zależnych od dystrybucji obrazu), które ma wykonać sonda na żywo
    # YAML example
    # liveness-pod-example.yaml
    #
    apiVersion: v1 
    kind: Pod 
    metadata: 
      name: liveness-command-exec 
    spec: 
      containers: 
      - name: liveness 
        image: nginx 
        ports: 
            - containerPort: 80 
        livenessProbe: 
          exec:
            command:
            - cat
            - /usr/share/nginx/html/index.html
          initialDelaySeconds: 2 #Default 0 
          periodSeconds: 2 #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-command-exec  
    Restart Count:  0
    .
    .
    .
    Events:
      Type     Reason     Age              From                          Message
      ----     ------     ----             ----                          -------
      Normal   Scheduled  <unknown>        default-scheduler             Successfully assigned jenkins/liveness-command-exec to dcpoz-d-sou-k8swor2
      Normal   Pulling    100s             kubelet, dcpoz-d-sou-k8swor2  Pulling image "nginx"
      Normal   Pulled     97s              kubelet, dcpoz-d-sou-k8swor2  Successfully pulled image "nginx"
      Normal   Created    97s              kubelet, dcpoz-d-sou-k8swor2  Created container liveness
      Normal   Started    97s              kubelet, dcpoz-d-sou-k8swor2  Started container liveness
      Warning  Unhealthy  2s (x2 over 4s)  kubelet, dcpoz-d-sou-k8swor2  Liveness probe failed: cat: /usr/share/nginx/html/index.html: No such file or directory

    Pod działa świetnie, nie ma żadnych problemów.

     

    Aby sprawdzić czy sonda działa, usuń plik Index.html z poda „liveness-command-exec”.

    kubectl exec -it liveness-command-exec -- rm /usr/share/nginx/html/index.html 
    Plik Index.html został usunięty, a sonda na żywo próbowała sprawdzić (przez cat) ten plik. Plik nie istnieje; w związku z tym kontener zostanie uruchomiony ponownie. Wynik możesz zobaczyć poniżej.

     

    kubectl describe pod liveness-command-exec
    Restart Count: 1
    .
    .
    .
    Events:
      Type     Reason     Age                From                          Message
      ----     ------     ----               ----                          -------
      Normal   Scheduled  <unknown>          default-scheduler             Successfully assigned jenkins/liveness-command-exec to dcpoz-d-sou-k8swor2
      Warning  Unhealthy  5s (x3 over 9s)    kubelet, dcpoz-d-sou-k8swor2  Liveness probe failed: cat: /usr/share/nginx/html/index.html: No such file or directory
      Normal   Killing    5s                 kubelet, dcpoz-d-sou-k8swor2  Container liveness failed liveness probe, will be restarted
      Normal   Pulling    4s (x2 over 105s)  kubelet, dcpoz-d-sou-k8swor2  Pulling image "nginx"
      Normal   Pulled     2s (x2 over 102s)  kubelet, dcpoz-d-sou-k8swor2  Successfully pulled image "nginx"
      Normal   Created    2s (x2 over 102s)  kubelet, dcpoz-d-sou-k8swor2  Created container liveness
      Normal   Started    2s (x2 over 102s)  kubelet, dcpoz-d-sou-k8swor2  Started container liveness

    Ciekawi Cię, co jeszcze możesz przetestować za pomocą sond Kubernetes? Sprawdź tę konfigurację HTTPRequest.

    Autor: Wojciech Tokarski
     
    Grandmetric: Network & Security