Dela via


Distribuera ett Kubernetes-kluster till ett anpassat virtuellt nätverk på Azure Stack Hub

Du kan distribuera ett Kubernetes-kluster med hjälp av AKS-motorn (Azure Kubernetes Service) i ett anpassat virtuellt nätverk. Den här artikeln handlar om att hitta den information du behöver i ditt virtuella nätverk. Du hittar steg för att beräkna de IP-adresser som används av klustret, ange dalen i API-modellen och ange routningstabellen och nätverkssäkerhetsgruppen.

Kubernetes-klustret i Azure Stack Hub med AKS-motorn använder plugin-programmet kubenet network. AKS-motorn på Azure Stack Hub stöder även Azure CNI-nätverksinsticksprogrammet.

Begränsningar när du skapar ett anpassat virtuellt nätverk

  • Det anpassade virtuella nätverket måste finnas i samma prenumeration som alla andra komponenter i Kubernetes-klustret.
  • Kontrollplanets nodpool och agentnodpoolen måste finnas i samma virtuella nätverk. Du kan distribuera noderna till olika undernät i samma virtuella nätverk.
  • Kubernetes-klustrets undernät måste använda ett IP-intervall inom utrymmet för det anpassade virtuella nätverkets IP-intervall. Mer information finns i Hämta IP-adressblocket.
  • Tänk på att den rekommenderade storleken på nodundernäten beror på vilken typ av nätverksinsticksprogram som används. Som en allmän riktlinje kräver Azure CNI ett större antal IP-adresser för undernätet som stöder agentnodpoolerna än kubenet. Se exemplen kubenet och Azure CNI nedan.
  • Adressutrymmet 169.254.0.0/16 kanske inte används för anpassade virtuella nätverk för Kubernetes-kluster.

Skapa ett anpassat virtuellt nätverk

Du måste ha ett anpassat virtuellt nätverk i din Azure Stack Hub-instans. Mer information finns i Snabbstart: Skapa ett virtuellt nätverk med hjälp av Azure Portal.

Skapa ett nytt undernät i det virtuella nätverket. Du måste hämta undernätets resurs-ID och IP-adressintervall. Du kommer att använda resurs-ID:t och intervallet i DIN API-modell när du distribuerar klustret.

  1. Öppna Azure Stack Hub-användarportalen i din Azure Stack Hub-instans.

  2. Välj Alla resurser.

  3. Ange namnet på ditt virtuella nätverk i sökrutan.

  4. Välj Undernät>+ undernät för att lägga till ett undernät.

  5. Lägg till ett namn och ett adressintervall med CIDR-notation. Välj OK.

  6. Välj Egenskaper på bladet Virtuella nätverk . Kopiera resurs-ID:t och lägg sedan till /subnets/<nameofyoursubnect>. Du använder det här värdet som värde för vnetSubnetId nyckeln i API-modellen för klustret. Resurs-ID:t för undernätet använder följande format:
    /subscriptions/SUB_ID/resourceGroups/RG_NAME/providers/Microsoft.Network/virtualNetworks/VNET_NAME/subnets/SUBNET_NAME

    resurs-ID för virtuellt nätverk

  7. Välj Undernät på bladet Virtuella nätverk . Välj till exempel control-plane-snundernätsnamnet .

    Associera inte undernätet med en nätverkssäkerhetsgrupp (NSG).

    CIDR-block för virtuellt nätverk

  8. Anteckna adressintervallet (CIDR Block) för varje undernät på bladet undernät.

Överväganden för att välja ett adressutrymme

När du skapar ett anpassat virtuellt nätverk anger du IP-adressutrymmet för nätverket och ett IP-adressintervall för varje undernät. Tänk på följande när du väljer de adressutrymmen och intervall som ska användas i Kubernetes-klustret:

  • Överlappande adressutrymmen kan resultera i ip-adresskonflikter eller kommunikationsfel. Om du vill minska risken för överlappande IP-adresser väljer du ett unikt adressutrymme för det nya virtuella nätverket.
  • Adressutrymmen i intervallen 10/8, 172.16/12och 192.168/16 används ofta för privata nätverk, och de kan användas av din befintliga datacenterinfrastruktur. Om dina Kubernetes-program använder resurser i ditt datacenter minskar du risken för sammandrabbningar genom att välja ett adressutrymme för ditt anpassade virtuella nätverk som skiljer sig från datacentrets adressutrymme.
  • Vi rekommenderar att du använder ett dedikerat undernät för ditt Kubernetes-kluster.
  • Om du använder flera befintliga virtuella nätverk bör du överväga att använda olika adressutrymmen i varje nätverk om du tänker använda peering för virtuella nätverk. Överlappande adressutrymmen kan försämra din möjlighet att aktivera peering.

Hämta IP-adressblocken

AKS-motorn stöder distribution i ett befintligt virtuellt nätverk. När det distribueras i ett befintligt virtuellt nätverk använder klustret block med efterföljande adresser för agentnoder, kontrollplansnoder, klustertjänster och containrar (poddar). Varje adressblock kan översättas till ett undernät i det virtuella nätverket. Alla adressblock i klusterdistributionen måste vara en del av det övergripande adressutrymmet för det virtuella nätverket. Om du väljer adressblock utanför det virtuella nätverkets adressutrymme kan det leda till anslutningsproblem.

Minst tre adressblock krävs när du konfigurerar ett Kubernetes-kluster:

  • Adressblock för noder: Det här är adressblocket som används för att tilldela adresser till klusternoderna. Detta kan vara ett enda adressblock för alla klusternoder eller vara separata block (undernät) för kontrollplan och agentpooler. Ta hänsyn till antalet noder i klustret när du väljer adressintervallet för det här blocket. För Azure CNI-noder och -containrar får de sina adresser från samma adressblock och tar därmed hänsyn till antalet containrar som du vill distribuera till klustret när du väljer adressintervallet när du använder Azure CNI.
  • Adressblock för tjänster: Det här är adressblocket från vilket tjänster som distribueras till Kubernetes-klustret hämtar sin klusteradress från. Ta hänsyn till det maximala antalet tjänster som du tänker köra i klustret när du väljer adressintervallet för det här blocket.
  • Klusteradressblock: Det här är adressblocket från vilket poddar får sin klusteradress. Ta hänsyn till det maximala antalet poddar som du tänker köra i klustret när du väljer adressintervallet för det här blocket. Som tidigare nämnts är kluster- och nodadressblocken samma för Azure CNI.

Förutom adressblocken måste du ange ytterligare två värden för kontrollplansnoder. Du måste veta hur många IP-adresser du behöver reservera för klustret och den första statiska IP-adressen i undernätets IP-utrymme i följd. AKS-motorn kräver ett intervall på upp till 16 oanvända IP-adresser när du använder flera kontrollplansnoder. Klustret använder en IP-adress för varje kontrollplan upp till fem kontrollplansnoder. AKS-motorn kräver också nästa 10 IP-adress efter den sista kontrollplansnoden för reservation av ip-adress för rummet. Slutligen används en annan IP-adress av lastbalanseraren efter kontrollplanets noder och utrymmesreservation för totalt 16. När du placerar ip-adressblocket kräver undernätet följande allokeringar av befintliga IP-adresser:

  • De första fyra IP-adresserna och den sista IP-adressen är reserverade och kan inte användas i något Azure-undernät.
  • En buffert på 16 IP-adresser ska lämnas öppen.
  • Värdet för klustrets första IP-adress bör vara mot slutet av adressutrymmet för att undvika IP-konflikter. Om möjligt tilldelar du firstConsecutiveStaticIP egenskapen till en IP-adress nära slutet av det tillgängliga IP-adressutrymmet i undernätet.

Till exempel för ett kluster med tre kontrollplansnoder. Om du använder ett undernät med 256 adresser, till exempel 10.100.0.0/24, måste du ange din första statiska IP-adress i följd före 239. I följande tabell visas adresserna och övervägandena:

Intervall för /24-undernät Tal Anteckning
172.100.0.0 - 172.100.0.3 4 Reserverat i Azure-undernät.
172.100.0.224-172.100.0.238 14 ANTAL IP-adresser för ett AKS-motordefinierat kluster.

3 IP-adresser för 3 kontrollplansnoder
10 IP-adresser för utrymme
1 IP-adress för lastbalanseraren
172.100.0.238 - 172.100.0.254 16 16 IP-adressbuffert.
172.100.0.255 1 Reserverat i Azure-undernät.

I det här exemplet firstConsecutiveStaticIP är 172.100.0.224egenskapen .

För större undernät, till exempel /16 med fler än 60 000 adresser, kanske det inte är praktiskt att ange dina statiska IP-tilldelningar till slutet av nätverksutrymmet. Ställ in klustrets statiska IP-adressintervall från de första 24 adresserna i DITT IP-utrymme så att klustret kan vara motståndskraftigt när du gör anspråk på adresser.

Exempel på Kubenet-adressblock

I följande exempel kan du se hur dessa olika överväganden fyller i adressutrymmet i det virtuella nätverket för ett kluster med hjälp av kubenet-nätverkets plugin-program med dedikerade undernät för kontrollplansnoden och agentnodpooler med tre noder per pool.

VNET-adressutrymme: 10.100.0.0/16.

Adressblock (undernät) CIDR IP-intervall IP-antal (tillgängligt)
Block för kontrollplansnoder 10.100.0.0/24 10.100.0.0 - 10.100.0.255 255 – 4 reserverade = 251
Block för agentnoder 10.100.1.0/24 10.100.1.0 - 10.100.1.255 255 – 4 reserverade = 251
Tjänstblock 10.100.16.0/20 10.100.16.0 - 10.100.31.255 4 096 – 5 reserverade = 4 091
Klusterblock 10.100.128.0/17 10.100.128.0 - 10.100.255.255 32 768 – 5 reserverade = 32 763

I det här exemplet firstConsecutiveStaticIP skulle egenskapen vara 10.100.0.239.

Exempel på Azure CNI-adressblock

I följande exempel kan du se hur dessa olika överväganden fyller i adressutrymmet i det virtuella nätverket för ett kluster med hjälp av Azure CNI-nätverksplugin-programmet med dedikerade undernät för kontrollplanet och agentnodpooler med tre noder per pool.

VNET-adressutrymme: 172.24.0.0/16.

Anteckning

Om det offentliga IP-intervallet ligger inom CIDR10.0.0.0/8 i din miljö använder du kubenet som nätverksplugin.

Adressblock (undernät) CIDR IP-intervall IP-antal (tillgängligt)
Block för kontrollplansnoder 172.24.0.0/24 172.24.0.0 - 172.24.0.255 255 – 4 reserverade = 251
Agentnoder & klusterblock 172.24.128.0/17 172.24.128.0 - 172.24.255.255 32 768 – 5 reserverade = 32 763
Tjänstblock 172.24.16.0/20 172.24.16.0 - 172.24.31.255 4 096 – 5 reserverade = 4 091

I det här exemplet firstConsecutiveStaticIP skulle egenskapen vara 172.24.0.239.

Uppdatera API-modellen

Uppdatera DEN API-modell som används för att distribuera klustret från AKS-motorn till ditt anpassade virtuella nätverk.

I masterProfile anger du följande värden:

Fält Exempel Description
vnetSubnetId /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MDBN-K8S/providers/Microsoft.Network/virtualNetworks/MDBN-K8S/subnets/control-plane-sn Ange sökvägs-ID för Azure Resource Manager undernätet. Det här värdet mappar till kontrollplanets nodadressblock ovan.
firstConsecutiveStaticIP 10.100.0.239 Tilldela till konfigurationsegenskapen firstConsecutiveStaticIP en IP-adress som ligger nära slutet av det tillgängliga IP-adressutrymmet i önskat undernät. firstConsecutiveStaticIP gäller endast för kontrollplanets nodpool.

Ange följande värden i agentPoolProfiles :

Fält Exempel Description
vnetSubnetId /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MDBN-K8S/providers/Microsoft.Network/virtualNetworks/MDBN-K8S/subnets/agents-sn Ange sökvägs-ID för Azure Resource Manager undernätet. Det här värdet mappar till agentnodernas adressblock ovan.

Leta reda på kubernetesConfig i orchestratorProfile och ange följande värde:

Fält Exempel Description
clusterSubnet 10.100.128.0/17 IP-undernätet som används för att allokera IP-adresser för poddnätverksgränssnitt. Det här värdet mappar till klusteradressblocket ovan. Undernätet måste finnas i VNET-adressutrymmet. När Azure CNI är aktiverat är standardvärdet 10.240.0.0/12. Utan Azure CNI är standardvärdet 10.244.0.0/16. Använd /16 i stället /24-undernät. Om du använder /24 tilldelas det här undernätet endast till en nod. Andra noder tilldelas inte POD-nätverk eftersom IP-utrymmet tar slut, så de är inte redo i klustret.
serviceCidr 10.100.16.0/20 IP-undernätet som används för att allokera IP-adresser för tjänster som distribueras i klustret. Det här värdet mappar till klustertjänstblocket ovan.
dnsServiceIP 10.100.16.10 IP-adressen som ska tilldelas till klustrets DNS-tjänst. Adressen måste komma från serviceCidr-undernätet. Det här värdet måste anges när du anger serviceCidr. Standardvärdet är .10-adressen för serviceCidr-undernätet.

Om du till exempel använder kubenet:
Med ett nätverksadressutrymme 10.100.0.0/16 där undernätet för control-plane-sn är 10.100.0.0/24 och agents-sn är 10.100.1.0/24

"masterProfile": {
  ...
  "vnetSubnetId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MDBN-K8S/providers/Microsoft.Network/virtualNetworks/MDBN-K8S/subnets/control-plane-sn",
  "firstConsecutiveStaticIP": "10.100.0.239",
  ...
},
...
"agentPoolProfiles": [
  {
    ...
    "vnetSubnetId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MDBN-K8S/providers/Microsoft.Network/virtualNetworks/MDBN-K8S/subnets/agents-sn",
    ...
  },
    ...
"kubernetesConfig": [
  {
    ...
    "clusterSubnet": "10.100.128.0/17",
    "serviceCidr": "10.100.16.0/20",
    "dnsServiceIP" : "10.100.16.10",

    ...
  },

Om du till exempel använder Azure CNI:
Med ett nätverksadressutrymme 172.24.0.0/16 där undernätet för control-plane-sn är 172.24.0.0/24 och k8s-sn är 172.24.128.0/17

"masterProfile": {
  ...
  "vnetSubnetId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MDBN-K8S/providers/Microsoft.Network/virtualNetworks/MDBN-K8S/subnets/control-plane-sn",
  "firstConsecutiveStaticIP": "172.24.0.239",
  ...
},
...
"agentPoolProfiles": [
  {
    ...
    "vnetSubnetId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MDBN-K8S/providers/Microsoft.Network/virtualNetworks/MDBN-K8S/subnets/k8s-sn",
    ...
  },
    ...
"kubernetesConfig": [
  {
    ...
    "clusterSubnet": "172.24.128.0/17",
    "serviceCidr": "172.24.16.0/20",
    "dnsServiceIP" : "172.24.16.10",
    ...
  },

Distribuera klustret

När du har lagt till värdena i API-modellen kan du distribuera klustret från klientdatorn med hjälp av deploy kommandot i AKS-motorn. Anvisningar finns i Distribuera ett Kubernetes-kluster.

Ange routningstabellen

Om du använder kubenet, till exempel networkPlugin: kubenet i konfigurationsobjektet kubernetesConfig för API-modellen. När du har distribuerat klustret återgår du till det virtuella nätverket i Azure Stack-användarportalen. Ange både routningstabellen och nätverkssäkerhetsgruppen (NSG) på undernätsbladet. När du har distribuerat ett kluster till ditt anpassade virtuella nätverk hämtar du ID:t för bladet Routningstabell från nätverket i klustrets resursgrupp.

  1. Öppna Azure Stack Hub-användarportalen i din Azure Stack Hub-instans.

  2. Välj Alla resurser.

  3. Ange namnet på ditt virtuella nätverk i sökrutan.

  4. Välj Undernät och välj sedan namnet på det undernät som innehåller klustret.

    routningstabell och nätverkssäkerhetsgrupp

  5. Välj Routningstabell och välj sedan routningstabellen för klustret.

  6. Kontrollera att detta görs för varje undernät som anges i API-modellen, inklusive masterProfile undernätet.

Anteckning

Det anpassade virtuella nätverket för Kubernetes Windows-kluster har ett känt problem.

Nästa steg