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.
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)
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'
Ukázkový výstup:
"mynexusk8scluster-0b32128d-agentpool1-md-7h9t4" "mynexusk8scluster-0b32128d-agentpool1-md-c6xbs" "mynexusk8scluster-0b32128d-control-plane-qq5jm"
Nastavte název uzlu clusteru na proměnnou VM_NAME.
VM_NAME="mynexusk8scluster-0b32128d-agentpool1-md-7h9t4"
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í kubeconfig
clusteru . 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.
RESOURCE_GROUP
NastavteCLUSTER_NAME
aSUBSCRIPTION_ID
proměnné.CLUSTER_NAME="myNexusK8sCluster" RESOURCE_GROUP="myResourceGroup" SUBSCRIPTION_ID=<set the correct subscription_id>
Dotazování spravované skupiny prostředků pomocí
az
a uložení doMANAGED_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)
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 &
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.
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
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.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í 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 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
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>"
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)}'
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:
- Přejděte na azure Portal a přihlaste se pomocí svého uživatelského jména a hesla.
- Do vyhledávacího pole zadejte Kubernetes Cluster (Operátor Nexus) a ze seznamu výsledků vyberte službu Cluster Kubernetes.
- Vyhledejte konkrétní prostředek clusteru Kubernetes Nexus, který potřebujete použít k vyhledávání.
- 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.
- 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.
- Vyberte název uzlu Kubernetes, který vás zajímá, a zobrazte jeho podrobnosti.
- Na kartě Připojené sítě vyhledejte IP adresu sítě uzlu Vrstva 3, která se používá jako síť CNI.
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.