Skip to content

Readiness/Liveness Probes

Desarrollo del tema

La presente guía aborda la configuracion de health checks a Pods mediante pruebas de Kubernetes.

Laboratorio: Readiness/Liveness Probes

Descripción

La presente guía aborda la configuracion de health checks a Pods mediante pruebas de Kubernetes.

Objetivos

  • Crear un Deployment a partir de un archivo YAML
  • Configurar pruebas de Readiness al Deployment
  • Configurar pruebas de Liveness al Deployment
  • Validar las configuraciones proporcionadas al Deployment

Antes de comenzar

  • Contar con el acceso al ambiente de laboratorio

Conexión hacia cluster

  1. Ingrese al cluster asignado con las credenciales proporcionadas

  2. Obtenga el archivo kubeconfig posicionando sobre la carpeta a trabajar y cambiando su nombre a config

    mv /path/to/kubeconfig ~/.kube/config
    

  3. Configure la variable KUBECONFIG

    export KUBECONFIG=~/.kube/config
    

  4. Verifique el acceso mediante comandos

    kubectl get namespaces
    kubectl config set-context --current --namespace=userx
    

Inicio de laboratorio

  1. Cree un directorio llamado k8s-probes y ubíquese dentro de ella

    mkdir k8s-probes ; cd k8s-probes
    

  2. Cree un archivo llamado deployment-probes.yaml con el siguiente contenido

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: basic-api
      namespace: userx
      labels:
        app: basic-api
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: basic-api
      template:
        metadata:
          labels:
            app: basic-api
        spec:
          containers:
            - name: basic-api
              image: quay.io/rlam/api-demo:1.0
              ports:
                - containerPort: 8080
    

  3. Agregue el bloque livenessProbe en spec.template.spec.containers[0] de tipo HTTP Request

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: basic-api
      namespace: userx
      labels:
        app: basic-api
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: basic-api
      template:
        metadata:
          labels:
            app: basic-api
        spec:
          containers:
            - name: basic-api
              image: quay.io/rlam/api-demo:1.0
              livenessProbe:
                httpGet:
                  path: /
                  port: 8080
              ports:
                - containerPort: 8080
    

  4. Agregue al livenessProbe los parametros initialDelaySeconds y periodSeconds

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: basic-api
      namespace: userx
      labels:
        app: basic-api
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: basic-api
      template:
        metadata:
          labels:
            app: basic-api
        spec:
          containers:
            - name: basic-api
              image: quay.io/rlam/api-demo:1.0
              livenessProbe:
                httpGet:
                  path: /
                  port: 8080
                initialDelaySeconds: 20
                periodSeconds: 3
              ports:
                - containerPort: 8080
    

  5. Levante el recurso

    kubectl apply -f deployment-probes.yaml
    

  6. Revise los deployments en el namespace

    kubectl get deployments
    

  7. Revise los eventos

    kubectl get events
    

  8. Revise los pods en el namespace

    kubectl get pods
    

  9. Agregue el bloque readinessProbe en spec.template.spec.containers[0] de tipo TCP

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: basic-api
      namespace: userx
      labels:
        app: basic-api
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: basic-api
      template:
        metadata:
          labels:
            app: basic-api
        spec:
          containers:
            - name: basic-api
              image: quay.io/rlam/api-demo:1.0
              livenessProbe:
                httpGet:
                  path: /
                  port: 8080
                initialDelaySeconds: 20
                periodSeconds: 3
              readinessProbe:
                tcpSocket:
                  port: 8080
                initialDelaySeconds: 25
                periodSeconds: 10
              ports:
                - containerPort: 8080
    

  10. Sincronize los cambios

    kubectl apply -f deployment-probes.yaml
    

  11. Revise los deployments en el namespace

    kubectl get deployments
    

  12. Revise los pods en el namespace

    kubectl get pods
    

  13. Revise los eventos

    kubectl get events
    

  14. Limpie el ambiente

    kubectl delete -f deployment-probes.yaml