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).
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:
- Sustituya los volúmenes de inicio de todos los nodos de un pool de nodos gestionado cuando desee actualizar una o más propiedades de nodo admitidas (consulte Sustitución de los volúmenes de inicio de todos los nodos de un pool de nodos gestionado para cambiar las propiedades de nodo).
- Sustituya los volúmenes de inicio de nodos gestionados específicos y nodos autogestionados (consulte Sustitución de los volúmenes de inicio de nodos gestionados y autogestionados individuales).
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:
- Actualice una o más de las propiedades de la lista (consulte Actualización de nodos de trabajador en un pool de nodos existente mediante la sustitución de volúmenes de inicio).
- Actualice la versión de Kubernetes que se ejecuta en los nodos del pool de nodos (consulte Actualización de nodos gestionados mediante la sustitución de volúmenes de inicio).
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:
- 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.
- 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.
- 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.
-
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.
-
En el cuadro de diálogo Nodos de ciclo:
- Seleccione Replace boot volume (Sustituir volumen de inicio) en la lista Cycling options (Opciones de ciclo).
- 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.
- 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.
-
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:
- 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.
- 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.
- En Recursos, seleccione Nodos.
-
Seleccione Nodo de ciclo en el menú Acciones junto al nodo del que desea sustituir el volumen de inicio.
- En el cuadro de diálogo Nodo de ciclo:
- Seleccione Replace boot volume (Sustituir volumen de inicio) en la lista Cycling options (Opciones de ciclo).
-
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.
- Seleccione Nodo de ciclo para iniciar la operación.
-
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.
- 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 personalizadoNodeOperationRule
. Por ejemplo,name: my-bvr-rule
oke.oraclecloud.com/node_operation: "<value>"
especifica un valor de su elección para la clave de etiquetaoke.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 esfalse
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
-
Utilice kubectl para aplicar el archivo yaml al cluster introduciendo:
kubectl apply -f <filename>.yaml
-
Utilice kubectl para confirmar que el recurso personalizado NodeOperationRule se ha creado correctamente introduciendo:
kubectl get nor
-
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
- 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
(Opcional) Para ver la acción de sustitución de volumen de inicio en curso, introduzca:
Por ejemplo:kubectl describe nor <rule-name>
Salida de ejemplo:kubectl describe nor my-bvr-rule
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 ```
- Cree un archivo yaml para definir un recurso personalizado
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:
- 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.
-
Localice y anote el OCID del volumen de inicio (que se muestra en
source-details
en la salida del comandooci 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.
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:
El valor de"metadata": { "ssh_authorized_keys": "ssh-rsa AAAA_____ example@acme.com", "user_data": "IyEv___1234___PSIK" }
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.- Copie los valores
ssh_authorized_keys
yuser_data
y guárdelos en un nuevo archivo denominadometadata.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" }
- 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. - Guarde la salida descodificada como un archivo de texto denominado
my-cloud-init-file
. - 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==
- 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=="
- 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
-
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" }
- Si está presente, mantenga el valor de
- 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 }
- Utilice la salida para especificar los mismos valores para las propiedades
source-details
de la instancia informática en un nuevo archivo json denominadomy-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 valornull
en la salida del comandooci bv boot-volume get
. Por ejemplo, si el volumen de inicio no está cifrado con una clave gestionada por el usuario, el valor dekms_key_id
se muestra comonull
.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 propiedadesuser_data
(específicamente, para actualizar el script cloud-init con el nuevo certificado de CA). -
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
-
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. - 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.