Sdílet prostřednictvím


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 ověřujete vůči uzlům 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. Pokud se chcete připojit přímo k uzlům clusteru, musíte použít IP kubectl debug adresu hostitele nebo 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 Nexus Kubernetes jsou ve výchozím nastavení připojené servery 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ů vyhrazenou k ukládání prostředků clusteru v rámci této skupiny, vytvoří se prostředek clusteru připojeného ke službě Arc.

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

  1. RESOURCE_GROUP Nastavte CLUSTER_NAMEa SUBSCRIPTION_ID proměnné.

    CLUSTER_NAME="myNexusK8sCluster"
    RESOURCE_GROUP="myResourceGroup"
    SUBSCRIPTION_ID=<set the correct subscription_id>
    
  2. Dotazování spravované skupiny prostředků pomocí az a uložení 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 serveru se nepovedlo připojit k MSI", možná budete muset provést az login opětovné 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 exit příkaz, kterým ukončíte interaktivní relaci prostředí. Po ukončení prostředí nezapomeňte pod odstranit:

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

Vytvoření interaktivního připojení prostředí k uzlu pomocí IP adresy

Připojení do 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 můžete SSH do uzlů clusteru spouštět kubectl příkazy také v clusteru kubeconfig pomocí souboru.

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 tak, že se shodí s názvem clusteru, vyberte prostředek, který přejde na domovskou stránku Cluster Kubernetes.

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

  1. Jakmile najdete správný prostředek tak, že se jeho název shoduje s názvem clusteru, přejděte v levé nabídce do části 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

Další kroky

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