Připojení ke clusteru Kubernetes operátora Azure Nexus

V průběhu životního cyklu clusteru Azure Operator Nexus Kubernetes budete nakonec potřebovat přímý přístup k uzlu clusteru. Tento přístup může být určený pro operace údržby, shromažďování protokolů nebo řešení potíží. K uzlu přistupujete prostřednictvím ověřování, které metody se liší v závislosti na vaší metodě připojení. Bezpečně se autentizujete na uzlech clusteru prostřednictvím dvou možností probíraných v tomto článku. Z bezpečnostních důvodů nejsou uzly clusteru přístupné z internetu. Místo toho, abyste se připojovali k uzlům clusteru přímo, musíte použít buď kubectl debug, nebo IP adresu hostitele z jumpboxu.

Požadavky

  • Cluster Kubernetes operátora Azure, který je nasazený ve skupině prostředků ve vašem předplatném Azure.
  • Privátní klíč SSH pro uzly clusteru
  • Pokud chcete SSH použít IP adresu uzlu, musíte nasadit virtuální počítač jumpbox ve stejné síti CNI (Container Network Interface) jako uzly clusteru.

Přístup k uzlům clusteru přes Azure Arc pro servery

Příkaz az ssh arc umožňuje uživatelům vzdáleně přistupovat k virtuálnímu počítači clusteru, který je připojený ke službě Azure Arc. Tato metoda představuje bezpečný způsob, jak se přes SSH připojit k uzlu clusteru přímo z příkazového řádku, což z něj dělá rychlou a efektivní metodu pro vzdálenou správu.

Poznámka:

Uzly clusteru Nexus Kubernetes jsou ve výchozím nastavení servery připojené prostřednictvím systému Arc.

  1. Nastavte požadované proměnné. Zástupné symboly nahraďte skutečnými hodnotami relevantními pro vaše prostředí Azure a cluster Nexus Kubernetes.

    RESOURCE_GROUP="myResourceGroup" # Resource group where the Nexus Kubernetes cluster is deployed
    CLUSTER_NAME="myNexusK8sCluster" # Name of the Nexus Kubernetes cluster
    SUBSCRIPTION_ID="<Subscription ID>" # Azure subscription ID
    ADMIN_USERNAME="azureuser" # Username for the cluster administrator (--admin-username parameter value used during cluster creation)
    SSH_PRIVATE_KEY_FILE="<vm_ssh_id_rsa>" # Path to the SSH private key file
    MANAGED_RESOURCE_GROUP=$(az networkcloud kubernetescluster show -n $CLUSTER_NAME -g $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID --output tsv --query managedResourceGroupConfiguration.name)
    
  2. Získejte dostupné názvy uzlů clusteru.

    az networkcloud kubernetescluster show --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID -o json | jq '.nodes[].name'
    
  3. Ukázkový výstup:

    "mynexusk8scluster-0b32128d-agentpool1-md-7h9t4"
    "mynexusk8scluster-0b32128d-agentpool1-md-c6xbs"
    "mynexusk8scluster-0b32128d-control-plane-qq5jm"
    
  4. Nastavte název uzlu clusteru na proměnnou VM_NAME.

    VM_NAME="mynexusk8scluster-0b32128d-agentpool1-md-7h9t4"
    
  5. Spuštěním následujícího příkazu připojte SSH k uzlu clusteru.

    az ssh arc --subscription $SUBSCRIPTION_ID \
        --resource-group $MANAGED_RESOURCE_GROUP \
        --name $VM_NAME \
        --local-user $ADMIN_USERNAME \
        --private-key-file $SSH_PRIVATE_KEY_FILE
    

Přístup k uzlům pomocí rozhraní Kubernetes API

Tato metoda vyžaduje použití kubectl debug příkazu. Tato metoda je omezená na kontejnery a může vynechat širší systémové problémy, na rozdíl od SSH (pomocí příkazu az ssh arc nebo přímé IP adresy), která nabízí úplný přístup a řízení uzlů.

Přístup k rozhraní Kubernetes API přes Azure Arc pro Kubernetes

Poznámka:

Při vytváření clusteru Nexus Kubernetes vytvoří Nexus automaticky spravovanou skupinu prostředků, která je vyhrazená pro ukládání prostředků clusteru. V rámci této skupiny se vytvoří zdroj clusteru připojeného prostřednictvím Arc.

Pokud chcete získat přístup ke clusteru, musíte nastavit připojení ke clusteru kubeconfig. Po přihlášení k Azure CLI s příslušnou entitou Microsoft Entra můžete získat kubeconfig potřebné pro komunikaci s clusterem odkudkoli, i mimo firewall, který ho obklopuje.

  1. Nastavte CLUSTER_NAME, RESOURCE_GROUP a SUBSCRIPTION_ID proměnné.

    CLUSTER_NAME="myNexusK8sCluster"
    RESOURCE_GROUP="myResourceGroup"
    SUBSCRIPTION_ID=<set the correct subscription_id>
    
  2. Dotažte se na spravovanou skupinu prostředků pomocí az a uložte ji do MANAGED_RESOURCE_GROUP

     az account set -s $SUBSCRIPTION_ID
     MANAGED_RESOURCE_GROUP=$(az networkcloud kubernetescluster show -n $CLUSTER_NAME -g $RESOURCE_GROUP --output tsv --query managedResourceGroupConfiguration.name)
    
  3. Následující příkaz spustí proxy server connectedk8s, který umožňuje připojit se k serveru rozhraní API Kubernetes pro zadaný cluster Nexus Kubernetes.

    az connectedk8s proxy -n $CLUSTER_NAME  -g $MANAGED_RESOURCE_GROUP &
    
  4. Slouží kubectl k odesílání požadavků do clusteru:

    kubectl get pods -A
    

    Teď by se měla zobrazit odpověď z clusteru obsahujícího seznam všech uzlů.

Poznámka:

Pokud se zobrazí chybová zpráva "Nepodařilo se odeslat přístupový token do klientského proxy serveruNelze se připojit k MSI", možná budete muset provést az login k opětovnému ověření v Azure.

Přístup k uzlům clusteru přes Azure Arc pro Kubernetes

Po připojení ke clusteru přes Arc for Kubernetes se můžete připojit k jednotlivým uzlům Kubernetes pomocí kubectl debug příkazu ke spuštění privilegovaného kontejneru na vašem uzlu.

  1. Vypište uzly v clusteru Nexus Kubernetes:

    $> kubectl get nodes
    NAME                                             STATUS   ROLES           AGE    VERSION
    mynexusk8scluster-0b32128d-agentpool1-md-7h9t4   Ready    <none>          125m   v1.24.9
    mynexusk8scluster-0b32128d-agentpool1-md-c6xbs   Ready    <none>          125m   v1.24.9
    mynexusk8scluster-0b32128d-control-plane-qq5jm   Ready    <none>          124m   v1.24.9
    
  2. Spusťte v uzlu privilegovaný kontejner a připojte se k němu:

    $> kubectl debug node/mynexusk8scluster-0b32128d-agentpool1-md-7h9t4 -it --image=mcr.microsoft.com/cbl-mariner/base/core:2.0
    Creating debugging pod node-debugger-mynexusk8scluster-0b32128d-agentpool1-md-7h9t4-694gg with container debugger on node mynexusk8scluster-0b32128d-agentpool1-md-7h9t4.
    If you don't see a command prompt, try pressing enter.
    root [ / ]#
    

    Tento privilegovaný kontejner poskytuje přístup k uzlu. Spusťte příkazy na uzlu clusteru spuštěním chroot /host na příkazovém řádku.

  3. Až budete hotovi s podem ladění, zadejte příkaz exit k ukončení interaktivní relace. Po ukončení prostředí shellu nezapomeňte odstranit pod:

    kubectl delete pod node-debugger-mynexusk8scluster-0b32128d-agentpool1-md-7h9t4-694gg 
    

Vytvoření interaktivního shellového připojení k uzlu pomocí IP adresy

Připojení k uzlu clusteru z Azure jumpboxu

Další možností bezpečného připojení k uzlu clusteru Azure Operator Nexus Kubernetes je nastavení přímého přístupu k síti CNI clusteru z virtuálního počítače Azure jumpbox. Pomocí tohoto přístupu se můžete přes SSH připojit k uzlům clusteru a také spouštět kubectl příkazy proti clusteru pomocí souboru kubeconfig.

Obraťte se na správce sítě a nastavte přímé připojení z virtuálního počítače Azure jumpbox k síti CNI clusteru.

Připojení k uzlu clusteru z místního jumpboxu

Nastavte přímý přístup k CNI clusteru (Container Network Interface) z místního jumpboxu. Tento přímý přístup umožňuje SSH do uzlů clusteru a umožňuje spouštět kubectl příkazy pomocí kubeconfig souboru.

Obraťte se na správce sítě a nastavte toto přímé připojení k síti CNI clusteru.

IP adresa uzlů clusteru

Než se budete moct připojit k uzlům clusteru, musíte najít IP adresu uzlů. IP adresu uzlů najdete pomocí webu Azure Portal nebo Azure CLI.

Použití Azure CLI

  1. Nastavte proměnné RESOURCE_GROUP, CLUSTER_NAME a SUBSCRIPTION_ID tak, aby odpovídaly vašemu prostředí.

    RESOURCE_GROUP="myResourceGroup"
    CLUSTER_NAME="myNexusK8sCluster"
    SUBSCRIPTION_ID="<Subscription ID>"
    
  2. Spuštěním následujícího příkazu získejte IP adresu uzlů.

    az networkcloud kubernetescluster show --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID -o json | jq '.nodes[] | select(any(.networkAttachments[]; .networkAttachmentName == "defaultcni")) | {name: .name, ipv4Address: (.networkAttachments[] | select(.networkAttachmentName == "defaultcni").ipv4Address)}'
    
  3. Tady je ukázkový výstup příkazu.

    {
      "name": "mynexusk8scluster-0b32128d-agentpool1-md-7h9t4",
      "ipv4Address": "10.5.54.47"
    }
    {
      "name": "mynexusk8scluster-0b32128d-agentpool1-md-c6xbs",
      "ipv4Address": "10.5.54.48"
    }
    {
      "name": "mynexusk8scluster-0b32128d-control-plane-qq5jm",
      "ipv4Address": "10.5.54.46"
    }
    

Použití portálu Azure Portal

Pokud chcete najít IP adresu virtuálního počítače pro SSH, postupujte takto:

  1. Přejděte na azure Portal a přihlaste se pomocí svého uživatelského jména a hesla.
  2. Do vyhledávacího pole zadejte Kubernetes Cluster (Operátor Nexus) a ze seznamu výsledků vyberte službu Cluster Kubernetes.

Snímek obrazovky s procházením služby Nexus Kubernetes

  1. Vyhledejte konkrétní prostředek clusteru Kubernetes Nexus, který potřebujete použít k vyhledávání.

Snímek obrazovky s procházením clusteru Nexus Kubernetes

  1. Jakmile najdete správný prostředek, který odpovídá názvu clusteru, klikněte na něj, abyste přešli na domovskou stránku Kubernetes Clusteru.

Snímek obrazovky domovské stránky clusteru Nexus Kubernetes

  1. Jakmile najdete správný prostředek a jeho název odpovídá názvu clusteru, přejděte v levé nabídce do sekce Uzly clusteru Kubernetes.

Snímek obrazovky s procházením uzlů clusteru Nexus Kubernetes

  1. Vyberte název uzlu Kubernetes, který vás zajímá, a zobrazte jeho podrobnosti.
  2. Na kartě Připojené sítě vyhledejte IP adresu sítě uzlu Vrstva 3, která se používá jako síť CNI.

Snímek obrazovky procházení sítí uzlů clusteru Nexus Kubernetes

Načtení alternativního názvu subjektu (SAN) pro cluster

Spuštěním následujících příkazů načtěte seznam alternativních názvů subjektů (SAN) přijatých certifikátem serveru rozhraní API Kubernetes. Nejprve přejděte k uzlu řídicí roviny buď pomocí Azure Arc pro servery , nebo pomocí interaktivního prostředí s POUŽITÍM IP adresy. Tím získáte přístup k certifikátu používanému serverem rozhraní API. Obsah certifikátu můžete zkontrolovat pomocí následujícího příkazu s oprávněními sudo:

sudo openssl x509 -in /etc/kubernetes/pki/apiserver.crt -text -noout

Každá z sítí SAN je identifikována předponou DNS:. Zvolte pouze sítě SAN, které dodržují zadanou konvenci pojmenování clusterName-resourceGroup<><>, protože je to jedinečné ve srovnání s jinými sítěmi SAN, jako je kubernetes.default.svc.cluster.local.

Další kroky

V následujících článcích se dozvíte více o clusteru Kubernetes operátora Azure Nexus.