Usar o modo de manutenção em um cluster de banco de dados no Kubernetes

Nesta página, mostramos como colocar o banco de dados no modo de manutenção em um cluster do Kubernetes.

Se o banco de dados for executado em um cluster do Kubernetes, você poderá colocar o banco de dados no modo de manutenção desativando as sondagens de atividade e as sondagens de inicialização, que são executadas no aplicativo contêinerizado, para garantir que o pod do banco de dados esteja em um estado saudável. O modo de manutenção ajuda a colocar um pod em um estado em execução quando você precisa fazer uma atualização de manutenção ou reparar o pod.

Ativar o modo de manutenção

  1. Verifique se as sondagens existem em um pod de banco de dados:

    1. Sondagem de atividade:

      kubectl get po -n NAMESPACE DATABASE_POD_NAME  -o jsonpath='{.spec.containers[?(@.name=="database")].livenessProbe}'

      Substitua:

      • NAMESPACE: o nome de um namespace usado para executar o banco de dados, por exemplo, db.
      • DATABASE_POD_NAME: o nome do pod do banco de dados, por exemplo, al-4017-dbcluster-sample-0.

      Confira a seguir um exemplo de saída com uma sondagem de atividade:

      {"failureThreshold":3,"httpGet":{"path":"/healthz?","port":8090,"scheme":"HTTP"},"periodSeconds":10,"successThreshold":1,"timeoutSeconds":3}
      
    2. Sondagem de inicialização:

      kubectl get po -n NAMESPACE DATABASE_POD_NAME -o jsonpath='{.spec.containers[?(@.name=="database")].startupProbe}'

      Confira a seguir um exemplo de saída com uma sondagem de inicialização:

      {"exec":{"command":["/usr/lib/postgresql/15/bin/psql","-hlocalhost","-Ualloydbadmin","-c","SELECT 1"]},"failureThreshold":180,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1}
      
  2. Defina mode como maintenance na seção spec do manifesto do DBCluster:

    apiVersion: alloydbomni.dbadmin.goog/v1
    kind: DBCluster
    metadata:
      name: DB_CLUSTER_NAME
      namespace: NAMESPACE
    spec:
      allowExternalIncomingTraffic: false
      isDeleted: false
      mode: maintenance
      primarySpec:
      ...
    

    Substitua DB_CLUSTER_NAME pelo nome do cluster de banco de dados, por exemplo, my-db-cluster.

  3. Aplique o manifesto:

    kubectl apply -f DB_CLUSTER_YAML

    Substitua DB_CLUSTER_YAML pelo nome do arquivo de manifesto do cluster do banco de dados, por exemplo, alloydb-omni-db-cluster.yaml.

  4. Para verificar se o modo de manutenção está ativado, execute os seguintes comandos:

    • Sondagem de atividade:

      kubectl get po -n NAMESPACE DATABASE_POD_NAME  -o jsonpath='{.spec.containers[?(@.name=="database")].livenessProbe}'
    • Sondagem de inicialização:

      kubectl get po -n NAMESPACE DATABASE_POD_NAME  -o jsonpath='{.spec.containers[?(@.name=="database")].startupProbe}'

    A saída não contém os campos Liveness e Startup na seção spec do pod POD_NAME.

Desativar o modo de manutenção

Para retornar ao comportamento padrão do cluster de banco de dados com sondas de inicialização e de atividade em execução, use o comando a seguir para remover maintenance da seção spec do manifesto do DBCluster:

kubectl patch dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -p '{"spec":{"mode":""}}' --type=merge -n DB_CLUSTER_NAMESPACE --type=merge

Exemplos de saídas:

  • Com uma sondagem de atividade:

    {"failureThreshold":3,"httpGet":{"path":"/healthz?","port":8090,"scheme":"HTTP"},"periodSeconds":10,"successThreshold":1,"timeoutSeconds":3}
    
  • Com uma sondagem de inicialização:

    {"exec":{"command":["/usr/lib/postgresql/15/bin/psql","-hlocalhost","-Ualloydbadmin","-c","SELECT 1"]},"failureThreshold":180,  "periodSeconds":10,"successThreshold":1,"timeoutSeconds":1}