Dela via


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.

  • Installera den senaste versionen av nödvändiga Azure CLI-tillägg.

  • Den här artikeln kräver version 2.49.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 myResourceGroupplatsen 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-portalen.

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 Anslut 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.

  1. Ange CLUSTER_NAMEoch RESOURCE_GROUP SUBSCRIPTION_ID variabler.

    CLUSTER_NAME="myNexusK8sCluster"
    RESOURCE_GROUP="myResourceGroup"
    SUBSCRIPTION_ID=<set the correct subscription_id>
    
  2. Fråga hanterad resursgrupp med az och lagra i 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. 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 &
    
  4. 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.