Toto téma vám pomůže při řešení potíží se zabezpečením a identitou ve službě AKS Arc.
Get-AksHciCredential selže s chybou "Nelze najít zadanou cestu"
Rutina PowerShellu Get-AksHciCredential
selže, pokud ji spustí jiný uživatel s rolí správce, než je ten, který se používá k instalaci AksHci. Příkaz vytvoří adresář .kube a umístí do něj konfigurační soubor. Příkaz však selže s následující chybou:
Error: open C:\Users\<user>\.kube\config: The system cannot find the path specified.
Reprodukování
- Nainstalujte AksHci.
- Vytvořte cílový cluster.
- Přihlaste se k počítači jako jiný uživatel pro správu (funkce s více správci).
- Spusťte
Get-AksHciCredential -Name $clusterName
.
Očekávané chování
Get-AksHciCredential
by měl být schopen vytvořit adresář .kube v domovském adresáři uživatele a umístit konfigurační soubor do daného adresáře.
Pokud chcete tento problém obejít, vytvořte adresář .kube v domovském adresáři uživatele. K vytvoření adresáře použijte následující příkaz:
mkdir "$HOME/.kube"
Po tomto kroku Get-AksHciCredential
by nemělo selhat.
Chyba "Platnost certifikátu vypršela – Nejde se připojit k serveru: x509"
Cílový cluster není přístupný, když se nepodaří obnovit certifikáty řídicí roviny. Při pokusu o připojení ke clusteru kubectl
příkaz zobrazí následující chybu:
certificate expired - Unable to connect to the server: x509: certificate has expired or is not yet valid: current time 2022-07-26T12:24:15-04:00 is after 2022-07-15T15:01:07Z
Poznámka
Tento problém je opravený ve verzi ze září 2022 a novější.
Reprodukování
- Nainstalujte AksHci.
- Nainstalujte cílový cluster. 3. Vypněte cluster (virtuální počítače) na více než 4 dny.
- Znovu zapněte cluster.
Příznaky a zmírnění
Cílový cluster je nedostupný. Každý kubectl
příkaz spuštěný v cílovém clusteru vrátí chybovou zprávu podobnou následující:
certificate expired - Unable to connect to the server: x509: certificate has expired or is not yet valid: current time 2022-07-26T12:24:15-04:00 is after 2022-07-15T15:01:07Z
Tento problém vyřešíte takto:
Spuštěním následujícího příkazu obnovte vygenerovaný certifikát ručně:
Update-AksHciClusterCertificates -Name my-workload -cluster -fixKubeletCredentials
Vygenerovat nové přihlašovací údaje:
Get-AksHciCredential -name <clustername>
Po několika minutách zkuste kubectl
příkaz znovu a zjistěte, jestli je cluster teď dostupný.
Poznámka
V AksHci verze 1.0.14.x a starší je známá chyba. Pokud má virtuální počítač řídicí roviny jiný vzor názvů než -control-plane-
, Update-AksHciClusterCertificates
nemusí příkaz fungovat. Certifikát musíte aktualizovat přihlášením k virtuálnímu počítači řídicí roviny:
- Vyhledejte IP adresu cílového řídicího počítače roviny clusteru.
- Spusťte následující příkaz:
ssh -i (get-mocconfig).sshPrivateKey clouduser@<ip>
. - Výpis souborů tetování certifikátu:
sudo ls /etc/kubernetes/pki/cert-tattoo-*
- Vygenerujte certifikáty pomocí všech souborů uvedených předchozím příkazem:
sudo /usr/bin/cert-tattoo-provision CreateCertsWithAltNames <absolute-path-of-cert-tattoo-file>
Ověřování handshake se nezdařilo: x509: certifikát podepsaný neznámou autoritou
Tato chyba se může zobrazit při nasazení nového clusteru AKS nebo přidání fondu uzlů do existujícího clusteru.
- Zkontrolujte, že uživatel, který spustil příkaz, je stejný jako uživatel, který nainstaloval AKS ve službě Azure Stack nebo Windows Server. Další informace o udělení přístupu více uživatelům najdete v tématu Nastavení více správců.
- Pokud je uživatel stejný a chyba přetrvává, vyřešte problém následujícím postupem:
- Odebráním
$env:UserProfile.wssd\kvactl\cloudconfig
odstraňte starý certifikát zařízení pro správu. - Spusťte
Repair-AksHciCerts
. - Spusťte příkaz
Get-AksHciCluster
a zkontrolujte, jestli je opravená.
Protokoly cílových podů clusteru nejsou přístupné – vzdálená chyba: tls: vnitřní chyba
Protokoly cílového clusteru nejsou přístupné. Při pokusu o přístup k protokolům podů v cílovém clusteru se zobrazí následující chyba protokolu TLS:
Error from server: Get "[https://10.0.0.0:10250/containerLogs/kube-system/kube-apiserver-moc-l9iv8xjn3av/kube-apiserver":](https://10.0.0.0:10250/containerLogs/kube-system/kube-apiserver-moc-l9iv8xjn3av/kube-apiserver%22:) remote error: tls: internal error
Poznámka
Jedná se o známý problém v AksHci verze 1.0.14.x a starší. Je opravený jako součást verze 1.0.14.x (zářijová verze a novější). U cílových clusterů aktualizovaných na tuto verzi by k tomuto problému nemělo docházet.
Reprodukování
- Nainstalujte AksHci.
- Nainstalujte cílový cluster.
- Neupgradujte cluster po dobu 60 dnů.
- Restartujte cluster.
Příznaky a zmírnění
Protokoly cílových podů by neměly být přístupné. Každý kubectl
příkaz protokolu spuštěný v cílovém clusteru by se měl vrátit s chybovou zprávou podobnou následující:
Error from server: Get "[https://10.0.0.0:10250/containerLogs/kube-system/kube-apiserver-moc-l9iv8xjn3av/kube-apiserver":](https://10.0.0.0:10250/containerLogs/kube-system/kube-apiserver-moc-l9iv8xjn3av/kube-apiserver%22:) remote error: tls: internal error
Tento problém vyřešíte takto:
Spuštěním následujícího příkazu obnovte vygenerovaný certifikát ručně:
Update-AksHciClusterCertificates -Name my-workload -fixKubeletCredentials
Vygenerovat nové přihlašovací údaje:
Get-AksHciCredential -name <clustername>
Řídicí rovina clusteru – platnost certifikátu vypršela – Nejde se připojit k serveru: x509
Cílový cluster není přístupný, když se nepodaří obnovit certifikáty řídicí roviny. Při pokusu o přístup ke clusteru kubectl
příkaz vygeneruje následující chybu:
certificate expired - Unable to connect to the server: x509: certificate has expired or is not yet valid: current time 2022-07-26T12:24:15-04:00 is after 2022-07-15T15:01:07Z
Poznámka
Tento problém je opravený ve verzi ze září 2022 a novější.
Reprodukování
- Nainstalujte AksHci.
- Nainstalujte cílový cluster.
- Vypněte clustery (virtuální počítače) na více než 4 dny.
- Znovu zapněte cluster.
Příznaky a zmírnění
Cílový cluster by měl být nedostupný. Všechny kubectl
příkazy spuštěné v cílovém clusteru by se měly vrátit s chybovou zprávou podobnou následující:
certificate expired - Unable to connect to the server: x509: certificate has expired or is not yet valid: current time 2022-07-26T12:24:15-04:00 is after 2022-07-15T15:01:07Z
Tento problém vyřešíte takto:
Spuštěním následujícího příkazu obnovte vygenerovaný certifikát ručně:
Update-AksHciClusterCertificates -Name my-workload -cluster -fixKubeletCredentials
Vygenerovat nové přihlašovací údaje:
Get-AksHciCredential -name <clustername>
Po několika minutách zkuste kubectl
příkaz znovu a zjistěte, jestli je cluster teď dostupný.
Pod Služby správy klíčů selže a protokoly podů Služby správy klíčů obsahují chyby.
Mezi možné příznaky tohoto problému patří:
-
kubectl get secrets
selhání s vnitřní chybou. -
kubectl logs <kmspod-name> -n kube-system
obsahuje chyby. - Při pokusu o vytvoření podů selže připojení tajných kódů ve svazcích.
- Server api se nepodaří spustit.
V protokolech podů Služby správy klíčů vyhledejte chyby spuštěním následujícího příkazu:
kubectl logs <kmspod-name> -n kube-system
Pokud protokoly vrátí chybu týkající se neplatného tokenu v podu Správy klíčů clusteru pro správu, spusťte následující příkaz:
Update-AksHciCertificates
Pokud dojde k chybě týkající se neplatného tokenu v podu Služby správy klíčů cílového clusteru, spusťte následující příkaz:
UpdateAksHciClusterCertificates -name <cluster-name> -fixcloudcredential
Chyba System.Collections.Hashtable.generic_non_zero 1 [Chyba: Platnost certifikátu vypršela: Platnost vypršela]
Pokud se tento certifikát nepoužívá déle než 60 dnů, platnost certifikátu vyprší. AKS Arc používá mocctl
ke komunikaci s MocStackem při provádění operací souvisejících s moc nástroj příkazového řádku. Platnost certifikátu, který mocclt
příkaz používá ke komunikaci s cloudagentem, vyprší za 60 dnů. Příkaz mocctl
certifikát automaticky obnoví, když se použije blízko vypršení jeho platnosti (po přibližně 42 dnech). Pokud se příkaz nepoužívá často, platnost certifikátu vyprší.
Pokud chcete chování reprodukovat, nainstalujte AKS Arc a po dobu 60 dnů se neprovádí žádná operace zahrnující mocctl
příkaz.
Problém vyřešíte tak, že se po vypršení platnosti certifikátu znovu přihlásíte. Přihlaste se spuštěním následujícího příkazu PowerShellu:
Repair-MocLogin
Odstranění certifikátu KVA, pokud jeho platnost vypršela po 60 dnech
Pokud se neprovádí upgrade, platnost certifikátu KVA vyprší po 60 dnech.
Update-AksHci
a všechny související kvactl
příkazy vyvolají následující chybu.
Error: failed to get new provider: failed to create azurestackhci session: Certificate has expired: Expired
Pokud chcete tuto chybu vyřešit, odstraňte soubor certifikátu, jehož platnost vypršela, \kvactl\cloudconfig
na adrese a zkuste to Update-AksHci
znovu na uzlu, kde dochází k problému s vypršením platnosti certifikátu. Můžete použít následující příkaz:
$env:UserProfile.wssd\kvactl\cloudconfig
Diskuzi o tomto problému najdete v tématu Certifikát KVA je potřeba odstranit, pokud platnost certifikátu KVA vypršela po 60 dnech.
Pro uzly Azure Stack HCI připojené k doméně jsou potřeba speciální oprávnění Active Directory.
Uživatelé nasazující a konfigurující Azure Kubernetes Service v Azure Stack HCI musí mít oprávnění Úplné řízení, aby mohli vytvářet objekty AD v kontejneru Služby Active Directory, ve kterých se vytvářejí objekty serveru a služby.
Zvyšte oprávnění uživatele.
Uninstall-AksHciAdAuth selže s chybou [Chyba ze serveru (nenalezeno): tajné kódy keytab-akshci-scale-reliability se nenašly]
Pokud uninstall-AksHciAdAuth zobrazí tuto chybu, měli byste ji prozatím ignorovat, protože tento problém bude vyřešen.
This issue will be fixed.
Protokoly kubectl vrací chybu: Musíte být přihlášení k serveru (server požádal klienta o zadání přihlašovacích údajů)
Došlo k problému se službou AKS Arc, kdy cluster může zastavit vracení protokolů. V takovém případě spuštění kubectl logs <pod_name>
vrátí chybu: Musíte být přihlášeni k serveru (server požádal klienta o zadání přihlašovacích údajů). AKS Arc obměňuje základní certifikáty Kubernetes každé 4 dny, ale někdy server rozhraní API Kubernetes při aktualizaci certifikátů okamžitě znovu nenačte klientský certifikát pro komunikaci s kubeletem.
Pokud chcete tento problém zmírnit, máte několik možností:
Spusťte
kubectl logs
znovu . Spusťte například následující příkaz PowerShellu:while (1) {kubectl logs <POD_NAME>; sleep 1}
Restartujte kontejner v
kube-apiserver
každé řídicí rovině clusteru. Restartování serveru rozhraní API nemá vliv na spuštěné úlohy. Chcete-li restartovat server rozhraní API, postupujte takto:Získejte IP adresy pro každou řídicí rovinu v clusteru:
kubectl get nodes -o wide
Spusťte následující příkaz:
ssh -i (get-akshciconfig).Moc.sshPrivateKey clouduser@<CONTROL_PLANE_IP> 'sudo crictl stop $(sudo crictl ps --name kube-apiserver -o json | jq -r .containers[0].id)'
Volitelně, ale nedoporučuje se pro produkční úlohy, můžete požádat o
kube-apiserver
neověřování certifikátu serveru kubeletu:kubectl logs <POD_NAME> --insecure-skip-tls-verify-backend=true