Sustitución de volúmenes de inicio de nodos de trabajador

Descubra cómo sustituir los volúmenes de inicio de los nodos de trabajador en un cluster de Kubernetes que ha creado con Kubernetes Engine (OKE).

Nota

Solo puede sincronizar nodos para sustituir los volúmenes de inicio de los nodos de trabajador al utilizar clusters mejorados. Consulte Trabajar con clusters mejorados y clusters básicos.

Puede sincronizar los nodos para sustituir los volúmenes de inicio de los nodos de trabajador por unidades de máquina virtual y unidades con hardware dedicado.

Puede sincronizar los nodos para sustituir los volúmenes de inicio de los nodos gestionados y los nodos autogestionados.

A veces, la sustitución de los volúmenes de inicio de las instancias informáticas que alojan nodos de trabajador es la mejor manera de resolver un problema con los nodos de trabajador. Por ejemplo:

  • Para solucionar cualquier cambio de configuración que pueda haberse producido desde que se inició originalmente la instancia.
  • Para solucionar cualquier fallo de hardware subyacente.

Con Kubernetes Engine, puede:

Al sincronizar y sustituir el volumen de inicio de un nodo de trabajador, Kubernetes Engine conecta y drena automáticamente el nodo de trabajador antes de cerrarlo. La instancia informática que aloja el nodo de trabajador se para, el volumen de inicio se sustituye y la instancia se reinicia. Tenga en cuenta que la instancia en sí no termina y mantiene el mismo OCID y la misma dirección de red.

Sustitución de los volúmenes de inicio de todos los nodos de un pool de nodos gestionado para cambiar las propiedades del nodo

Cuando desee actualizar una o más de las siguientes propiedades de nodo especificadas para el pool de nodos, puede sincronizar todos los nodos de un pool de nodos para sustituir sus volúmenes de inicio:

  • BootVolumeSizeInGBs
  • ImageId
  • KmsKeyId
  • KubernetesVersion
  • NodeMetadata
  • SshPublicKey

Tenga en cuenta lo siguiente al sincronizar todos los nodos de un pool de nodos para reemplazar sus volúmenes de inicio:

  • Si actualiza una o más de las propiedades de la lista, las actualizaciones de propiedades se aplican a todos los nodos del pool de nodos.
  • Si no actualiza ninguna de las propiedades de la lista, los nodos del pool de nodos no se sincronizan y los volúmenes de inicio no se sustituyen.
  • Si actualiza una propiedad que no está en la lista, la operación de sincronización de nodos y sustitución de volúmenes de inicio falla.

La sustitución de los volúmenes de inicio de todos los nodos de un pool de nodos puede ser útil cuando desee:

Sustitución de los volúmenes de inicio de nodos gestionados y autogestionados individuales

Puede sincronizar nodos gestionados individuales o nodos autogestionados para sustituir sus volúmenes de inicio cuando la sustitución de volúmenes de inicio sea todo lo que necesita.

Tenga en cuenta lo siguiente al sincronizar nodos gestionados individuales o nodos autogestionados para reemplazar sus volúmenes de inicio:

  • Tanto para los nodos gestionados como para los nodos autogestionados, la configuración de nodos existente se conserva al sincronizar nodos para sustituir los volúmenes de inicio. En el caso de los nodos gestionados, las actualizaciones de las propiedades de nodo especificadas para el pool de nodos se ignoran.
  • Puede utilizar la consola, la CLI o la API para sincronizar y sustituir los volúmenes de inicio de los nodos gestionados.
  • Debe utilizar la CLI o la API para sincronizar y sustituir los volúmenes de inicio de los nodos autogestionados. No puede utilizar la consola para sincronizar y sustituir los volúmenes de inicio de los nodos autogestionados.

Equilibrio entre la disponibilidad y el costo del servicio al sincronizar y sustituir volúmenes de inicio de nodos gestionados en pools de nodos

Al sincronizar todos los nodos gestionados de un pool de nodos para sustituir sus volúmenes de inicio, cuanto mayor sea el número de nodos que permita que no estén disponibles durante la operación de sustitución de volumen de inicio, más nodos podrá actualizar Kubernetes Engine en paralelo sin aumentar los costos. Sin embargo, cuanto mayor sea el número de nodos que permita que no estén disponibles, mayor será la disponibilidad del servicio.

Para adaptar el comportamiento del motor de Kubernetes a sus propios requisitos de disponibilidad y costo del servicio, puede especificar un valor para maxUnavailable. Para obtener más información, consulte Balancing Service Availability and Cost When Cycling Managed Nodes in Node Pools.

Conexión de cables y drenaje al sincronizar y reemplazar volúmenes de inicio de nodos

Al seleccionar un pool de nodos y especificar que desea sincronizar y sustituir los volúmenes de inicio de sus nodos de trabajador, Kubernetes Engine conecta y drena automáticamente los nodos gestionados existentes. Kubernetes Engine utiliza las opciones de Cordón y vaciado especificadas para el pool de nodos.

Al seleccionar un nodo de trabajador individual (ya sea un nodo gestionado o un nodo autogestionado) y especificar que desea sincronizar y sustituir el volumen de inicio de ese nodo, puede especificar las opciones de Cordón y vaciado. En el caso de los nodos gestionados, las opciones de cordón y vaciado que especifique para un nodo gestionado sustituyen las opciones de cordón y vaciado especificadas para el pool de nodos.

Para obtener más información, consulte Cordoning and Draining Managed Nodes Before Shut Down or Termination.

Sustitución de volúmenes de inicio de nodos de trabajador

  • Para sustituir los volúmenes de inicio de todos los nodos de trabajador en un pool de nodos gestionado:

    1. En la página de lista Clusters, seleccione el nombre del cluster que contiene los nodos de trabajador de los que desea sustituir los volúmenes de inicio. Si necesita ayuda para encontrar la página de lista o el cluster, consulte Listing Clusters.
    2. En Recursos, seleccione Pools de nodos y, a continuación, seleccione el nombre del pool de nodos que contiene los nodos de trabajador de los que desea sustituir los volúmenes de inicio.
    3. Seleccione Editar y cambie al menos una de las propiedades admitidas que se muestran en Sustitución de los volúmenes de inicio de todos los nodos de un pool de nodos gestionado para cambiar las propiedades del nodo.
    4. En la página Pool de nodos, seleccione Nodos de ciclo.

      Recomendado: aproveche los presupuestos de interrupción de pod según corresponda para su aplicación con el final de garantizar que haya un número suficiente del pods de réplica de ejecución durante la operación de vaciador. Para obtener más información, consulte Especificación de un presupuesto de interrupción para la aplicación en la documentación de Kubernetes.

    5. En el cuadro de diálogo Nodos de ciclo:

      1. Seleccione Replace boot volume (Sustituir volumen de inicio) en la lista Cycling options (Opciones de ciclo).
      2. Controle el número de nodos que se van a actualizar en paralelo y equilibre la disponibilidad y el costo del servicio especificando:
        • Número o porcentaje máximo de nodos no disponibles (maxUnavailable): número máximo de nodos que permite que no estén disponibles en el pool de nodos durante la operación de sustitución del volumen de inicio (expresado como un entero o como un porcentaje). Si especifica un número entero para el número de nodos no disponibles, no especifique un número mayor que el valor de Recuento de nodos.

        Consulte Disponibilidad y costo del servicio de equilibrio al sincronizar y reemplazar volúmenes de inicio de nodos gestionados en pools de nodos.

      3. Seleccione Nodos de ciclo para iniciar la operación de sustitución de volumen de inicio.

      El motor de Kubernetes utiliza las opciones de cordón y drenaje especificadas para el pool de nodos para acordonar y drenar los nodos de trabajador. Para obtener más información, consulte Cordoning and Draining Managed Nodes Before Shut Down or Termination.

    6. Supervise el progreso de la operación mediante la visualización del estado de la solicitud de trabajo asociada en la página Detalles de pool de nodos (consulte Obtención de detalles de una solicitud de trabajo).

    Para sustituir el volumen de inicio de un nodo gestionado específico:

    1. En la página de lista Clusters, seleccione el nombre del cluster que contiene el nodo de trabajador del que desea sustituir el volumen de inicio. Si necesita ayuda para encontrar la página de lista o el cluster, consulte Listing Clusters.
    2. En Recursos, seleccione Pools de nodos y, a continuación, seleccione el nombre del pool de nodos que contiene el nodo de trabajador del que desea sustituir el volumen de inicio.
    3. En Recursos, seleccione Nodos.
    4. Seleccione Nodo de ciclo en el menú Acciones junto al nodo del que desea sustituir el volumen de inicio.

    5. En el cuadro de diálogo Nodo de ciclo:
      1. Seleccione Replace boot volume (Sustituir volumen de inicio) en la lista Cycling options (Opciones de ciclo).
      2. Especifique cuándo y cómo acordonar y vaciar el nodo de trabajador antes de realizar la acción de sustitución de volumen de inicio especificando:

        • Período de gracia de expulsión (minutos): período de tiempo que se permite acordonar y vaciar el nodo de trabajador antes de realizar la acción. Acepte el valor predeterminado (60 minutos) o especifique una alternativa. Por ejemplo, puede que desee permitir 30 minutos para acordonar un nodo de trabajador y vaciarlo de sus cargas de trabajo. Para realizar la acción inmediatamente, sin acordonar ni drenar el nodo de trabajador, especifique 0 minutos.
        • Forzar acción después del período de gracia: indica si se debe realizar la acción al final del período de gracia de desalojo, incluso si el nodo de trabajador no se ha corregido y drenado correctamente. Por defecto, esta opción no está seleccionada.

        Consulte Cordoning and Draining Managed Nodes Before Shut Down or Termination.

      3. Seleccione Nodo de ciclo para iniciar la operación.
    6. Supervise el progreso de la operación visualizando el estado de la solicitud de trabajo asociada en la página Detalles de cluster (consulte Obtención de detalles de una solicitud de trabajo).

  • Para sustituir los volúmenes de inicio de todos los nodos de trabajador en un pool de nodos gestionado

    Para sustituir los volúmenes de inicio de todos los nodos de trabajador en un pool de nodos gestionado, utilice el comando oci ce node-pool update y los parámetros necesarios:

    oci ce node-pool update --node-pool-id <node-pool-ocid> --node-pool-cycling-details "{\"isNodeCyclingEnabled\":true,\"cycleModes\":\"BOOT_VOLUME_REPLACE\",\"maximumUnavailable\":<value>}" --<property-to-update> <new-value> [OPTIONS]

    donde --<property-to-update> <new-value> es al menos una de las propiedades admitidas que se muestran en Sustitución de los volúmenes de inicio de todos los nodos de un pool de nodos gestionado para cambiar las propiedades del nodo, especificada de la siguiente manera:

    • --node-source-details "{\"sourceType\":\"IMAGE\", \"imageId\":\"<image-id-for-bvr>\", \"bootVolumeSizeInGBs\":<boot-volume-size>}"
    • --node-metadata "{\"key1\":\"value1\"}"
    • --ssh-public-key "<key>"
    • --kms-key-id "<key-ocid>"
    • --kubernetes-version <k8s-version>

    Por ejemplo:

    oci ce node-pool update --node-pool-id ocid1.nodepool.oc1.iad.aaaaaaa______eya --node-pool-cycling-details "{\"isNodeCyclingEnabled\":true,\"cycleModes\":\"BOOT_VOLUME_REPLACE\",\"maximumUnavailable\":1}" --node-metadata "{\"foo\":\"bar\"}"

    Para sustituir el volumen de inicio de un nodo gestionado específico o de un nodo autogestionado

    Para sustituir el volumen de inicio de un nodo gestionado específico o un nodo autogestionado, utilice el comando oci ce cluster replace-boot-volume-cluster-node y los parámetros necesarios:

    oci ce cluster replace-boot-volume-cluster-node --cluster-id <cluster-ocid> --node-id <instance-ocid> [OPTIONS]

    Por ejemplo:

    oci ce cluster replace-boot-volume-cluster-node --cluster-id ocid1.cluster.oc1.iad.aaaaaaaaaf______jrd --node-id ocid1.instance.oc1.iad.anu__flq --node-eviction-settings "{\"evictionGraceDuration\": \"PT0M\",\"isForceActionAfterGraceDuration\": true}"
  • Para sustituir los volúmenes de inicio de todos los nodos de trabajador en un pool de nodos gestionado mediante la API de OCI:

    Ejecute la operación UpdateNodePool para sustituir los volúmenes de inicio de todos los nodos de trabajador en un pool de nodos gestionado.

    Para sustituir el volumen de inicio de un nodo gestionado específico mediante la API de OCI:

    Ejecute la operación ReplaceBootVolumeClusterNode para sustituir el volumen de inicio de un nodo gestionado específico mediante la API de OCI.

    Para sustituir el volumen de inicio de un nodo gestionado o un nodo autogestionado mediante la API de Kubernetes:

    Nota

    Para utilizar la API de Kubernetes para sustituir el volumen de inicio de un nodo gestionado o un nodo autogestionado que utiliza una imagen personalizada (en lugar de una imagen de plataforma o una imagen de OKE), una política de IAM debe proporcionar acceso a la imagen personalizada. Si dicha política aún no existe, cree una política con la siguiente sentencia de política:

    ALLOW any-user to read instance-images in TENANCY where request.principal.type = 'cluster'

    Consulte Configuración de políticas para despliegue y creación de clusters.

    1. Cree un archivo yaml para definir un recurso personalizado NodeOperationRule, similar al siguiente:
      apiVersion: oci.oraclecloud.com/v1beta1
      kind: NodeOperationRule
      metadata:
        name: <rule-name>
      spec:
        actions:
          - "replaceBootVolume"
        nodeSelector:
          matchTriggerLabel:
            oke.oraclecloud.com/node_operation: "<value>"
          matchCustomLabels:
            <custom-key>: "<value>"
        maxParallelism: <n>
        nodeEvictionSettings:
          evictionGracePeriod: <number-of-minutes>
          isForceActionAfterGraceDuration: <true|false>
      

      donde:

      • name: <rule-name> especifica el nombre que elija para el recurso personalizado NodeOperationRule. Por ejemplo, name: my-bvr-rule
      • oke.oraclecloud.com/node_operation: "<value>" especifica un valor de su elección para la clave de etiqueta oke.oraclecloud.com/node_operation. Los nodos para los que desea sustituir volúmenes de inicio deben tener asociado este par clave-valor de etiqueta. Por ejemplo:
            matchTriggerLabel:
              oke.oraclecloud.com/node_operation: "my-bvr-value"

        Tenga en cuenta que el valor que especifique para la clave de etiqueta oke.oraclecloud.com/node_operation debe cumplir los requisitos del tema Etiquetas y selectores de la documentación de Kubernetes. Solo están soportados los requisitos basados en la igualdad de Kubernetes.

      • matchCustomLabels también especifica una etiqueta personalizada con un par clave-valor de su elección con el formato <custom-key>: "<value>". Opcionalmente, puede especificar un par clave-valor de etiqueta personalizado para que se ajuste a su propio caso de uso particular. Por ejemplo:
            matchCustomLabels:
              deployment: "green"

        Tenga en cuenta que el par clave-valor de etiqueta personalizada que especifique debe cumplir los requisitos del tema Etiquetas y selectores de la documentación de Kubernetes. Solo están soportados los requisitos basados en la igualdad de Kubernetes.

        Tenga en cuenta que si especifica un par clave-valor de etiqueta personalizada en el manifiesto, los volúmenes de inicio solo se sustituyen para los nodos que tienen esta etiqueta personalizada y la etiqueta oke.oraclecloud.com/node_operation: "<value>".

      • maxParallelism: <n> especifica el número de nodos de trabajador para los que sustituir volúmenes de inicio en paralelo, hasta un máximo de 20.
      • evictionGracePeriod: <number-of-minutes> especifica el tiempo que debe transcurrir para permitir acordonar y vaciar los nodos de trabajador antes de sustituir los volúmenes de inicio. Acepte el valor predeterminado (60 minutos) o especifique una alternativa. Por ejemplo, puede que desee permitir 30 minutos para acordonar nodos de trabajador y drenarlos de sus cargas de trabajo. Para sustituir los volúmenes de inicio de los nodos de trabajador inmediatamente, sin acordonarlos ni drenarlos, especifique 0 minutos.
      • isForceActionAfterGraceDuration: <true|false> especifica si se debe sustituir el volumen de inicio de los nodos de trabajador al final del período de gracia de desalojo, incluso si no se han corregido y drenado correctamente. El valor por defecto es false si no se especifica.

      Por ejemplo:

      apiVersion: oci.oraclecloud.com/v1beta1
      kind: NodeOperationRule
      metadata:
        name: my-bvr-rule
      spec:
        actions:
          - "replaceBootVolume"
        nodeSelector:
          matchTriggerLabel:
            oke.oraclecloud.com/node_operation: "my-bvr-value"
          matchCustomLabels:
            deployment: "green"
        maxParallelism: 2
        nodeEvictionSettings:
          evictionGracePeriod: 300
          isForceActionAfterGraceDuration: true
      
    2. Utilice kubectl para aplicar el archivo yaml al cluster introduciendo:

      kubectl apply -f <filename>.yaml
    3. Utilice kubectl para confirmar que el recurso personalizado NodeOperationRule se ha creado correctamente introduciendo:

      kubectl get nor
    4. Utilice kubectl para agregar una etiqueta al nodo que especifique el valor para la clave de etiqueta oke.oraclecloud.com/node_operation introduciendo:

      kubectl label node <node-name> oke.oraclecloud.com/node_operation=<value>

      Por ejemplo:

      kubectl label node 10.0.10.53 oke.oraclecloud.com/node_operation=my-bvr-value
    5. Si ha incluido un elemento matchCustomLabels en el manifiesto para especificar un par clave-valor de etiqueta personalizado, utilice kubectl para agregar una etiqueta al nodo que especifique el par clave-valor introduciendo:
      kubectl label node <node-name> <custom-key>=<value>

      Por ejemplo:

      kubectl label node 10.0.10.53 deployment=green
    6. (Opcional) Para ver la acción de sustitución de volumen de inicio en curso, introduzca:

      kubectl describe nor <rule-name>
      Por ejemplo:
      kubectl describe nor my-bvr-rule
      Salida de ejemplo:
      Name:         my-bvr-rule
      Namespace:   
      Labels:       <none>
      Annotations:  <none>
      API Version:  oci.oraclecloud.com/v1beta1
      Kind:         NodeOperationRule
      Metadata:
        Creation Timestamp:  2025-02-11T00:11:11Z
        Finalizers:
          nodeoperationrule.oci.oraclecloud.com/finalizers
        Generation:        1
        Resource Version:  244259806
        UID:               xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
      Spec:
        Actions:
          replaceBootVolume
        Max Parallelism:  2
        Node Eviction Settings:
          Eviction Grace Period:                 300
          Is Force Action After Grace Duration:  true
        Node Selector:
          Match Trigger Label:
            oke.oraclecloud.com/node_operation:  my-bvr-value
          Match Custom Label:
            deployment: green
      Status:
        Back Off Nodes:
        Canceled Nodes:
        In Progress Nodes:
        	Node Name:        10.0.10.53
          Work Request Id:  ocid1.clustersworkrequest.oc1.phx.aaaa______jda
        Pending Nodes:
        Succeeded Nodes:
      Events:
        Type    Reason                  Age   From               Message
        ----    ------                  ----  ----               -------
        Normal  StartedNodeOperation    1m   NodeOperationRule  Started node operation on node with work request ID: 10.0.10.105: ocid1.clustersworkrequest.oc1.phx.aaaa______jda
      ```
      

Sustitución de volúmenes de inicio de nodos autogestionados después de la rotación de credenciales de cluster

Si ha agregado un nodo autogestionado a un cluster y posteriormente rota las credenciales del cluster, la sustitución del volumen de inicio del nodo autogestionado requiere pasos adicionales (además de los que se describen en Sustitución de volúmenes de inicio de nodos de trabajador). Los pasos adicionales son necesarios porque se hace referencia al certificado de CA del cluster en el script cloud-init de nodos autogestionados.

Supongamos que ya ha rotado el certificado de CA del cluster al que se ha agregado un nodo autogestionado, siguiendo las instrucciones de Rotating Cluster Credentials. Si ahora desea sustituir el volumen de inicio del nodo autogestionado, primero debe modificar la secuencia de comandos cloud-init del nodo autogestionado. Debe sustituir el certificado de CA anterior del cluster al que se hace referencia en el script por el certificado de CA actual del cluster. Siga estos pasos:

  1. Obtenga detalles de la instancia informática que aloja el nodo autogestionado introduciendo:
    oci compute instance get --instance-id <instance-ocid>

    Por ejemplo:

    oci compute instance get --instance-id ocid1.instance.oc1.phx.any______blra

    Se devuelven detalles sobre la instancia informática.

  2. Localice y anote el OCID del volumen de inicio (que se muestra en source-details en la salida del comando oci compute instance get) introduciendo:

    oci compute instance get --instance-id <instance-ocid> --query 'data."source-details"."boot-volume-id"' --raw-output
    

    Por ejemplo:

    oci compute instance get --instance-id ocid1.instance.oc1.phx.any______blra --query 'data."source-details"."boot-volume-id"' --raw-output
    

    Salida de ejemplo:

    ocid1.bootvolume.oc1.phx.aaaa______g4a

    El OCID del volumen de inicio se utiliza en un paso posterior.

  3. Localice los valores metadata que se muestran en la salida de la siguiente manera:

    "metadata": {
    "ssh_authorized_keys": "<key-value>",
    "user_data": "<existing-base64-encoded-init-script>"
    }

    Tenga en cuenta que ssh_authorized_keys está presente cuando se ha configurado el acceso SSH al nodo (que suele ser, pero no siempre, el caso).

    Por ejemplo:

    "metadata": {
    "ssh_authorized_keys": "ssh-rsa AAAA_____ example@acme.com",
    "user_data": "IyEv___1234___PSIK"
    }
    El valor de user_data es el script cloud-init que se utilizó originalmente para agregar la instancia informática al cluster como un nodo autogestionado, en formato codificado base64. El script cloud-init especifica el punto final privado de la API de Kubernetes del cluster y el certificado de CA codificado con base64 anterior del cluster.
  4. Copie los valores ssh_authorized_keys y user_data y guárdelos en un nuevo archivo denominado metadata.json introduciendo:
    oci compute instance get --instance-id <instance-ocid> --query 'data.metadata' --raw-output > metadata.json

    Archivo metadata.json de ejemplo:

    {
    "ssh_authorized_keys": "ssh-rsa AAAA_____ user@acme.com",
    "user_data": "IyEv___1234___PSIK"
    }
  5. Copie el valor de user_data (el script cloud-init codificado original con base64) y descodifíquelo introduciendo:
    echo "<existing-base64-encoded-init-script>" | base64 --decode

    Por ejemplo:

    echo "IyEv___1234___PSIK" | base64 --decode

    La salida descodificada es el script cloud-init original. Por ejemplo:

    #!/usr/bin/env bash
    bash /etc/oke/oke-install.sh \
      --apiserver-endpoint "10.0.0.12" \
      --kubelet-ca-cert "LS0txxxx______Cg=="

    El valor de --kubelet-ca-cert es el certificado de CA anterior del cluster, en formato codificado con base64.

  6. Guarde la salida descodificada como un archivo de texto denominado my-cloud-init-file.
  7. Obtenga el certificado de CA actual del cluster (es decir, el certificado de CA del cluster después de la rotación) introduciendo:
    oci ce cluster create-kubeconfig --cluster-id <cluster-ocid> --region <region-identifier> --file - | grep -oE "LS0t.*"

    El certificado de CA codificado base64 actual del cluster se devuelve como una cadena alfanumérica larga, que comienza con los caracteres LS0t. Por ejemplo:

    LS0tyyyy______aP==
  8. En el script cloud-init que ha guardado en my-cloud-init-file, sustituya el valor original de --kubelet-ca-cert por el certificado de CA codificado base64 actual y guarde el archivo.

    Por ejemplo:

    #!/usr/bin/env bash
    bash /etc/oke/oke-install.sh \
      --apiserver-endpoint "10.0.0.12" \
      --kubelet-ca-cert "LS0tyyyy______aP=="
  9. Base64 codifica el script cloud-init actualizado en my-cloud-init-file. Por ejemplo, introduzca:
    base64 my-cloud-init-file

    El script cloud-init actualizado está codificado en base64 y devuelto como una cadena alfanumérica larga. Por ejemplo:

    IyEv___5678___PSIK
  10. Actualice el archivo metadata.json que ha creado anteriormente, de la siguiente manera:

    • Si está presente, mantenga el valor de ssh_authorized_keys sin cambios.
    • Cambie el valor de user_data a la cadena alfanumérica codificada con base64 que acaba de crear a partir del script cloud-init actualizado.

    Por ejemplo:

    {
          "ssh_authorized_keys": "ssh-rsa AAAA_____ user@acme.com",
          "user_data": "IyEv___5678___PSIK"
    }
  11. Utilice el OCID del volumen de inicio que ha anotado anteriormente para obtener detalles del volumen de inicio existente introduciendo:
    oci bv boot-volume get --boot-volume-id <boot-volume-ocid> --query 'data.{ "image_id": "image-id", "kms_key_id": "kms-key-id", "boot-volume-size-in-gbs": "boot-volume-size-in-gbs" }' --raw-output

    Por ejemplo:

    oci bv boot-volume get --boot-volume-id ocid1.bootvolume.oc1.phx.aaaa______g4a --query 'data.{ "image_id": "image-id", "kms_key_id": "kms-key-id", "boot-volume-size-in-gbs": "boot-volume-size-in-gbs" }' --raw-output

    Salida de ejemplo:

    {
      "image_id": "ocid1.image.oc1.phx.aaaa____cra",
      "boot-volume-size-in-gbs": 100,
      "kms_key_id": null
    }
  12. Utilice la salida para especificar los mismos valores para las propiedades source-details de la instancia informática en un nuevo archivo json denominado my-instance-source-details.json, con el siguiente formato:
    {
    "image-id": "<returned-bv-image-ocid>",
    "source-type": "image",
    "boot-volume-size-in-gbs": <returned-bv-size>,
    "kms_key_id": <returned-bv-kms-key-ocid>
    "isPreserveBootVolumeEnabled": true
    }

    Tenga en cuenta que no tiene que incluir propiedades de volumen de inicio en my-instance-source-details.json que se muestran como que tienen un valor null en la salida del comando oci bv boot-volume get. Por ejemplo, si el volumen de inicio no está cifrado con una clave gestionada por el usuario, el valor de kms_key_id se muestra como null.

    Por ejemplo:

    {
    "image-id": "ocid1.image.oc1.phx.aaaa____cra",
    "source-type": "image",
    "boot-volume-size-in-gbs": 100,
    "isPreserveBootVolumeEnabled": true
    }

    Tenga en cuenta que debe proporcionar un valor para image-id para actualizar las propiedades user_data (específicamente, para actualizar el script cloud-init con el nuevo certificado de CA).

  13. Actualice los detalles de la instancia informática que aloja el nodo autogestionado introduciendo

    oci compute instance update --instance-id ocid1.instance.oc1.phx.any______blra --metadata file://metadata.json --source-details file://my-instance-source-details.json
     
  14. Verifique que la instancia informática que aloja el nodo autogestionado tiene el valor actualizado para user_data introduciendo:

    oci compute instance get --instance-id <instance-ocid>

    Por ejemplo:

    oci compute instance get --instance-id ocid1.instance.oc1.phx.any______blra

    Se devuelven detalles actualizados sobre la instancia informática que aloja el nodo autogestionado.

    {
      "data": {
        ...
        "metadata": {
          "ssh_authorized_keys": "ssh-rsa AAAA_____ user@acme.com",
          "user_data": "IyEv___5678___PSIK"
        ...

    Después de actualizar el valor user_data al archivo cloud-init codificado con base64 que contiene el nuevo certificado de CA de cluster, ahora puede sustituir el volumen de inicio del nodo autogestionado.

  15. Sustituya el volumen de inicio del nodo autogestionado introduciendo:
    oci ce cluster replace-boot-volume-cluster-node --cluster-id <cluster-ocid> --node-id <instance-ocid> [OPTIONS]

    Por ejemplo:

    oci ce cluster replace-boot-volume-cluster-node --cluster-id ocid1.cluster.oc1.phx.aaaa______xoq --node-id ocid1.instance.oc1.phx.any______blra --node-eviction-settings "{\"evictionGraceDuration\": \"PT0M\",\"isForceActionAfterGraceDuration\": true}"

    Para obtener más información, consulte Sustitución de volúmenes de inicio de nodos de trabajador.