Neste documento, mostramos como executar uma ferramenta autônoma em preparação para um upgrade. Antes de fazer upgrade de um cluster de administrador ou de usuário que está na versão 1.9 e mais recentes do Google Distributed Cloud, recomendamos executar a ferramenta de pré-upgrade.
Para executar a ferramenta, use o script bash neste documento que usa um algoritmo de hash seguro (SHA) codificado. Para cada versão da ferramenta, esse documento será atualizado com o novo SHA. O script cria um job do Kubernetes para executar uma versão específica das verificações de simulação, dependendo da versão para que você está fazendo upgrade.
Verificações antes do upgrade
A ferramenta verifica o seguinte antes de você fazer upgrade de um cluster de usuário:
Categoria | Descrição |
---|---|
Integridade do cluster |
|
Configurações |
|
A ferramenta verifica o seguinte antes de você fazer upgrade de um cluster de administrador:
Categoria | Descrição |
---|---|
Integridade do cluster | Valida o PodDisruptionBudgets (PDBs) em todos os
namespaces do cluster de administrador. |
Configurações |
|
Preparação para executar a ferramenta
Faça upgrade da estação de trabalho do administrador, caso ainda não tenha feito isso.
Execute
gkectl prepare
para importar imagens do SO para o vSphere, caso ainda não tenha feito isso:gkectl prepare \ --bundle-path /var/lib/gke/bundles/gke-onprem-vsphere-TARGET_VERSION.tgz \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Substitua:
TARGET_VERSION
: a versão de patch do Google Distributed Cloud para que você quer fazer upgrade. O formato do número da versão precisa ser uma versão de patch completa, como1.13.10-gke.42
.ADMIN_CLUSTER_KUBECONFIG
: o caminho para o kubeconfig do cluster de administrador.
Se você estiver usando um registro particular, faça o download da imagem do contêiner de simulação com o resumo do Docker fornecido e faça upload da imagem nesse registro. Se você não estiver usando um registro particular, pule para a próxima etapa.
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
Substitua
REGISTRY_ADDRESS
pelo endereço de registro particular.No script bash a seguir, defina valores para esses marcadores de posição:
ADMIN_CLUSTER_KUBECONFIG
: o caminho para o kubeconfig do cluster de administrador.REGISTRY_ADDRESS
: se o cluster de administrador usar um registro particular, esse será o endereço de registro particular especificado na etapa anterior. Se você não estiver usando um registro particular, especifique o 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
Salve o script bash acima em um arquivo chamado
pre-upgrade.sh
e torne-o executável:chmod +x pre-upgrade.sh
Executar o script
Os argumentos fornecidos ao executar o script dependem se está fazendo upgrade de um cluster de usuário ou de um cluster de administrador:
- Antes de fazer upgrade de um cluster de administrador, execute o script da seguinte maneira:
./pre-upgrade.sh TARGET_VERSION
- Antes de fazer upgrade de um cluster de usuário:
./pre-upgrade.sh TARGET_VERSION USER_CLUSTER_NAME
Substitua
USER_CLUSTER_NAME
pelo nome do cluster de usuário que você vai fazer upgrade.O resultado será assim:
job.batch/pre-upgrade-2023-0822-213551 created
Execute o comando a seguir nos pods controlados pelo job para receber uma lista de resultados de validação.
kubectl logs -n JOB_NAMESPACE jobs/JOB_NAME \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Substitua:
JOB_NAME
: é o nome do job que o script gera na etapa anterior.JOB_NAMESPACE
: o valor que você define depende do upgrade de um cluster de administrador ou de usuário. Se você estiver fazendo upgrade de um cluster de administrador, especifiquekube-system
. Se você estiver fazendo upgrade de um cluster de usuário, especifiqueUSER_CLUSTER_NAME-gke-onprem-mgmt
.
Aguarde alguns minutos para que o job seja concluído ou atinja o limite de espera e falhe. Nos resultados, analise o
Reason
de qualquer verificação com o statusWarning
,Unknown
ouFailure
para ver se é possível resolver o problema.Antes de fazer upgrade dos clusters, execute o seguinte comando para excluir o job:
kubectl delete jobs JOB_NAME -n JOB_NAMESPACE \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG