Snabbstart: Skapa ett Azure Nexus Kubernetes-kluster med hjälp av Azure CLI
- Distribuera ett Azure Nexus Kubernetes-kluster med Azure CLI.
Innan du börjar
Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt Azure-konto innan du börjar.
Använd Bash-miljön i Azure Cloud Shell. Mer information finns i Snabbstart för Bash i Azure Cloud Shell.
Om du föredrar att köra CLI-referenskommandon lokalt installerar du Azure CLI. Om du kör i Windows eller macOS kan du köra Azure CLI i en Docker-container. Mer information finns i Så här kör du Azure CLI i en Docker-container.
Om du använder en lokal installation loggar du in på Azure CLI med hjälp av kommandot az login. Slutför autentiseringsprocessen genom att följa stegen som visas i terminalen. Andra inloggningsalternativ finns i Logga in med Azure CLI.
När du uppmanas att installera Azure CLI-tillägget vid första användningen. Mer information om tillägg finns i Använda tillägg med Azure CLI.
Kör az version om du vill hitta versionen och de beroende bibliotek som är installerade. Om du vill uppgradera till den senaste versionen kör du az upgrade.
Installera den senaste versionen av nödvändiga Azure CLI-tillägg.
Den här artikeln kräver version 2.61.0 eller senare av Azure CLI. Om du använder Azure Cloud Shell är den senaste versionen redan installerad.
Om du har flera Azure-prenumerationer väljer du lämpligt prenumerations-ID där resurserna ska faktureras med kommandot
az account
.Se SKU-tabellen för virtuella datorer i referensavsnittet för listan över vm-SKU:er som stöds.
Se kubernetes-versioner som stöds för listan över Kubernetes-versioner som stöds.
Skapa en resursgrupp med kommandot
az group create
. En Azure-resursgrupp är en logisk grupp där Azure-resurser distribueras och hanteras. När du skapar en resursgrupp uppmanas du att ange en plats. Den här platsen är lagringsplatsen för dina resursgruppsmetadata och där dina resurser körs i Azure om du inte anger en annan region när du skapar resurser. I följande exempel skapas en resursgrupp med namnet myResourceGroup i regionen eastus.az group create --name myResourceGroup --location eastus
Följande utdataexempel liknar skapandet av resursgruppen:
{ "id": "/subscriptions/<guid>/resourceGroups/myResourceGroup", "location": "eastus", "managedBy": null, "name": "myResourceGroup", "properties": { "provisioningState": "Succeeded" }, "tags": null }
Om du vill distribuera en Bicep-fil eller en ARM-mall måste du ha skrivåtkomst till de resurser som du distribuerar och åtkomst till alla åtgärder i resurstypen Microsoft.Resources/deployments. Om du till exempel vill distribuera ett kluster behöver du behörigheterna Microsoft.NetworkCloud/kubernetesclusters/write och Microsoft.Resources/deployments/* . Det finns en lista med roller och behörigheter i Inbyggda roller i Azure.
Du behöver resurs-ID:t för
custom location
ditt Azure Operator Nexus-kluster.Du måste skapa olika nätverk enligt dina specifika arbetsbelastningskrav och det är viktigt att ha lämpliga IP-adresser tillgängliga för dina arbetsbelastningar. För att säkerställa en smidig implementering rekommenderar vi att du kontaktar relevanta supportteam för att få hjälp.
Den här snabbstarten förutsätter grundläggande kunskaper om Kubernetes-begrepp. Mer information finns i Viktiga koncept för Azure Kubernetes Service (AKS).
Skapa ett Azure Nexus Kubernetes-kluster
I följande exempel skapas ett kluster med namnet myNexusK8sCluster i resursgruppen myResourceGroup på platsen eastus.
Innan du kör kommandona måste du ange flera variabler för att definiera konfigurationen för klustret. Här är de variabler som du behöver ange, tillsammans med några standardvärden som du kan använda för vissa variabler:
Olika | beskrivning |
---|---|
PLATS | Den Azure-region där du vill skapa klustret. |
RESOURCE_GROUP | Namnet på den Azure-resursgrupp där du vill skapa klustret. |
SUBSCRIPTION_ID | ID för din Azure-prenumeration. |
CUSTOM_LOCATION | Det här argumentet anger en anpassad plats för Nexus-instansen. |
CSN_ARM_ID | CSN-ID är den unika identifieraren för det molntjänstnätverk som du vill använda. |
CNI_ARM_ID | CNI-ID är den unika identifieraren för nätverksgränssnittet som ska användas av containerkörningen. |
AAD_ADMIN_GROUP_OBJECT_ID | Objekt-ID för Microsoft Entra-gruppen som ska ha administratörsbehörighet i klustret. |
CLUSTER_NAME | Namnet som du vill ge till Nexus Kubernetes-klustret. |
K8S_VERSION | Den version av Kubernetes som du vill använda. |
ADMIN_USERNAME | Användarnamnet för klusteradministratören. |
SSH_PUBLIC_KEY | Den offentliga SSH-nyckeln som används för säker kommunikation med klustret. |
CONTROL_PLANE_COUNT | Antalet kontrollplansnoder för klustret. |
CONTROL_PLANE_VM_SIZE | Storleken på den virtuella datorn för kontrollplansnoderna. |
INITIAL_AGENT_POOL_NAME | Namnet på den första agentpoolen. |
INITIAL_AGENT_POOL_COUNT | Antalet noder i den första agentpoolen. |
INITIAL_AGENT_POOL_VM_SIZE | Storleken på den virtuella datorn för den första agentpoolen. |
POD_CIDR | Nätverksintervallet för Kubernetes-poddarna i klustret, i CIDR-notation. |
SERVICE_CIDR | Nätverksintervallet för Kubernetes-tjänsterna i klustret, i CIDR-notation. |
DNS_SERVICE_IP | IP-adressen för Kubernetes DNS-tjänsten. |
När du har definierat dessa variabler kan du köra Azure CLI-kommandot för att skapa klustret. --debug
Lägg till flaggan i slutet för att ge mer detaljerade utdata i felsökningssyfte.
Om du vill definiera dessa variabler använder du följande uppsättningskommandon och ersätter exempelvärdena med önskade värden. Du kan också använda standardvärdena för några av variablerna, som du ser i följande exempel:
RESOURCE_GROUP="myResourceGroup"
SUBSCRIPTION_ID="<Azure subscription ID>"
LOCATION="$(az group show --name $RESOURCE_GROUP --query location --subscription $SUBSCRIPTION_ID -o tsv)"
CUSTOM_LOCATION="/subscriptions/<subscription_id>/resourceGroups/<managed_resource_group>/providers/microsoft.extendedlocation/customlocations/<custom-location-name>"
CSN_ARM_ID="/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.NetworkCloud/cloudServicesNetworks/<csn-name>"
CNI_ARM_ID="/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.NetworkCloud/l3Networks/<l3Network-name>"
AAD_ADMIN_GROUP_OBJECT_ID="00000000-0000-0000-0000-000000000000"
CLUSTER_NAME="myNexusK8sCluster"
K8S_VERSION="v1.24.9"
ADMIN_USERNAME="azureuser"
SSH_PUBLIC_KEY="$(cat ~/.ssh/id_rsa.pub)"
CONTROL_PLANE_SSH_PUBLIC_KEY="$(cat ~/.ssh/id_rsa.pub)"
AGENT_POOL_SSH_PUBLIC_KEY="$(cat ~/.ssh/id_rsa.pub)"
CONTROL_PLANE_COUNT="1"
CONTROL_PLANE_VM_SIZE="NC_G6_28_v1"
INITIAL_AGENT_POOL_NAME="${CLUSTER_NAME}-nodepool-1"
INITIAL_AGENT_POOL_COUNT="1"
INITIAL_AGENT_POOL_VM_SIZE="NC_P10_56_v1"
POD_CIDR="10.244.0.0/16"
SERVICE_CIDR="10.96.0.0/16"
DNS_SERVICE_IP="10.96.0.10"
Viktigt!
Det är viktigt att du ersätter platshållarna för CUSTOM_LOCATION, CSN_ARM_ID, CNI_ARM_ID och AAD_ADMIN_GROUP_OBJECT_ID med dina faktiska värden innan du kör dessa kommandon.
När du har definierat dessa variabler kan du skapa Kubernetes-klustret genom att köra följande Azure CLI-kommando:
az networkcloud kubernetescluster create \
--name "${CLUSTER_NAME}" \
--resource-group "${RESOURCE_GROUP}" \
--subscription "${SUBSCRIPTION_ID}" \
--extended-location name="${CUSTOM_LOCATION}" type=CustomLocation \
--location "${LOCATION}" \
--kubernetes-version "${K8S_VERSION}" \
--aad-configuration admin-group-object-ids="[${AAD_ADMIN_GROUP_OBJECT_ID}]" \
--admin-username "${ADMIN_USERNAME}" \
--ssh-key-values "${SSH_PUBLIC_KEY}" \
--control-plane-node-configuration \
count="${CONTROL_PLANE_COUNT}" \
vm-sku-name="${CONTROL_PLANE_VM_SIZE}" \
ssh-key-values='["${CONTROL_PLANE_SSH_PUBLIC_KEY}"]' \
--initial-agent-pool-configurations "[{count:${INITIAL_AGENT_POOL_COUNT},mode:System,name:${INITIAL_AGENT_POOL_NAME},vm-sku-name:${INITIAL_AGENT_POOL_VM_SIZE},ssh-key-values:['${AGENT_POOL_SSH_PUBLIC_KEY}']}]" \
--network-configuration \
cloud-services-network-id="${CSN_ARM_ID}" \
cni-network-id="${CNI_ARM_ID}" \
pod-cidrs="[${POD_CIDR}]" \
service-cidrs="[${SERVICE_CIDR}]" \
dns-service-ip="${DNS_SERVICE_IP}"
Om det inte finns tillräckligt med kapacitet för att distribuera begärda klusternoder visas ett felmeddelande. Det här meddelandet innehåller dock ingen information om den tillgängliga kapaciteten. Det står att klusterskapandet inte kan fortsätta på grund av otillräcklig kapacitet.
Kommentar
Kapacitetsberäkningen tar hänsyn till hela plattformsklustret i stället för att begränsas till enskilda rack. Om en agentpool skapas i en zon (där ett rack är lika med en zon) med otillräcklig kapacitet, men en annan zon har tillräckligt med kapacitet, fortsätter skapandet av klustret, men tar så småningom timeout. Den här metoden för kapacitetskontroll är bara meningsfull om en specifik zon inte anges när klustret eller agentpoolen skapas.
Efter några minuter slutförs kommandot och returnerar information om klustret. Mer avancerade alternativ finns i Snabbstart: Distribuera ett Azure Nexus Kubernetes-kluster med Bicep.
Granska distribuerade resurser
När distributionen är klar kan du visa resurserna med hjälp av CLI eller Azure Portal.
Om du vill visa information om myNexusK8sCluster
klustret i myResourceGroup
resursgruppen kör du följande Azure CLI-kommando:
az networkcloud kubernetescluster show \
--name myNexusK8sCluster \
--resource-group myResourceGroup
Om du vill hämta en lista över agentpoolnamn som är associerade med myNexusK8sCluster
klustret i myResourceGroup
resursgruppen kan du dessutom använda följande Azure CLI-kommando.
az networkcloud kubernetescluster agentpool list \
--kubernetes-cluster-name myNexusK8sCluster \
--resource-group myResourceGroup \
--output table
Anslut till klustret
Nu när Nexus Kubernetes-klustret har skapats och anslutits till Azure Arc kan du enkelt ansluta till det med hjälp av funktionen för klusteranslutning. Med Klusteranslutning kan du på ett säkert sätt komma åt och hantera klustret var du än befinner dig, vilket gör det praktiskt för interaktiv utveckling, felsökning och klusteradministration.
Mer detaljerad information om tillgängliga alternativ finns i Ansluta till ett Azure Operator Nexus Kubernetes-kluster.
Kommentar
När du skapar ett Nexus Kubernetes-kluster skapar Nexus automatiskt en hanterad resursgrupp som är dedikerad till att lagra klusterresurserna. Inom den här gruppen upprättas den Arc-anslutna klusterresursen.
För att få åtkomst till klustret måste du konfigurera klustret att ansluta kubeconfig
. När du har loggat in på Azure CLI med relevant Microsoft Entra-entitet kan du få de kubeconfig
nödvändiga för att kommunicera med klustret var som helst, även utanför brandväggen som omger det.
Ange
CLUSTER_NAME
ochRESOURCE_GROUP
SUBSCRIPTION_ID
variabler.CLUSTER_NAME="myNexusK8sCluster" RESOURCE_GROUP="myResourceGroup" SUBSCRIPTION_ID=<set the correct subscription_id>
Fråga hanterad resursgrupp med
az
och lagra iMANAGED_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)
Följande kommando startar en connectedk8s-proxy som gör att du kan ansluta till Kubernetes API-servern för det angivna Nexus Kubernetes-klustret.
az connectedk8s proxy -n $CLUSTER_NAME -g $MANAGED_RESOURCE_GROUP &
Använd
kubectl
för att skicka begäranden till klustret:kubectl get pods -A
Nu bör du se ett svar från klustret som innehåller listan över alla noder.
Kommentar
Om du ser felmeddelandet "Det gick inte att publicera åtkomsttoken till klientproxyFailed för att ansluta till MSI" kan du behöva utföra en az login
för att autentisera igen med Azure.
Lägga till en agentpool
Klustret som skapades i föregående steg har en enda nodpool. Nu ska vi lägga till en andra agentpool med kommandot az networkcloud kubernetescluster agentpool create
. I följande exempel skapas en agentpool med namnet myNexusK8sCluster-nodepool-2
:
Du kan också använda standardvärdena för några av variablerna, som du ser i följande exempel:
RESOURCE_GROUP="myResourceGroup"
CUSTOM_LOCATION="/subscriptions/<subscription_id>/resourceGroups/<managed_resource_group>/providers/microsoft.extendedlocation/customlocations/<custom-location-name>"
CLUSTER_NAME="myNexusK8sCluster"
AGENT_POOL_NAME="${CLUSTER_NAME}-nodepool-2"
AGENT_POOL_VM_SIZE="NC_P10_56_v1"
AGENT_POOL_COUNT="1"
AGENT_POOL_MODE="User"
När du har definierat dessa variabler kan du lägga till en agentpool genom att köra följande Azure CLI-kommando:
az networkcloud kubernetescluster agentpool create \
--name "${AGENT_POOL_NAME}" \
--kubernetes-cluster-name "${CLUSTER_NAME}" \
--resource-group "${RESOURCE_GROUP}" \
--subscription "${SUBSCRIPTION_ID}" \
--extended-location name="${CUSTOM_LOCATION}" type=CustomLocation \
--count "${AGENT_POOL_COUNT}" \
--mode "${AGENT_POOL_MODE}" \
--vm-sku-name "${AGENT_POOL_VM_SIZE}"
Efter några minuter slutförs kommandot och returnerar information om agentpoolen. Mer avancerade alternativ finns i Snabbstart: Distribuera ett Azure Nexus Kubernetes-kluster med Bicep.
Kommentar
Du kan lägga till flera agentpooler när själva klustret skapas med hjälp av de första agentpoolkonfigurationerna. Men om du vill lägga till agentpooler efter det första skapandet kan du använda kommandot ovan för att skapa ytterligare agentpooler för ditt Nexus Kubernetes-kluster.
Följande utdataexempel liknar skapande av agentpoolen.
$ az networkcloud kubernetescluster agentpool list --kubernetes-cluster-name myNexusK8sCluster --resource-group myResourceGroup --output table
This command is experimental and under development. Reference and support levels: https://aka.ms/CLI_refstatus
Count Location Mode Name ProvisioningState ResourceGroup VmSkuName
------- ---------- ------ ---------------------------- ------------------- --------------- -----------
1 eastus System myNexusK8sCluster-nodepool-1 Succeeded myResourceGroup NC_P10_56_v1
1 eastus User myNexusK8sCluster-nodepool-2 Succeeded myResourceGroup NC_P10_56_v1
Rensa resurser
När den inte längre behövs tar du bort resursgruppen. Resursgruppen och alla resurser i resursgruppen tas bort.
Använd kommandot az group delete för att ta bort resursgruppen, Kubernetes-klustret och alla relaterade resurser utom nätverksresurserna för operatorn Nexus.
az group delete --name myResourceGroup --yes --no-wait
Nästa steg
Nu kan du distribuera CNFs antingen direkt via klusteranslutning eller via Azure Operator Service Manager.