Este documento mostra como executar uma ferramenta autônoma em preparação para fazer upgrade. Antes de fazer upgrade de um cluster de administrador ou usuário que está no Google Distributed Cloud versão 1.9 e mais recentes, recomendamos que você execute a ferramenta de pré-upgrade.
Para executar a ferramenta, utilize o script bash neste documento que utiliza um algoritmo de hash seguro (SHA, na sigla em inglês) codificado. Para cada lançamento 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á atualizando.
Verificações antes do upgrade
A ferramenta verifica o seguinte antes de 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 os PodDisruptionBudgets (PDBs) em todos
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, se você ainda não tiver 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 a qual 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 até o arquivo 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 no no registro privado. 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 os valores para estes marcadores de posição:
ADMIN_CLUSTER_KUBECONFIG
: o caminho até o arquivo kubeconfig do cluster de administrador.REGISTRY_ADDRESS
: se o cluster de administrador utiliza um registro particular, este é o endereço de registro privado que você especificou 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 você está fazendo upgrade de um cluster de usuário ou 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
: este é o nome do job que o script gera da etapa anterior.JOB_NAMESPACE
: o valor que você define depende se você estiver fazendo 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 chegue ao limite de espera e falhe. Nos resultados, confira se há verificações no
Reason
com o statusWarning
,Unknown
ouFailure
para ver se é possível resolver o problema.Antes de fazer upgrade dos clusters, execute o comando a seguir para excluir o job:
kubectl delete jobs JOB_NAME -n JOB_NAMESPACE \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG