En este documento, se muestra cómo ejecutar una herramienta independiente para preparar una actualización. Antes de actualizar un clúster de administrador o de usuario que se encuentre en la versión 1.9 y posteriores de GKE on VMware, te recomendamos que ejecutes la herramienta de actualización previa.
Para ejecutar la herramienta, usa la secuencia de comandos de Bash en este documento que usa algoritmos de hash seguro (SHA) codificados. Para cada versión de la herramienta, este documento se actualizará con el nuevo SHA. La secuencia de comandos crea un trabajo de Kubernetes para ejecutar una versión específica de las comprobaciones preliminares según la versión a la que actualices.
Verificaciones previas a la actualización
La herramienta verifica lo siguiente antes de actualizar un clúster de usuario:
Categoría | Descripción |
---|---|
Estado del clúster |
|
Parámetros de configuración |
|
La herramienta verifica lo siguiente antes de actualizar un clúster de administrador:
Categoría | Descripción |
---|---|
Estado del clúster | Valida los PodDisruptionBudgets (PDB) en todos
los espacios de nombres del clúster de administrador. |
Parámetros de configuración |
|
Prepárate para ejecutar la herramienta
Actualiza la estación de trabajo de administrador si aún no lo hiciste.
Ejecuta
gkectl prepare
para importar imágenes de SO a vSphere si aún no lo hiciste:gkectl prepare \ --bundle-path /var/lib/gke/bundles/gke-onprem-vsphere-TARGET_VERSION.tgz \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Reemplaza lo siguiente:
TARGET_VERSION
: Es la versión del parche de GDCV para VMware a la que deseas actualizar. El formato del número de versión debe ser una versión de parche completa, como1.13.10-gke.42
.ADMIN_CLUSTER_KUBECONFIG
: Es la ruta de acceso al kubeconfig del clúster de administrador.
Si usas un registro privado, descarga la imagen de contenedor con verificación previa con el resumen de Docker proporcionado y sube la imagen al registro privado. Si no usas un registro privado, continúa con el paso siguiente.
export SRC_IMAGE=gcr.io/gke-on-prem-release/preflight@sha256:9704315c6637750a014d0079ca04a8f97d0ca3735e175020377107c3181f6234 export DST_IMAGE=REGISTRY_ADDRESS/preflight:$(date +%Y-%m%d-%H%M%S) docker pull $SRC_IMAGE docker tag $SRC_IMAGE $DST_IMAGE docker push $DST_IMAGE
Reemplaza
REGISTRY_ADDRESS
por la dirección de registro privado.En la siguiente secuencia de comandos de Bash, configura los valores para estos marcadores de posición:
ADMIN_CLUSTER_KUBECONFIG
: Es la ruta de acceso al kubeconfig del clúster de administrador.REGISTRY_ADDRESS
: Si el clúster de administrador usa un registro privado, esta es la dirección de registro privado que especificaste en el paso anterior. Si no usas un registro privado, especifica el registro público:gcr.io/gke-on-prem-release
#!/bin/bash UPGRADE_TARGET_VERSION=${1} CLUSTER_NAME=${2} ADMIN_KUBECONFIG=ADMIN_CLUSTER_KUBECONFIG REGISTRY_ADDRESS=REGISTRY_ADDRESS pre_upgrade_namespace=kube-system if [[ -z "$CLUSTER_NAME" ]] then echo "Running the pre-ugprade tool before admin cluster upgrade" else echo "Running the pre-ugprade tool before user cluster upgrade" pre_upgrade_namespace=$CLUSTER_NAME-gke-onprem-mgmt fi kubectl apply --kubeconfig ${ADMIN_KUBECONFIG} -f - <<EOF apiVersion: v1 kind: ServiceAccount metadata: name: pre-upgrade-job namespace: $pre_upgrade_namespace EOF kubectl apply --kubeconfig ${ADMIN_KUBECONFIG} -f - <<EOF apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: creationTimestamp: null name: pre-upgrade-job-rolebinding-in-$pre_upgrade_namespace roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: onprem-user-cluster-controller-role subjects: - kind: ServiceAccount name: pre-upgrade-job namespace: $pre_upgrade_namespace EOF kubectl apply --kubeconfig ${ADMIN_KUBECONFIG} -f - <<EOF apiVersion: batch/v1 kind: Job metadata: name: pre-upgrade-$(date +%Y-%m%d-%H%M%S) namespace: $pre_upgrade_namespace labels: onprem.cluster.gke.io/job-usage: preflight spec: ttlSecondsAfterFinished: 2592000 backoffLimit: 2 template: metadata: labels: onprem.cluster.gke.io/pod-usage: preflight spec: containers: - name: preflight image: $REGISTRY_ADDRESS/preflight@sha256:9704315c6637750a014d0079ca04a8f97d0ca3735e175020377107c3181f6234 imagePullPolicy: Always command: - /preflight - --upgrade-target-version - "$UPGRADE_TARGET_VERSION" - --cluster-name - "$CLUSTER_NAME" - --scenario - pre-upgrade restartPolicy: Never serviceAccountName: pre-upgrade-job imagePullSecrets: - name: private-registry-creds EOF
Guarda la secuencia de comandos bash anterior en un archivo llamado
pre-upgrade.sh
y haz que sea ejecutable:chmod +x pre-upgrade.sh
Ejecuta la secuencia de comandos:
Los argumentos que proporcionas cuando ejecutas la secuencia de comandos dependen de si estás actualizando un clúster de usuario o un clúster de administrador:
- Antes de actualizar un clúster de administrador, ejecuta la secuencia de comandos de la siguiente manera:
./pre-upgrade.sh TARGET_VERSION
- Antes de actualizar un clúster de usuario, haz lo siguiente:
./pre-upgrade.sh TARGET_VERSION USER_CLUSTER_NAME
Reemplaza
USER_CLUSTER_NAME
por el nombre del clúster de usuario que actualizarás.El resultado es similar al siguiente:
job.batch/pre-upgrade-2023-0822-213551 created
Ejecuta el siguiente comando en los Pods que controla el trabajo para obtener una lista de los resultados de la validación.
kubectl logs -n JOB_NAMESPACE jobs/JOB_NAME \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Reemplaza lo siguiente:
JOB_NAME
: Este es el nombre del trabajo que muestra la secuencia de comandos del paso anterior.JOB_NAMESPACE
: El valor que estableces depende de si actualizas un clúster de administrador o de usuario. Si actualizas un clúster de administrador, especificakube-system
. Si actualizas un clúster de usuario, especificaUSER_CLUSTER_NAME-gke-onprem-mgmt
.
Espera unos minutos para que se complete el trabajo o para alcanzar el límite de retirada y falle. En los resultados, revisa
Reason
para ver si hay alguna verificación con el estadoWarning
,Unknown
oFailure
para ver si puedes resolver el problema.Antes de actualizar los clústeres, ejecuta el siguiente comando para borrar el trabajo:
kubectl delete jobs JOB_NAME -n JOB_NAMESPACE \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG