DevOps-bootcamp · Oppitunti

Terveystarkistukset: liveness- ja readiness-probet

Määrittäkää liveness- ja readiness-probet varmistaaksenne, että sovelluksenne ovat toimintakykyisiä ja valmiita vastaanottamaan liikennettä.

Oppitunti 3/412 vaihetta

Terveystarkistukset: liveness- ja readiness-probet on ilmainen DevOps-bootcamp-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu DevOps-bootcamp-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. DevOps-bootcamp-kurssilla on yhteensä 4 oppituntia.

Sovellusten pitäminen toimintakuntoisina

Mistä Kubernetes tietää, toimiiko sovelluksenne todella? Pelkkä säilön käynnissä oleminen ei riitä, vaan sen on oltava terve ja valmis vastaanottamaan liikennettä.

Kubernetes käyttää sovellustenne valvontaan erityisiä tarkistuksia, joita kutsutaan probeiksi. Näiden probejen avulla käyttäjillänne on aina luotettava palvelukokemus.

Mitä ovat liveness-probet?

Liveness-probe tarkistaa, onko sovelluksenne edelleen toiminnassa ja vastaako se pyyntöihin. Jos liveness-probe epäonnistuu, Kubernetes olettaa säilön olevan epäkunnossa ja käynnistää sen uudelleen.

Ajatelkaa sitä sykemittarina: jos sydän pysähtyy, uudelleenkäynnistys on tarpeen! Tämä auttaa palautumaan lukkiutuneista tilanteista ja sovellusten kaatumisista.

Liveness-proben perusteet

Voitte määrittää liveness-probet eri menetelmillä:

  • HTTP GET: Lähettää HTTP-pyynnön määritettyyn polkuun.
  • TCP Socket: Tarkistaa, voidaanko porttiin avata TCP-yhteys.
  • Exec Command: Suorittaa komennon säilön sisällä.

Verkkosovelluksissa HTTP GET on hyvin yleinen. Seuraavassa katkelmassa näytetään, miten sellainen määritetään Podin YAML-tiedostossa:

livenessProbe:
  httpGet:
    path: /healthz
    port: 8080
  initialDelaySeconds: 5
  periodSeconds: 5

Liveness-probe käytännössä

Tämä Python Flask -sovellus simuloi epätervettä tilaa kaatumalla kahden /healthz-pyynnön jälkeen. Kubernetesin probe havaitsee tämän ja käynnistää säilön uudelleen.

Tallentakaa tämä ensin nimellä app.py:

from flask import Flask, Response
import os
import time

app = Flask(__name__)
request_count = 0

@app.route('/healthz')
def health_check():
    global request_count
    request_count += 1
    if request_count > 2:
        print("Liveness probe failing! Exiting...")
        os._exit(1) # Simulate a crash
    print(f"Liveness probe successful (count: {request_count})")
    return Response("OK", status=200)

@app.route('/')
def home():
    return "Hello from the Liveness Probe Demo!"

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8080)

Liveness-proben suorittaminen

Tarkastellaan nyt, miten Kubernetes käyttää liveness-probea. Jos otatte tämän käyttöön seuraavalla YAML-tiedostolla, Kubernetes käynnistää Podin uudelleen terveystarkistuksen epäonnistuessa:

apiVersion: v1
kind: Pod
metadata:
  name: liveness-demo
spec:
  containers:
  - name: liveness-container
    image: python:3.9-slim-buster
    command: ["python", "app.py"]
    ports:
    - containerPort: 8080
    livenessProbe:
      httpGet:
        path: /healthz
        port: 8080
      initialDelaySeconds: 5
      periodSeconds: 5
      failureThreshold: 1
    volumeMounts:
    - name: app-volume
      mountPath: /app
  volumes:
  - name: app-volume
    configMap:
      name: liveness-app-config

# (You'd need a ConfigMap for app.py, omitted for brevity)

Käyttöönoton jälkeen kaksi tarkistusta onnistuu, mutta kolmas epäonnistuu ja Kubernetes käynnistää säilön uudelleen.

Mitä ovat readiness-probet?

Readiness-probe tarkistaa, onko sovelluksenne valmis vastaanottamaan liikennettä. Jos readiness-probe epäonnistuu, Kubernetes lopettaa liikenteen lähettämisen kyseiseen Podiin, mutta ei käynnistä sitä uudelleen.

Tämä on ratkaisevan tärkeää käynnistyksen aikana (esimerkiksi tietokantayhteyttä odotettaessa) ja hallitun alasajon yhteydessä. Ajatelkaa kysymystä: ”Onko myymälä avoinna asiakkaille?”

Readiness-proben perusteet

Readiness-probet määritetään liveness-probejen tapaan HTTP GET-, TCP Socket- tai Exec-komentojen avulla. Keskeinen ero on niiden vaikutuksessa:

  • Liveness: Käynnistää säilön uudelleen epäonnistumisen jälkeen.
  • Readiness: Poistaa Podin palvelupäätepisteistä epäonnistumisen jälkeen (liikennettä ei ohjata Podiin).

Seuraavassa on katkelma readiness-probesta:

readinessProbe:
  httpGet:
    path: /ready
    port: 8080
  initialDelaySeconds: 10
  periodSeconds: 5

Readiness-probe käytännössä

Tämä Flask-sovellus simuloi sovellusta, jonka alustaminen kestää jonkin aikaa (esimerkiksi tietokantaan yhdistettäessä). Se ilmoittaa olevansa ”ready” vasta 5 sekunnin kuluttua.

Tallentakaa tämä nimellä ready_app.py:

from flask import Flask, Response
import time

app = Flask(__name__)
start_time = time.time()
READY_AFTER_SECONDS = 5

@app.route('/ready')
def readiness_check():
    if time.time() - start_time > READY_AFTER_SECONDS:
        print("Readiness probe successful: App is ready!")
        return Response("READY", status=200)
    else:
        print("Readiness probe failing: App not ready yet...")
        return Response("NOT READY", status=503)

@app.route('/')
def home():
    return "Hello from the Readiness Probe Demo!"

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8080)

Readiness-kyselyn suorittaminen

Kun tämä YAML-määritys otetaan käyttöön, Pod ei vastaanota liikennettä ensimmäisen initialDelaySeconds-ajan aikana eikä ennen kuin /ready palauttaa vastauksen 200 OK.

apiVersion: v1
kind: Pod
metadata:
  name: readiness-demo
spec:
  containers:
  - name: readiness-container
    image: python:3.9-slim-buster
    command: ["python", "ready_app.py"]
    ports:
    - containerPort: 8080
    readinessProbe:
      httpGet:
        path: /ready
        port: 8080
      initialDelaySeconds: 10
      periodSeconds: 3
    volumeMounts:
    - name: app-volume
      mountPath: /app
  volumes:
  - name: app-volume
    configMap:
      name: readiness-app-config

# (You'd need a ConfigMap for ready_app.py, omitted for brevity)

Näin varmistetaan, että liikenne ohjataan vain aidosti valmiille instansseille.

Elossaolo- ja readiness-kyselyt

On tärkeää käyttää molempia kyselyitä oikein:

  • Liveness-kysely: Sen avulla havaitaan, onko sovellus kaatunut tai palautumattomassa tilassa. Jos kysely epäonnistuu, Kubernetes käynnistää säilön uudelleen.
  • Readiness-kysely: Sen avulla havaitaan, onko sovellus valmis vastaanottamaan ja käsittelemään pyyntöjä. Jos kysely epäonnistuu, Kubernetes lopettaa liikenteen lähettämisen Podille.

Niillä on eri mutta toisiaan täydentävät tarkoitukset, joiden avulla sovellukset pysyvät toimintavarmoina.

Testaa ymmärryksesi

Mitkä seuraavista Liveness- ja Readiness-kyselyitä koskevista väitteistä ovat TOSIA?

Kyselyt: tärkeimmät asiat

Tässä oppitunnissa opitte Kubernetesin Liveness- ja Readiness-kyselyistä. Nämä kuntotarkistukset ovat olennaisia sovellustenne toimintavarmuuden ja saatavuuden ylläpitämisessä:

  • Liveness-kyselyt havaitsevat vialliset säilöt ja käynnistävät ne uudelleen.
  • Readiness-kyselyt määrittävät, milloin Pod on valmis vastaanottamaan verkkoliikennettä.

Niiden tehokas käyttö varmistaa, että sovelluksenne vastaavat pyyntöihin ja kestävät häiriötilanteita.

Aloita maksutta

Opi DevOps-bootcamp tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
142
Oppitunnit
568

Usein kysytyt kysymykset

Onko oppitunti ”Terveystarkistukset: liveness- ja readiness-probet” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa DevOps-bootcamp-oppimispolun 3 oppituntia, myös oppitunnin “Terveystarkistukset: liveness- ja readiness-probet”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. DevOps-bootcamp-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Terveystarkistukset: liveness- ja readiness-probet”?

Määrittäkää liveness- ja readiness-probet varmistaaksenne, että sovelluksenne ovat toimintakykyisiä ja valmiita vastaanottamaan liikennettä. Harjoittelet DevOps-bootcamp-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni DevOps-bootcamp-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin DevOps-bootcamp-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”Terveystarkistukset: liveness- ja readiness-probet”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä DevOps-bootcamp-oppitunnilla?

Kyllä. Jokainen DevOps-bootcamp-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Lokitus kubectl logs -komennolla
  2. Mittarit Prometheuksella ja Grafanalla
  3. Terveystarkistukset: liveness- ja readiness-probet
  4. Hajautettu jäljitys ja tapahtumat
← Takaisin: DevOps-bootcamp