Questo articolo descrive i problemi noti e gli errori che possono verificarsi durante l'aggiornamento delle distribuzioni Arc di servizio Azure Kubernetes (AKS) alla versione più recente. È anche possibile esaminare i problemi noti relativi a Windows Admin Center e all'installazione del servizio Azure Kubernetes in Azure Stack HCI.
Dopo un aggiornamento corretto, le versioni precedenti di PowerShell non vengono rimosse
Le versioni precedenti di PowerShell non vengono rimosse.
Per risolvere questo problema, è possibile eseguire questo script per disinstallare le versioni precedenti di PowerShell.
Il pod di rinnovo del certificato si trova in uno stato di ciclo di arresto anomalo del sistema
Dopo l'aggiornamento o la scalabilità verticale del cluster di destinazione, il pod di rinnovo del certificato si trova ora in uno stato di ciclo di arresto anomalo del sistema. Si aspetta un file di tatuaggio yaml
del certificato dal percorso /etc/Kubernetes/pki
. Il file di configurazione è presente nelle macchine virtuali del nodo del piano di controllo, ma non nelle macchine virtuali del nodo di lavoro.
Nota
Questo problema è stato risolto dopo la versione di aprile 2022.
Per risolvere questo problema, copiare manualmente il file tatuaggio del certificato dal nodo del piano di controllo in ognuno dei nodi di lavoro.
Copiare il file dalla macchina virtuale del piano di controllo nella directory corrente del computer host.
ssh clouduser@<comtrol-plane-vm-ip> -i (get-mocconfig).sshprivatekey sudo cp /etc/kubernetes/pki/cert-tattoo-kubelet.yaml ~/ sudo chown clouduser cert-tattoo-kubelet.yaml sudo chgrp clouduser cert-tattoo-kubelet.yaml (change file permissions here so that scp works) scp -i (get-mocconfig).sshprivatekey clouduser@<comtrol-plane-vm-ip>:~/cert*.yaml .\
Copiare il file dal computer host alla macchina virtuale del nodo di lavoro.
scp -i (get-mocconfig).sshprivatekey .\cert-tattoo-kubelet.yaml clouduser@<workernode-vm-ip>:~/cert-tattoo-kubelet.yaml
Impostare le informazioni sul proprietario e sul gruppo su questo file su root se non è già impostato su root.
ssh clouduser@<workernode-vm-ip> -i (get-mocconfig).sshprivatekey sudo cp ~/cert-tattoo-kubelet.yaml /etc/kubernetes/pki/cert-tattoo-kubelet.yaml (copies the cert file to correct location) sudo chown root cert-tattoo-kubelet.yaml sudo chgrp root cert-tattoo-kubelet.yaml
Ripetere i passaggi 2 e 3 per ognuno dei nodi di lavoro.
Porte di perdita nodeagent quando non è possibile aggiungere cloudagent a causa di un token scaduto quando il cluster non è stato aggiornato per più di 60 giorni
Quando un cluster non è stato aggiornato per più di 60 giorni, l'agente del nodo non viene avviato durante un riavvio dell'agente del nodo a causa della scadenza del token. Questo errore fa sì che gli agenti siano nella fase iniziale. I tentativi continui di join dell'agente cloud possono esaurire la fornitura di porte nell'host. Lo stato per il comando seguente è Avvio.
Get-Service wssdagent | Select-Object -Property Name, Status
Comportamento previsto: l'agente del nodo deve essere nella fase iniziale, che tenta costantemente di aggiungere l'agente cloud, esaurendo le porte.
Per risolvere il problema, arrestare l'esecuzione di wssdagent. Poiché il servizio è in fase di avvio, potrebbe impedire l'arresto del servizio. In tal caso, terminare il processo prima di tentare di arrestare il servizio.
Verificare che wssdagent sia in fase di avvio.
Get-Service wssdagent | Select-Object -Property Name, Status
Terminare il processo.
kill -Name wssdagent -Force
Arrestare il servizio.
Stop-Service wssdagent -Force
Nota
Anche dopo l'arresto del servizio, il processo wssdagent sembra essere avviato in pochi secondi per un paio di volte prima dell'arresto. Prima di procedere al passaggio successivo, assicurarsi che il comando seguente restituisca un errore in tutti i nodi.
Get-Process -Name wssdagent
PS C:\WINDOWs\system32 Get-process -Name wssdagent
Get-process : Cannot find a process with the name "wssdaqent". Verify the process name and call the cmdlet again.
At line: 1 char: 1
+ Get-process -Name wssdagent
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Categorylnfo : ObjectNotFound: (wssdagent:String) [Get-Process], ProcessCommandException
+ FullyQua1ifiedErrorId : NoProcess FoundForGivenName , Microsoft.PowerShell.Commands.Getprocesscommand
Ripetere i passaggi 1, 2 e 3 in ogni nodo del cluster HCI che presenta questo problema.
Dopo aver confermato che wssdagent non è in esecuzione, avviare cloudagent se non è in esecuzione.
Start-ClusterGroup -Name (Get-MocConfig).clusterRoleName
Verificare che cloudagent sia operativo.
Get-ClusterGroup -Name (Get-MocConfig).clusterRoleName
Eseguire il comando seguente per correggere wssdagent:
Repair-Moc
Al termine di questo comando, lo stato di wssdagent deve essere in esecuzione.
Get-Service wssdagent | Select-Object -Property Name, Status
Gli agenti MOC non vengono avviati dopo un errore di aggiornamento
Quando il servizio Azure Kubernetes-HCI non riesce ad eseguire l'aggiornamento dalla versione di maggio alla versione di giugno, l'aspettativa è che il servizio Azure Kubernetes-HCI debba tornare alla versione di maggio e continuare a funzionare. Ma lascia gli agenti MOC in uno stato arrestato e i tentativi manuali di avviare l'agente non li attivano.
Nota
Questo problema è rilevante solo quando si esegue l'aggiornamento dalla versione di maggio alla versione di giugno.
Passaggi per riprodurre il bug
- Installare il modulo PowerShell AKS-HCI versione 1.1.36.
- Aggiornare il servizio Azure Kubernetes-HCI. Se l'aggiornamento non riesce, il servizio Azure Kubernetes-HCI torna a maggio, ma gli agenti MOC sono inattivo.
Comportamento previsto
Se l'aggiornamento di Aks-Hci non riesce, si prevede che AksHci venga ripristinato alla versione precedente e continui a funzionare senza problemi.
Sintomi
Mancata corrispondenza tra la versione di Aks-Hci e la versione MOC
Get-AksHciVersion
: 1.0.10.10513Get-MocVersion
: 1.0.11.10707
Mancata corrispondenza tra Get-MocVersion e wssdcloudagent.exe versione
Get-MocVersion
indica che la build di giugno è installata mentre la versione wssdcloudagent.exe indica che è installata la build di maggio.
Il percorso immagine dei servizi agente MOC ha il parametro ID distribuzione
Eseguire il comando seguente per visualizzare il percorso dell'immagine per l'agente cloud:
reg query "HKLM\System\CurrentControlSet\Services\wssdcloudagent"
Output di esempio
"C:\Program Files\AksHci\wssdcloudagent.exe" --service --basedir "base dir" --cloudagentfqdn "cloudagent fqdn" --dotfolderpath "dot folder path" --objectdatastore "data store" --clusterresourcename "cluster name" --certificatevalidityfactor 1 --deploymentid "deployment id"
Usare il comando seguente per visualizzare il percorso dell'immagine per l'agente del nodo: reg query "HKLM\System\CurrentControlSet\Services\wssdagent"
Output di esempio
"C:\Program Files\AksHci\wssdagent.exe" --service --basedir "base dir" --cloudloginfile "cloud login file path" --dotfolderpath "dotfolder path" --nodeagentfqdn "node fqdn" --objectdatastore "object data store" --wssdproviderspec "provider spec" --deploymentid "deployment id"
Per attenuare il problema, eseguire i cmdlet di PowerShell seguenti:
Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Services\wssdcloudagent" -Name ImagePath -Value 'above cloud agent image path without the deployment id'
Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Services\wssdagent" -Name ImagePath -Value 'above node agent image path without the deployment id'
Durante un aggiornamento, vengono persi nodi personalizzati, ruoli ed etichette
Durante l'aggiornamento, è possibile che tutti i contenitori, i ruoli e le etichette personalizzati aggiunti ai nodi di lavoro vadano persi. Poiché il servizio Azure Kubernetes è un servizio gestito, l'aggiunta di contenitori, etichette e ruoli personalizzati quando vengono eseguiti all'esterno dei cmdlet di PowerShell forniti o Windows Admin Center non è supportato.
Per risolvere questo problema, eseguire il cmdlet New-AksHciNodePool per creare correttamente un pool di nodi containts per i nodi di lavoro.
Il servizio Azure Kubernetes Arc esce dai criteri se un cluster del carico di lavoro non è stato creato in 60 giorni
Se è stato creato un cluster di gestione ma non è stato distribuito un cluster del carico di lavoro nei primi 60 giorni, non sarà possibile crearne uno perché è ora fuori criterio. In questo caso, quando si esegue Update-AksHci, il processo di aggiornamento viene bloccato con l'errore In attesa della distribuzione "Operatore di fatturazione AksHci" per essere pronti. Se si esegue Sync-AksHciBilling, viene restituito l'output riuscito. Tuttavia, se si esegue Get-AksHciBillingStatus, lo stato della connessione è OutofPolicy.
Se non è stato distribuito un cluster del carico di lavoro in 60 giorni, la fatturazione esce dai criteri.
L'unico modo per risolvere questo problema consiste nel ridistribuire con un'installazione pulita.
La scheda di interfaccia di rete virtuale risulta mancante dopo il riavvio del computer
Nota
Questo problema è stato risolto nella versione di maggio 2022 e versioni successive.
Se i nodi Azure Stack HCI vengono riavviati uno dopo l'altro, alcune delle macchine virtuali perdono le schede di interfaccia di rete virtuali collegate. Questa perdita di vNIC causa la perdita della connettività di rete delle macchine virtuali e il cluster entra in uno stato non valido.
Riproduzione
- Riavviare un nodo Azure Stack HCI.
- Attendere il completamento del riavvio del nodo. Il nodo deve essere contrassegnato
Up
nel cluster di failover. - Riavviare gli altri nodi.
- Repeat
Comportamento previsto Lo stato del cluster deve essere integro . A tutte le macchine virtuali devono essere collegate schede di interfaccia di rete.
Per risolvere il problema, usare i comandi MOC per aggiungere la scheda di interfaccia di rete virtuale alla macchina virtuale.
- Ottenere il nome della scheda di interfaccia di rete virtuale per la macchina virtuale.
(Get-MocVirtualMachine -group <group> -name <vmname>).virtualmachineproperties.networkprofile.networkinterfaces
or
mocctl.exe compute vm get --name <vmname> --group <group>
- Connettere la scheda di interfaccia di rete virtuale alla macchina virtuale.
Connect-MocNetworkInterface -name <vnicname> -group <group> -virtualMachineName <vmname>
or
mocctl.exe compute vm nic add --name <vnicname> --vm-name <vmname> --group <group>
- Se il comando di connessione della scheda di rete virtuale non riesce, provare a disconnettersi e connettersi di nuovo. Di seguito è riportato il comando per la disconnessione della scheda di interfaccia di rete virtuale.
Disconnect-MocNetworkInterface -name <vnicname> -group <group> -virtualMachineName <vmname>
or
mocctl.exe compute vm nic remove --name <vnicname> --vm-name <vmname> --group <group>
Durante l'aggiornamento di una distribuzione, alcuni pod potrebbero rimanere bloccati in attesa che i pod statici abbiano una condizione pronta
I pod sono bloccati in attesa che i pod statici abbiano una condizione pronta.
Per rilasciare i pod e risolvere questo problema, è necessario riavviare kubelet. Per visualizzare il nodo NotReady con i pod statici, eseguire il comando seguente:
kubectl get nodes -o wide
Per ottenere altre informazioni sul nodo difettoso, eseguire il comando seguente:
kubectl describe node <IP of the node>
Usare SSH per accedere al nodo NotReady eseguendo il comando seguente:
ssh -i <path of the private key file> administrator@<IP of the node>
Quindi, per riavviare kubelet, eseguire il comando seguente:
/etc/.../kubelet restart
L'esecuzione di un aggiornamento genera l'errore : 'Errore durante il recupero delle informazioni sull'aggiornamento della piattaforma'
Quando si esegue un aggiornamento in Windows Admin Center, si è verificato l'errore seguente:
Error occurred while fetching platform upgrade information. RemoteException: No match was found for the specified search criteria and module name 'AksHci'. Try Get-PSRepository to see all available registered module repositories.
Questo messaggio di errore si verifica in genere quando il servizio Azure Kubernetes in Azure Stack HCI viene distribuito in un ambiente con un proxy configurato. Attualmente Windows Admin Center non supporta l'installazione di moduli in un ambiente proxy.
Per risolvere questo errore, configurare il servizio Azure Kubernetes in Azure Stack HCI usando il comando di PowerShell proxy.
Quando si aggiorna un cluster Kubernetes con un agente Open Policy, il processo di aggiornamento si blocca
Quando si aggiornano i cluster Kubernetes con un agente Open Policy (OPA), ad esempio OPA GateKeeper, il processo potrebbe bloccarsi e non essere in grado di completare. Questo problema può verificarsi perché l'agente criteri è configurato per impedire il pull delle immagini del contenitore da registri privati.
Per risolvere questo problema, se si aggiornano i cluster distribuiti con un'OPA, assicurarsi che i criteri consentano il pull delle immagini da Registro Azure Container. Per un aggiornamento del servizio Azure Kubernetes in Azure Stack HCI, è necessario aggiungere l'endpoint seguente nell'elenco dei criteri: ecpacr.azurecr.io.
L'aggiornamento del sistema operativo host HCI a HCIv2 interrompe l'installazione del servizio Azure Kubernetes in Azure Stack HCI: OutOfCapacity
L'esecuzione di un aggiornamento del sistema operativo in un host con un servizio Azure Kubernetes nella distribuzione di Azure Stack HCI può causare l'immissione di uno stato non valido e l'esito negativo delle due operazioni del giorno. L'avvio dei servizi NodeAgent MOC potrebbe non riuscire negli host aggiornati. Tutte le chiamate MOC ai nodi hanno esito negativo.
Nota
Questo problema si verifica solo occasionalmente.
Per riprodurre: quando si aggiorna un cluster con una distribuzione del servizio Azure Kubernetes esistente da HCI a HCIv2, un'operazione New-AksHciCluster
del servizio Azure Kubernetes potrebbe non riuscire. Il messaggio di errore indica che i nodi MOC sono OutOfCapacity. Ad esempio:
System.Collections.Hashtable.generic_non_zero1 [Error: failed to create nic test-load-balancer-whceb-nic for machinetest-load-balancer-whceb: unable to create VM network interface: failed to create network interface test-load-balancer-whceb-nic in resource group clustergroup-test: rpc error: code = Unknown desc = Location 'MocLocation' doesn't expose any nodes to create VNIC 'test-load-balancer-whceb-nic' on: OutOfCapacity]
Per risolvere questo problema, avviare il servizio NodeAgent wssdagent nei nodi interessati. In questo modo il problema verrà risolto e la distribuzione verrà restituita a uno stato valido. Esegui questo comando:
Get-ClusterNode -ErrorAction Stop | ForEach-Object { Invoke-Command -ComputerName $_ -ScriptBlock { Start-Service wssdagent -WarningAction:SilentlyContinue } }
L'aggiornamento del cluster di destinazione si blocca con uno o più nodi in una versione precedente di Kubernetes
Dopo aver eseguito Update-AksHciCluster, il processo di aggiornamento si blocca.
Eseguire il comando seguente per verificare se è presente un computer con PHASE
Eliminazione che esegue la versione precedente di Kubernetes da cui si esegue l'aggiornamento.
kubectl get machines -o wide --kubeconfig (Get-KvaConfig).kubeconfig
Se è presente un computer con PHASE
Eliminazione e VERSION
corrispondenza della versione precedente di Kubernetes, procedere con i passaggi seguenti.
Per risolvere questo problema, sono necessarie le informazioni seguenti:
- Versione di Kubernetes a cui si sta aggiornando il cluster del carico di lavoro.
- Indirizzo IP del nodo bloccato.
Per trovare queste informazioni, eseguire il cmdlet e il comando seguenti. Per impostazione predefinita, il cmdlet Get-AksHciCredential
scrive kubeconfig in ~/.kube/config
. Se si specifica una posizione diversa per il cluster del carico di lavoro kubeconfig quando si chiama Get-AksHciCredential
, sarà necessario specificare tale posizione per kubectl come un altro argomento. Ad esempio: kubectl get nodes -o wide --kubeconfig <path to workload cluster kubeconfig>
.
Get-AksHciCredential -name <workload cluster name>
kubectl get nodes -o wide
Il nodo che deve essere risolto deve mostrare STATUS
Ready,SchedulingDisabled
. Se viene visualizzato un nodo con questo stato, usare di INTERNAL-IP
questo nodo come valore dell'indirizzo IP nel comando seguente. Usare la versione di Kubernetes a cui si sta eseguendo l'aggiornamento come valore della versione; deve corrispondere al VERSION
valore del nodo con ROLES
control-plane,master
. Assicurarsi di includere il valore completo per la versione di Kubernetes, incluso v
, ad esempio v1.22.6
.
ssh -i (Get-MocConfig).sshPrivateKey -o StrictHostKeyChecking=no clouduser@<IP address> sudo crictl pull ecpacr.azurecr.io/kube-proxy:<Kubernetes version>
Dopo aver eseguito questo comando SSH, i nodi rimanenti con la versione precedente di Kubernetes devono essere eliminati e l'aggiornamento procederà.
L'aggiornamento del sistema operativo host HCI a HCIv2 interrompe l'installazione del servizio Azure Kubernetes in Azure Stack HCI: Non è possibile raggiungere il cluster di gestione
L'esecuzione di un aggiornamento del sistema operativo in un host con un servizio Azure Kubernetes nella distribuzione HCI di Azure Stack può causare l'ingresso della distribuzione in uno stato non valido, che rende il server API del cluster di gestione non raggiungibile e non riesce al giorno due operazioni. Il kube-vip
pod non può applicare la configurazione VIP all'interfaccia e di conseguenza l'indirizzo VIP non è raggiungibile.
Per riprodurre: aggiornare un cluster con una distribuzione HCI del servizio Azure Kubernetes esistente da HCI a HCIv2. Provare quindi a eseguire comandi che tentano di raggiungere il cluster di gestione, Get-AksHciCluster
ad esempio . Tutte le operazioni che tentano di raggiungere il cluster di gestione hanno esito negativo con errori quali:
PS C:\Users\wolfpack> Get-AksHciCluster
C:\Program Files\AksHci\kvactl.exe cluster list --kubeconfig="C:\ClusterStorage\Volume1\Msk8s\WorkingDir\1.0.8.10223\kubeconfig-mgmt" System.Collections.Hashtable.generic_non_zero 1 [Error: failed to connect to the cluster: action failed after 9
attempts: Get "https://10.193.237.5:6443/api?timeout=10s": net/http: request canceled while waiting for connection
(Client.Timeout exceeded while awaiting headers)]
At C:\Program Files\WindowsPowerShell\Modules\Kva\1.0.22\Common.psm1:2164 char:9
+ throw $errMessage
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (C:\Program File...iting headers)]:String) [], RuntimeException
+ FullyQualifiedErrorId : C:\Program Files\AksHci\kvactl.exe cluster list --kubeconfig="C:\ClusterStorage\Volume1\Msk8s\WorkingDir\1.0.8.10223\kubeconfig-mgmt" System.Collections.Hashtable.generic_non_zero 1 [Error: failed to connect to the cluster: action failed after 9 attempts: Get "https://10.193.237.5:6443/api?timeout=10s": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)]
Per risolvere questo problema: riavviare il kube-vip
contenitore per riportare la distribuzione a uno stato valido.
- Ottenere l'ID
kube-vip
contenitore:
ssh -i (Get-AksHciConfig).Moc.sshPrivateKey clouduser@<ip> "sudo crictl ls | grep 'kube-vip'"
L'output dovrebbe essere simile al seguente, con l'ID contenitore come primo valore 4a49a5158a5f8
. Ad esempio:
4a49a5158a5f8 7751a28bb5ce1 28 minutes ago Running kube-vip 1 cf9681f921a55
- Riavviare il contenitore:
ssh -i (Get-AksHciConfig).Moc.sshPrivateKey clouduser@<ip> "sudo crictl stop <Container ID>"
Quando si esegue Update-AksHci, il processo di aggiornamento è rimasto bloccato in 'In attesa della distribuzione 'Operatore di fatturazione AksHci' pronto'
Questo messaggio di stato viene visualizzato quando si esegue il cmdlet di PowerShell Update-AksHci .
Esaminare le cause radice seguenti per risolvere il problema:
Motivo uno: durante l'aggiornamento dell'operatore di fatturazione AksHci, l'operatore si è erroneamente contrassegnato come fuori criterio. Per risolvere questo problema, aprire una nuova finestra di PowerShell ed eseguire Sync-AksHciBilling. Si noterà che l'operazione di fatturazione continua entro i prossimi 20-30 minuti.
Motivo due: la macchina virtuale del cluster di gestione potrebbe non essere in memoria, che causa l'impossibilità del server API e rende tutti i comandi di Get-AksHciCluster, fatturazione e aggiornamento, timeout. Come soluzione alternativa, impostare la macchina virtuale del cluster di gestione su 32 GB in Hyper-V e riavviarla.
Motivo tre: L'operatore di fatturazione AksHci potrebbe non essere disponibile nello spazio di archiviazione, a causa di un bug nelle impostazioni di configurazione di Microsoft SQL. La mancanza di spazio di archiviazione potrebbe causare l'arresto dell'aggiornamento. Per risolvere questo problema, ridimensionare manualmente il pod
pvc
di fatturazione seguendo questa procedura.Eseguire il comando seguente per modificare le impostazioni del pod:
kubectl edit pvc mssql-data-claim --kubeconfig (Get-AksHciConfig).Kva.kubeconfig -n azure-arc
Quando il Blocco note o un altro editor viene aperto con un file YAML, modificare la riga per l'archiviazione da 100Mi a 5Gi:
spec: resources: requests: **storage: 5Gi**
Controllare lo stato della distribuzione della fatturazione usando il comando seguente:
kubectl get deployments/billing-manager-deployment --kubeconfig (Get-AksHciConfig).Kva.kubeconfig -n azure-arc
Quando si aggiorna il servizio Azure Kubernetes in Azure Stack HCI dall'aggiornamento di febbraio 2022 all'aggiornamento di aprile 2022, la distribuzione CSI scompare e causa il blocco dell'aggiornamento
Quando si aggiornano i cluster dal servizio Azure Kubernetes in Azure Stack HCI aggiornamento di febbraio 2022 all'aggiornamento di aprile 2022, l'aggiornamento potrebbe essere bloccato per un periodo di tempo illimitato. Potrebbero esserci pod bloccati nello Terminating
stato o CrashLoopBackoff
.
Si noterà che alcune delle risorse addon CSI di AksHci sono mancanti. Questi pod di risorse distribuiti usando o csi-akshcicsi-controller
dal csi-akshcicsi-node
daemonset.
Il componente aggiuntivo AksHci CSI nell'aggiornamento di febbraio 2022 conteneva una modifica alla specifica del driver CSI che a volte può lasciare le risorse del componente aggiuntivo in uno stato non risponde durante l'aggiornamento. Il driver .spec.fsGroupPolicy
CSI è stato impostato su un nuovo valore anche se è un campo non modificabile. Poiché il campo non è modificabile, la specifica del driver non viene aggiornata. Una conseguenza di questo è che le altre risorse AksHci CSI addon potrebbero non essere completamente riconciliate. Tutte le risorse CSI verranno ricreate.
Per risolvere manualmente il problema, è possibile eliminare manualmente il driver CSI. Dopo averlo rimosso, l'operatore cloud riconcilia il componente aggiuntivo AksHci CSI entro 10 minuti e ricreare il driver insieme al resto delle risorse di addon mancanti.
kubectl --kubeconfig $(Get-AksHciConfig).Kva.kubeconfig delete csidriver disk.csi.akshci.com`
Il dashboard di aggiornamento di Windows Admin Center non viene aggiornato dopo l'esito positivo degli aggiornamenti
Dopo un aggiornamento corretto, il dashboard di aggiornamento di Windows Admin Center mostra ancora la versione precedente.
Aggiornare il browser per risolvere il problema.
Quando si usa PowerShell per eseguire l'aggiornamento, viene creato un numero eccessivo di segreti di configurazione kubernetes in un cluster
La build 1.0.1.10628 del servizio Azure Kubernetes in Azure Stack HCI crea un numero eccessivo di segreti di configurazione Kubernetes nel cluster. Il percorso di aggiornamento della versione 1.0.1.10628 della versione di giugno 1.0.2.10723 è stato migliorato per pulire i segreti Kubernetes aggiuntivi. Tuttavia, in alcuni casi durante l'aggiornamento, i segreti non sono stati ancora puliti e pertanto il processo di aggiornamento non riesce.
Se si verifica questo problema, eseguire la procedura seguente:
Salvare lo script seguente come file denominato fix_leaked_secrets.ps1:
upgparam ( [Parameter(Mandatory=$true)] [string] $ClusterName, [Parameter(Mandatory=$true)] [string] $ManagementKubeConfigPath ) $ControlPlaneHostName = kubectl get nodes --kubeconfig $ManagementKubeConfigPath -o=jsonpath='{.items[0].metadata.name}' "Hostname is: $ControlPlaneHostName" $leakedSecretPath1 = "$ClusterName-template-secret-akshci-cc" $leakedSecretPath2 = "$ClusterName-moc-kms-plugin" $leakedSecretPath3 = "$ClusterName-kube-vip" $leakedSecretPath4 = "$ClusterName-template-secret-akshc" $leakedSecretPath5 = "$ClusterName-linux-template-secret-akshci-cc" $leakedSecretPath6 = "$ClusterName-windows-template-secret-akshci-cc" $leakedSecretNameList = New-Object -TypeName 'System.Collections.ArrayList'; $leakedSecretNameList.Add($leakedSecretPath1) | Out-Null $leakedSecretNameList.Add($leakedSecretPath2) | Out-Null $leakedSecretNameList.Add($leakedSecretPath3) | Out-Null $leakedSecretNameList.Add($leakedSecretPath4) | Out-Null $leakedSecretNameList.Add($leakedSecretPath5) | Out-Null $leakedSecretNameList.Add($leakedSecretPath6) | Out-Null foreach ($leakedSecretName in $leakedSecretNameList) { "Deleting secrets with the prefix $leakedSecretName" $output = kubectl --kubeconfig $ManagementKubeConfigPath exec etcd-$ControlPlaneHostName -n kube-system -- sh -c "ETCDCTL_API=3 etcdctl --cacert /etc/kubernetes/pki/etcd/ca.crt --key /etc/kubernetes/pki/etcd/server.key --cert /etc/kubernetes/pki/etcd/server.crt del /registry/secrets/default/$leakedSecretName --prefix=true" "Deleted: $output" }
Eseguire quindi il comando seguente usando il file fix_secret_leak.ps1 salvato:
.\fix_secret_leak.ps1 -ClusterName (Get-AksHciConfig).Kva.KvaName -ManagementKubeConfigPath (Get-AksHciConfig).Kva.Kubeconfig
Usare infine il comando di PowerShell seguente per ripetere il processo di aggiornamento:
Update-AksHci
Passaggi successivi
- Panoramica della risoluzione dei problemi
- Problemi di installazione ed errori
- Problemi noti di Windows Admin Center
Se si continuano a verificarsi problemi quando si usa Il servizio Azure Kubernetes Arc, è possibile segnalare bug tramite GitHub.