Sobes.tech
Middle

Do czego służą próby w Kubernetes?

sobes.tech AI

Odpowiedź od AI

Próby w Kubernetes służą do określenia stanu kontenerów i zarządzania cyklem życia podów. Umożliwiają klastrowi automatyczną reakcję na zmiany stanu aplikacji, zapewniając ich dostępność i stabilność.

Istnieją trzy główne typy prób:

  • Liveness probe (Próba żywotności): Określa, czy aplikacja wewnątrz kontenera działa. Jeśli próba żywotności zakończy się błędem, Kubernetes ponownie uruchomi kontener.
  • Readiness probe (Próba gotowości): Określa, czy kontener jest gotowy do przyjmowania ruchu. Jeśli próba gotowości zakończy się błędem, Kubernetes tymczasowo wyklucza pod z listy dostępnych punktów końcowych dla serwisu, który kieruje do niego ruch.
  • Startup probe (Próba uruchomienia): Określa, czy aplikacja w kontenerze zakończyła uruchamianie. Może być używana dla aplikacji wymagających długiego czasu inicjalizacji. Jeśli próba uruchomienia zakończy się sukcesem, kolejne kontrole (żywotność/gotowość) rozpoczynają się zgodnie z harmonogramem. Jeśli nie powiedzie się w określonym czasie, Kubernetes zabije i ponownie uruchomi kontener.

Próby mogą być realizowane na różne sposoby:

  • ExecAction: Wykonuje polecenie wewnątrz kontenera. Sukces jest określany na podstawie kodu zwrotu (0 - sukces, nie 0 - błąd).
    # Przykład ExecAction dla próby żywotności
    livenessProbe:
      exec:
        command:
        - cat
        - /tmp/healthy
      initialDelaySeconds: 5
      periodSeconds: 5
    
  • HTTPGetAction: Wysyła żądanie HTTP GET do wskazanego portu i ścieżki kontenera. Sukces jest określany na podstawie kodu statusu HTTP (zazwyczaj 2xx lub 3xx).
    # Przykład HTTPGetAction dla próby gotowości
    readinessProbe:
      httpGet:
        path: /ready
        port: 8080
      initialDelaySeconds: 5
      periodSeconds: 5
      failureThreshold: 3
    
  • TCPSocketAction: Próbuje nawiązać połączenie TCP na wskazanym porcie kontenera. Sukces jest określany na podstawie pomyślnego połączenia.
    # Przykład TCPSocketAction dla próby żywotności
    livenessProbe:
      tcpSocket:
        port: 8080
      initialDelaySeconds: 15
      periodSeconds: 20
    

Poprawne użycie prób jest kluczowe dla niezawodności i odporności na błędy aplikacji w Kubernetes.