Upravit

Sdílet prostřednictvím


Oprava známých problémů se zabezpečením a identitou a chyb v AKS Arc

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í

  1. Nainstalujte AksHci.
  2. Vytvořte cílový cluster.
  3. Přihlaste se k počítači jako jiný uživatel pro správu (funkce s více správci).
  4. 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í

  1. Nainstalujte AksHci.
  2. Nainstalujte cílový cluster. 3. Vypněte cluster (virtuální počítače) na více než 4 dny.
  3. 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:

  1. Spuštěním následujícího příkazu obnovte vygenerovaný certifikát ručně:

    Update-AksHciClusterCertificates  -Name my-workload -cluster -fixKubeletCredentials
    
  2. 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:

  1. Vyhledejte IP adresu cílového řídicího počítače roviny clusteru.
  2. Spusťte následující příkaz: ssh -i (get-mocconfig).sshPrivateKey clouduser@<ip>.
  3. Výpis souborů tetování certifikátu: sudo ls /etc/kubernetes/pki/cert-tattoo-*
  4. 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.

  1. 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ů.
  2. 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\cloudconfigodstraň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í

  1. Nainstalujte AksHci.
  2. Nainstalujte cílový cluster.
  3. Neupgradujte cluster po dobu 60 dnů.
  4. 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:

  1. Spuštěním následujícího příkazu obnovte vygenerovaný certifikát ručně:

    Update-AksHciClusterCertificates  -Name my-workload -fixKubeletCredentials
    
  2. 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í

  1. Nainstalujte AksHci.
  2. Nainstalujte cílový cluster.
  3. Vypněte clustery (virtuální počítače) na více než 4 dny.
  4. 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:

  1. Spuštěním následujícího příkazu obnovte vygenerovaný certifikát ručně:

    Update-AksHciClusterCertificates  -Name my-workload -cluster -fixKubeletCredentials
    
  2. 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 logsznovu . 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:

    1. Získejte IP adresy pro každou řídicí rovinu v clusteru:

      kubectl get nodes -o wide
      
    2. 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