Platí pro: AKS ve Službě Azure Stack HCI, AKS na Windows Serveru Toto téma vám pomůže s řešením problémů souvisejících se sítěmi ve službě AKS Arc.
Chyba: Nepodařilo se spustit službu obecného clusteru cloudového agenta v clusteru s podporou převzetí služeb při selhání. Skupina prostředků clusteru je ve stavu selhání.
Spuštění cloudového agenta se nemusí podařit při použití názvů cest s mezerami.
Pokud použijete Set-AksHciConfig k zadání -imageDir
parametrů , -workingDir
, -cloudConfigLocation
nebo -nodeConfigLocation
s názvem cesty, který obsahuje znak mezery, například D:\Cloud Share\AKS HCI
, služba clusteru cloudového agenta se nespustí s následující (nebo podobnou) chybovou zprávou:
Failed to start the cloud agent generic cluster service in failover cluster. The cluster resource group os in the 'failed' state. Resources in 'failed' or 'pending' states: 'MOC Cloud Agent Service'
Pokud chcete tento problém obejít, použijte cestu, která neobsahuje mezery, C:\CloudShare\AKS-HCI
například .
Clustery připojené ke službě Arc mají prázdnou vlastnost "distribuce" JSON
Clustery připojené ke Službě Azure Arc pro Kubernetes můžou mít hodnotu vlastnosti distribution
JSON nastavenou na prázdný řetězec. U clusterů připojených ke službě AKS Arc se tato hodnota nastavuje během počáteční instalace a po celou dobu nasazení se nemění.
Pokud chcete problém reprodukovat, otevřete okno Azure PowerShell a spusťte následující příkazy:
az login
az account set --subscription <sub_id>
az connectedk8s show -g <rg_name> -n
Následuje příklad výstupu z tohoto příkazu:
{
"agentPublicKeyCertificate": <value>
"agentVersion": "1.8.14",
"azureHybridBenefit": "NotApplicable",
"connectivityStatus": "Connected",
"distribution": "",
"distributionVersion": null,
"id": "/subscriptions/<subscription>/resourceGroups/<resource group>/providers/Microsoft.Kubernetes/connectedClusters/<cluster name>",
"identity": {
"principalId": "<principal id>",
"tenantId": "<tenant id>",
"type": "SystemAssigned"
},
"infrastructure": "azure_stack_hci",
"kubernetesVersion": "1.23.12",
"lastConnectivityTime": "2022-11-04T14:59:59.050000+00:00",
"location": "eastus",
"managedIdentityCertificateExpirationTime": "2023-02-02T14:24:00+00:00",
"miscellaneousProperties": null,
"name": "mgmt-cluster",
"offering": "AzureStackHCI_AKS_Management",
"privateLinkScopeResourceId": null,
"privateLinkState": "Disabled",
"provisioningState": "Succeeded",
"resourceGroup": "<resource group>",
"systemData": {
"createdAt": "2022-11-04T14:29:17.680060+00:00",
"createdBy": "<>",
"createdByType": "Application",
"lastModifiedAt": "2022-11-04T15:00:01.830067+00:00",
"lastModifiedBy": "64b12d6e-6549-484c-8cc6-6281839ba394",
"lastModifiedByType": "Application"
},
"tags": {},
"totalCoreCount": 4,
"totalNodeCount": 1,
"type": "microsoft.kubernetes/connectedclusters"
}
Řešení tohoto problému
Pokud výstup vlastnosti JSON distribution
vrátí prázdný řetězec, postupujte podle těchto pokynů a opravte cluster:
Zkopírujte následující konfiguraci do souboru s názvem patchBody.json:
{ "properties": { "distribution": "aks_management" } }
Důležité
Pokud je váš cluster clusterem pro správu AKS, hodnota by měla být nastavená na
aks_management
. Pokud se jedná o cluster úloh, měl by být nastavený naaks_workload
hodnotu .Z výstupu JSON, který jste získali výše, zkopírujte ID připojeného clusteru. Měl by se zobrazit jako dlouhý řetězec v následujícím formátu:
"/subscriptions/<subscription >/resourceGroups/<resource group>/providers/Microsoft.Kubernetes/connectedClusters/<cluster name>",
Spuštěním následujícího příkazu opravte cluster. Hodnotou
<cc_arm_id>
by mělo být ID získané v kroku 2:az rest -m patch -u "<cc_arm_id>?api-version=2022-10-01-preview" -b "@patchBody.json"
Spuštěním příkazu
az connectedk8s show -g <rg_name> -n <cc_name>
zkontrolujte, že se cluster úspěšně opravil, abyste se ujistili, že je vlastnostdistribution
JSON správně nastavená.
Služba WSSDAgent se zablokovala při spouštění a nemůže se připojit ke cloudovému agentu.
Příznaky:
- Proxy server je povolený ve službě AKS Arc. Služba WSSDAgent se zablokovala ve
starting
stavu . Zobrazuje se jako následující: -
Test-NetConnection -ComputerName <computer IP/Name> -Port <port>
z uzlu, kde agent uzlu selhává směrem ke cloudovému agentovi, funguje v systému správně (i když se nepodaří spustit agenta wssdagent) - Curl.exe z uzlu, na kterém agent selhává směrem ke cloudovému agentovi, reprodukuje problém a zablokuje se:
curl.exe https://<computerIP>:6500
- Pokud chcete tento problém vyřešit, předejte
--noproxy
curl.exe příznak . Curl vrátí chybu z wssdcloudagent. To je očekávané, protože curl není klient GRPC. Curl se nezablokuje při čekání na odeslání příznaku--noproxy
. Vrácení chyby se v této chvíli považuje za úspěch:
curl.exe --noproxy '*' https://<computerIP>:65000
Je pravděpodobné, že nastavení proxy serveru bylo na hostiteli změněno na vadný proxy server. Nastavení proxy serveru pro AKS Arc jsou proměnné prostředí, které jsou zděděné z nadřazeného procesu na hostiteli. Tato nastavení se rozšíří jenom při spuštění nové služby nebo aktualizaci nebo restartování staré služby. Je možné, že na hostiteli byla nastavena chybná nastavení proxy serveru a po aktualizaci nebo restartování byla rozšířena do agenta WSSDAgent, což způsobilo selhání agenta WSSDAgent.
Nastavení proxy serveru budete muset opravit změnou proměnných prostředí na počítači. Na počítači změňte proměnné pomocí následujících příkazů:
[Environment]::SetEnvironmentVariable("https_proxy", <Value>, "Machine")
[Environment]::SetEnvironmentVariable("http_proxy", <Value>, "Machine")
[Environment]::SetEnvironmentVariable("no_proxy", <Value>, "Machine")
Restartujte počítač, aby správce služeb a WSSDAgent získali pevný proxy server.
Podu CAPH se nedaří obnovit certifikát
K této chybě dochází, protože při každém spuštění podu CAPH se pokusíte přihlásit ke cloudagent a certifikát se uloží na svazek dočasného úložiště, který se při restartování podu vyčistí. Proto se při každém restartování podu certifikát zničí a provede se nový pokus o přihlášení.
Při pokusu o přihlášení se spustí rutina prodlužování platnosti, která certifikát obnoví, jakmile se blíží vypršení jeho platnosti. Pod CAPH rozhodne, jestli je potřeba přihlášení, pokud je certifikát dostupný, nebo ne. Pokud je certifikát k dispozici, pokus o přihlášení se nepokusí za předpokladu, že rutina prodlužování platnosti už existuje.
Při restartování kontejneru se ale dočasný adresář nevyčistí, takže soubor zůstane zachovaný a pokus o přihlášení neproběhl, což způsobí, že se rutina obnovení nespustí. To vede k vypršení platnosti certifikátu.
Pokud chcete tento problém zmírnit, restartujte pod CAPH pomocí následujícího příkazu:
kubectl delete pod pod-name
Set-AksHciConfig selže s chybami WinRM, ale zobrazuje se, že winRM je správně nakonfigurovaný
Při spuštění rutiny Set-AksHciConfig se může zobrazit následující chyba:
WinRM service is already running on this machine.
WinRM is already set up for remote management on this computer.
Powershell remoting to TK5-3WP08R0733 was not successful.
At C:\Program Files\WindowsPowerShell\Modules\Moc\0.2.23\Moc.psm1:2957 char:17
+ ... throw "Powershell remoting to "+$env:computername+" was n ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (Powershell remo...not successful.:String) [], RuntimeException
+ FullyQualifiedErrorId : Powershell remoting to TK5-3WP08R0733 was not successful.
K této chybě většinou dochází v důsledku změny tokenu zabezpečení uživatele (kvůli změně členství ve skupině), změně hesla nebo vypršení platnosti hesla. Ve většině případů je možné tento problém napravit tím, že se odhlásíte z počítače a přihlásíte se znovu. Pokud k chybě stále dochází, můžete vytvořit lístek podpory prostřednictvím Azure Portal.
Cluster AKS Arc se zasekl ve stavu zřizování ScalingControlPlane
Tento problém způsobuje, že cluster AKS Arc zůstane po delší dobu ve stavu ScalingControlPlane .
Reprodukování
Get-AksHciCluster -Name <cluster name> | select *
Status : {ProvisioningState, Details}
ProvisioningState : ScalingControlPlane
KubernetesVersion : v1.22.6
PackageVersion : v1.22.6-kvapkg.0
NodePools : {nodepoolA, nodepoolB}
WindowsNodeCount : 0
LinuxNodeCount : 1
ControlPlaneNodeCount : 1
ControlPlaneVmSize : Standard_D4s_v3
AutoScalerEnabled : False
AutoScalerProfile :
Name : <cluster name>
Tento problém je opravený v nedávných verzích AKS Arc. Doporučujeme aktualizovat clustery AKS Arc na nejnovější verzi.
Pokud chcete tento problém zmírnit, obraťte se na podporu a ručně opravte stav uzlů řídicí roviny a odeberte podmínku MachineOwnerRemediatedCondition ze stavu počítače prostřednictvím kubectl.
Cluster úloh se nenašel.
Cluster úloh se nemusí najít, pokud jsou fondy IP adres dvou nasazení AKS ve službě Azure Stack HCI stejné nebo se překrývají. Pokud nasadíte dva hostitele AKS a pro oba použijete stejnou AksHciNetworkSetting
konfiguraci, PowerShell a Windows Admin Center cluster úloh pravděpodobně nenajdou, protože serveru rozhraní API se v obou clusterech přiřadí stejná IP adresa, což způsobí konflikt.
Chybová zpráva, která se zobrazí, bude vypadat podobně jako v následujícím příkladu.
A workload cluster with the name 'clustergroup-management' was not found.
At C:\Program Files\WindowsPowerShell\Modules\Kva\0.2.23\Common.psm1:3083 char:9
+ throw $("A workload cluster with the name '$Name' was not fou ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (A workload clus... was not found.:String) [], RuntimeException
+ FullyQualifiedErrorId : A workload cluster with the name 'clustergroup-management' was not found.
Poznámka
Název vašeho clusteru se bude lišit.
Pokud chcete tento problém vyřešit, odstraňte jeden z clusterů a vytvořte nové nastavení sítě s clustery AKS, které má nepřekrývající se síť s ostatními clustery.
Get-AksHCIClusterNetwork nezobrazuje aktuální přidělení IP adres
Spuštěním příkazu Get-AksHciClusterNetwork získáte seznam všech konfigurací virtuální sítě. Příkaz ale nezobrazuje aktuální přidělení IP adres.
Pokud chcete zjistit, jaké IP adresy se aktuálně používají ve virtuální síti, použijte následující postup:
- Pokud chcete získat skupinu, spusťte následující příkaz:
Get-MocGroup -location MocLocation
- Pokud chcete získat seznam aktuálně používaných IP adres a seznam dostupných nebo použitých virtuálních IP adres, spusťte následující příkaz:
Get-MocNetworkInterface -Group <groupName> | ConvertTo-Json -depth 10
- Pomocí následujícího příkazu zobrazte seznam virtuálních IP adres, které se aktuálně používají:
Get-MocLoadBalancer -Group <groupName> | ConvertTo-Json -depth 10
IP adresa clusteru x.x.x.x se nezdaří
IP adresa clusteru se během předběžné kontroly zobrazí jako neúspěšná. Tato předběžná kontrola otestuje, jestli jsou všechny adresy IPv4 a názvy sítí DNS online a dostupné. Selhání tohoto testu může způsobit například selhání protokolu IPv4 nebo názvu sítě.
Pokud chcete tento problém vyřešit, proveďte následující kroky:
Spusťte následující příkaz:
Get-ClusterGroup -name "Cluster Group" | Get-ClusterResource
Ujistěte se, že jsou všechny síťové názvy a IP adresy v online stavu.
Spusťte následující dva příkazy:
Stop-ClusterResource -name "Cluster IP Address x.x.x.x"
a pak
Start-ClusterResource -name "Cluster IP Address x.x.x.x"
Když nasadíte AKS ve službě Azure Stack HCI s chybně nakonfigurovanou sítí, vypršel časový limit nasazení v různých bodech.
Když nasadíte AKS v Azure Stack HCI, může dojít k vypršení časového limitu nasazení v různých bodech procesu v závislosti na tom, kde došlo k chybné konfiguraci. Měli byste si projít chybovou zprávu, abyste zjistili příčinu a místo, kde k ní došlo.
Například v následující chybě je bod, ve kterém došlo k chybné konfiguraci, v Get-DownloadSdkRelease -Name "mocstack-stable"
:
$vnet = New-AksHciNetworkSettingSet-AksHciConfig -vnet $vnetInstall-AksHciVERBOSE:
Initializing environmentVERBOSE: [AksHci] Importing ConfigurationVERBOSE:
[AksHci] Importing Configuration Completedpowershell :
GetRelease - error returned by API call:
Post "https://msk8s.api.cdp.microsoft.com/api/v1.1/contents/default/namespaces/default/names/mocstack-stable/versions/0.9.7.0/files?action=generateDownloadInfo&ForegroundPriority=True":
dial tcp 52.184.220.11:443: connectex:
A connection attempt failed because the connected party did not properly
respond after a period of time, or established connection failed because
connected host has failed to respond.At line:1 char:1+ powershell -command
{ Get-DownloadSdkRelease -Name "mocstack-stable"}
To znamená, že fyzický uzel Azure Stack HCI může přeložit název adresy URL pro stahování, msk8s.api.cdp.microsoft.com
ale uzel se nemůže připojit k cílovému serveru.
Pokud chcete tento problém vyřešit, musíte zjistit, kde v toku připojení došlo k rozpisu. Tady je několik kroků, jak se pokusit problém vyřešit z uzlu fyzického clusteru:
- Příkazem Ping zadejte název cílového DNS: ping
msk8s.api.cdp.microsoft.com
. - Pokud se vám vrátí odpověď a časový limit nevypadá, základní síťová cesta funguje.
- Pokud vyprší časový limit připojení, může dojít k přerušení cesty k datům. Další informace najdete v tématu Kontrola nastavení proxy serveru. Nebo může dojít k přerušení návratové cesty, takže byste měli zkontrolovat pravidla brány firewall.
Aplikace, které jsou závislé na čase NTP, aktivují stovky falešných výstrah.
Aplikace, které jsou závislé na čase NTP, mohou aktivovat stovky falešných výstrah, když jsou synchronizované mimo čas. Pokud je cluster spuštěný v proxy prostředí, je možné, že vaše fondy uzlů nebudou moct komunikovat s výchozím serverem NTP time.windows.com přes proxy server nebo bránu firewall.
Alternativní řešení
Chcete-li tento problém vyřešit, aktualizujte konfiguraci serveru NTP na každém uzlu fondu uzlů a synchronizujte hodiny. Tím nastavíte také hodiny v každém podu vaší aplikace.
Požadavky
- Adresa serveru NTP, která je přístupná v každém uzlu fondu uzlů.
- Přístup k souboru kubeconfig clusteru úloh.
- Přístup k clusteru pro správu kubeconfig.
Postup
Spuštěním následujícího
kubectl
příkazu pomocí kubeconfig clusteru úloh získáte seznam uzlů:kubectl --kubeconfig <PATH TO KUBECONFIG> get nodes -owide
Spuštěním následujícího
kubectl
příkazu porovnejte názvy uzlů z předchozího příkazu s uzly fondu uzlů clusteru úloh. Poznamenejte si relevantní IP adresy z výstupu předchozího příkazu.kubectl --kubeconfig (Get-KvaConfig).kubeconfig get machine -l cluster.x-k8s.io/cluster-name=<WORKLOAD_CLUSTER_NAME>
Pomocí výstupu z předchozích kroků spusťte následující kroky pro každý uzel fondu uzlů, který potřebuje aktualizovat konfiguraci NTP:
SSH do virtuálního počítače uzlu fondu uzlů:
ssh -o StrictHostKeyChecking=no -i (Get-MocConfig).sshPrivateKey clouduser@<NODEPOOL_IP>
Ověřte, že nakonfigurovaný server NTP není dostupný:
sudo timedatectl timesync-status
Pokud výstup vypadá takto, je server NTP nedostupný a je potřeba ho změnit:
Server: n/a (time.windows.com) Poll interval: 0 (min: 32s; max 34min 8s) Packet count: 0
Pokud chcete aktualizovat server NTP, spusťte následující příkazy a nastavte server NTP v konfiguračním souboru časovéhosync na server, který je přístupný z virtuálního počítače fondu uzlů:
# make a backup of the config file sudo cp /etc/systemd/timesyncd.conf ~/timesyncd.conf.bak # update the ntp server NTPSERVER="NEW_NTP_SERVER_ADDRESS" sudo sed -i -E "s|^(NTP=)(.*)$|\1$NTPSERVER|g" /etc/systemd/timesyncd.conf # verify that the NTP server is updated correctly - check the value for the field that starts with "NTP=" sudo cat /etc/systemd/timesyncd.conf
Restartujte službu timesync:
sudo systemctl restart systemd-timesyncd.service
Ověřte, že je server NTP přístupný:
sudo timedatectl timesync-status
Ověřte, že hodiny zobrazují správný čas:
date
Spuštěním příkazu z kroku 3.f se ujistěte, že každý uzel fondu uzlů zobrazuje stejnou dobu.
Pokud vaše aplikace neaktualizuje čas automaticky, restartujte pody.