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.
- En diskussion om kubenet-plugin-programmet för nätverk i Azure finns i Använda kubenet-nätverk med dina egna IP-adressintervall i Azure Kubernetes Service (AKS).
- En diskussion om plugin-programmet för Azure CNI-nätverk i Azure finns i Konfigurera Azure CNI-nätverk i Azure Kubernetes Service (AKS).
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.
Öppna Azure Stack Hub-användarportalen i din Azure Stack Hub-instans.
Välj Alla resurser.
Ange namnet på ditt virtuella nätverk i sökrutan.
Välj Undernät>+ undernät för att lägga till ett undernät.
Lägg till ett namn och ett adressintervall med CIDR-notation. Välj OK.
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örvnetSubnetId
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
Välj Undernät på bladet Virtuella nätverk . Välj till exempel
control-plane-sn
undernätsnamnet .Associera inte undernätet med en nätverkssäkerhetsgrupp (NSG).
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/12
och192.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.224
egenskapen .
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.
Öppna Azure Stack Hub-användarportalen i din Azure Stack Hub-instans.
Välj Alla resurser.
Ange namnet på ditt virtuella nätverk i sökrutan.
Välj Undernät och välj sedan namnet på det undernät som innehåller klustret.
Välj Routningstabell och välj sedan routningstabellen för klustret.
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
- Läs mer om AKS-motorn på Azure Stack Hub
- Läs mer om Översikt över Azure Monitor för containrar