Példányszintű nyilvános IP-címek használata az Azure Kubernetes Service-ben (AKS)

Az AKS-csomópontok nem igényelnek saját nyilvános IP-címeket a kommunikációhoz. Előfordulhat azonban, hogy egy csomópontkészlet csomópontjai saját dedikált nyilvános IP-címeket kapnak. Gyakori forgatókönyv a játékterhelések esetében, ahol a konzolnak közvetlen kapcsolatot kell létesítenie egy felhőbeli virtuális géppel a ugrások minimalizálása érdekében. Ez a forgatókönyv a Csomópont nyilvános IP-címével érhető el az AKS-en.

Először hozzon létre egy új erőforráscsoportot.

az group create --name myResourceGroup2 --location eastus

Hozzon létre egy új AKS-fürtöt, és csatoljon egy nyilvános IP-címet a csomópontokhoz. A csomópontkészlet minden csomópontja egyedi nyilvános IP-címet kap. Ezt a virtuálisgép-méretezési csoport példányainak megtekintésével ellenőrizheti.

az aks create -g MyResourceGroup2 -n MyManagedCluster -l eastus  --enable-node-public-ip

Meglévő AKS-fürtök esetén új csomópontkészletet is hozzáadhat, és nyilvános IP-címet csatolhat a csomópontokhoz.

az aks nodepool add -g MyResourceGroup2 --cluster-name MyManagedCluster -n nodepool2 --enable-node-public-ip

Nyilvános IP-előtag használata

A nyilvános IP-előtagok használatának számos előnye van. Az AKS támogatja a csomópontok meglévő nyilvános IP-előtagjának címeinek használatát azáltal, hogy átadja az erőforrás-azonosítót a jelölővel node-public-ip-prefix egy új fürt létrehozásakor vagy csomópontkészlet hozzáadásakor.

Először hozzon létre egy nyilvános IP-előtagot az az network public-ip előtaggal:

az network public-ip prefix create --length 28 --location eastus --name MyPublicIPPrefix --resource-group MyResourceGroup3

Tekintse meg a kimenetet, és jegyezze fel az id előtagot:

{
  ...
  "id": "/subscriptions/<subscription-id>/resourceGroups/myResourceGroup3/providers/Microsoft.Network/publicIPPrefixes/MyPublicIPPrefix",
  ...
}

Végül új fürt létrehozásakor vagy új csomópontkészlet hozzáadásakor használja a jelzőt node-public-ip-prefix , és adja meg az előtag erőforrás-azonosítóját:

az aks create -g MyResourceGroup3 -n MyManagedCluster -l eastus --enable-node-public-ip --node-public-ip-prefix /subscriptions/<subscription-id>/resourcegroups/MyResourceGroup3/providers/Microsoft.Network/publicIPPrefixes/MyPublicIPPrefix

Csomópontok nyilvános IP-címeinek megkeresése

A csomópontokhoz tartozó nyilvános IP-címeket többféleképpen is megkeresheti:

  • Használja az Azure CLI parancsot az vmss list-instance-public-ips.
  • PowerShell- vagy Bash-parancsok használata.
  • A nyilvános IP-címeket az Azure Portalon is megtekintheti a virtuálisgép-méretezési csoport példányainak megtekintésével.

Fontos

A csomópont erőforráscsoportja tartalmazza a csomópontokat és azok nyilvános IP-címeit. A csomópont erőforráscsoportjának használatával parancsokat hajthat végre a csomópontok nyilvános IP-címeinek megkereséséhez.

az vmss list-instance-public-ips -g MC_MyResourceGroup2_MyManagedCluster_eastus -n YourVirtualMachineScaleSetName

Nyilvános IP-címkék használata a csomópont nyilvános IP-címén

A nyilvános IP-címkék a csomópont nyilvános IP-címén használhatók az Azure Routing Preference funkció használatához.

Követelmények

  • Az AKS 1.24-es vagy újabb verziójára van szükség.

Új fürt létrehozása útválasztási beállítási internet használatával

az aks create -n <clusterName> -l <location> -g <resourceGroup> \
  --enable-node-public-ip \
  --node-public-ip-tags RoutingPreference=Internet

Csomópontkészlet hozzáadása útválasztási beállítási internettel

az aks nodepool add --cluster-name <clusterName> -n <nodepoolName> -l <location> -g <resourceGroup> \
  --enable-node-public-ip \
  --node-public-ip-tags RoutingPreference=Internet

Gazdagépport-kapcsolatok engedélyezése és csomópontkészletek hozzáadása alkalmazásbiztonsági csoportokhoz

A csomópontok nyilvános IP-címeit használó AKS-csomópontoknak, amelyek a gazdacímükön üzemeltetik a szolgáltatásokat, hozzá kell adni egy NSG-szabályt a forgalom engedélyezéséhez. Ha hozzáadja a kívánt portokat a csomópontkészlet konfigurációjában, létrehozza a megfelelő engedélyezési szabályokat a fürt hálózati biztonsági csoportjában.

Ha a saját virtuális hálózatot használó fürttel rendelkező alhálózaton hálózati biztonsági csoport van érvényben, engedélyezési szabályt kell hozzáadni az adott hálózati biztonsági csoporthoz. Ez egy adott csomópontkészlet csomópontjaira korlátozható, ha hozzáadja a csomópontkészletet egy alkalmazásbiztonsági csoporthoz (ASG). Ha engedélyezett gazdagépportok vannak megadva, alapértelmezés szerint létrejön egy felügyelt ASG a felügyelt erőforráscsoportban. A csomópontok hozzáadhatók egy vagy több egyéni ASG-hez is, ha megadják az NSG(k) erőforrás-azonosítóját a csomópontkészlet paramétereiben.

Gazdagépport specifikációs formátuma

Az engedélyezni kívánt portok listájának megadásakor használjon vesszővel elválasztott listát a következő formátumú port/protocol bejegyzésekkel: vagy startPort-endPort/protocol.

Példák:

  • 80/tcp
  • 80/tcp,443/tcp
  • 53/udp,80/tcp
  • 50000-60000/tcp

Követelmények

  • Az AKS 1.24-es vagy újabb verziójára van szükség.

Új fürt létrehozása engedélyezett portokkal és alkalmazásbiztonsági csoportokkal

az aks create \
  --resource-group <resourceGroup> \
  --name <clusterName> \
  --nodepool-name <nodepoolName> \
  --nodepool-allowed-host-ports 80/tcp,443/tcp,53/udp,40000-60000/tcp,40000-50000/udp\
  --nodepool-asg-ids "<asgId>,<asgId>"

Új csomópontkészlet hozzáadása engedélyezett portokkal és alkalmazásbiztonsági csoportokkal

  --resource-group <resourceGroup> \
  --cluster-name <clusterName> \
  --name <nodepoolName> \
  --allowed-host-ports 80/tcp,443/tcp,53/udp,40000-60000/tcp,40000-50000/udp \
  --asg-ids "<asgId>,<asgId>"

Csomópontkészlet engedélyezett portjai és alkalmazásbiztonsági csoportjainak frissítése

  --resource-group <resourceGroup> \
  --cluster-name <clusterName> \
  --name <nodepoolName> \
  --allowed-host-ports 80/tcp,443/tcp,53/udp,40000-60000/tcp,40000-50000/udp \
  --asg-ids "<asgId>,<asgId>"

Gazdagépportok automatikus hozzárendelése pod-számítási feladatokhoz (ELŐZETES VERZIÓ)

Ha a nyilvános IP-címek csomópontokon vannak konfigurálva, a gazdagépportok segítségével a podok közvetlenül fogadhatják a forgalmat anélkül, hogy terheléselosztó szolgáltatást kellene konfigurálniuk. Ez különösen olyan helyzetekben hasznos, mint a játék, ahol a csomópont IP-címének és portjának rövid távú jellege nem jelent problémát, mivel egy jól ismert gazdagépnéven futó matchmaker-szolgáltatás képes a megfelelő gazdagépet és portot biztosítani a kapcsolat idején. Mivel azonban egy gazdagépen csak egy folyamat figyelhet ugyanazon a porton, a gazdagépportokkal rendelkező alkalmazások használata problémákat okozhat az ütemezésben. A probléma elkerülése érdekében az AKS lehetővé teszi, hogy a rendszer dinamikusan rendeljen hozzá egy elérhető portot az ütemezéskor, megelőzve az ütközéseket.

Figyelmeztetés

A pod gazdagépport-forgalmát a fürt alapértelmezett NSG-szabályai blokkolják. Ezt a funkciót kombinálni kell azzal, hogy lehetővé teszi a csomópontkészlet gazdagépportok számára a forgalom áramlását.

Fontos

Az AKS előzetes verziójú funkciói önkiszolgáló, opt-in alapon érhetők el. Az előzetes verziókat "ahogy van" és "rendelkezésre állóként" biztosítjuk, és a szolgáltatási szerződésekből és a korlátozott jótállásból kizárjuk őket. Az AKS előzetes verzióit részben az ügyfélszolgálat fedezi a legjobb munkamennyiség alapján. Ezért ezek a funkciók nem éles használatra vannak szánva. További információkért tekintse meg az alábbi támogatási cikkeket:

Követelmények

  • Az AKS 1.24-es vagy újabb verziójára van szükség.

A PodHostPortAutoAssignPreview funkciójelző regisztrálása

Regisztrálja a PodHostPortAutoAssignPreview funkciójelzőt az az feature register paranccsal, ahogyan az az alábbi példában látható:

az feature register --namespace "Microsoft.ContainerService" --name "PodHostPortAutoAssignPreview"

Néhány percig tart, amíg az állapot megjelenik a Regisztrált állapotban. Ellenőrizze a regisztrációs állapotot az az feature show paranccsal:

az feature show --namespace "Microsoft.ContainerService" --name "PodHostPortAutoAssignPreview"

Ha az állapot a Regisztrált állapotot tükrözi, frissítse a Microsoft.ContainerService erőforrás-szolgáltató regisztrációját az az provider register paranccsal:

az provider register --namespace Microsoft.ContainerService

Gazdagépport automatikus hozzárendelése podhoz

A gazdagépport automatikus hozzárendelésének aktiválásához üzembe kell helyezni egy számítási feladatot gazdagépportok nélkül, és a megjegyzést a gazdagépport-hozzárendeléseket igénylő portok listájával kell alkalmazni kubernetes.azure.com/assign-hostports-for-containerports . A széljegyzet értékét vesszővel elválasztott bejegyzéslistaként kell megadni, például port/protocol, ahol a port egy egyéni portszám, amelyet a pod specifikációja határoz meg, és a protokoll tcp vagy udp.

A portok a tartományból 40000-59999 lesznek hozzárendelve, és egyediek lesznek a fürtben. A hozzárendelt portok hozzáadva lesznek a podon belüli környezeti változókhoz is, hogy az alkalmazás meghatározhassa a hozzárendelt portokat. A környezeti változó neve a következő formátumban lesz (az alábbi példa): <deployment name>_PORT_<port number>_<protocol>_HOSTPORTígy egy példa lenne mydeployment_PORT_8080_TCP_HOSTPORT: 41932.

Íme egy példa echoserver az üzembe helyezésre, amely a 8080-8443-ás portok gazdagépportjainak leképezését mutatja be:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: echoserver-hostport
  labels:
    app: echoserver-hostport
spec:
  replicas: 3
  selector:
    matchLabels:
      app: echoserver-hostport
  template:
    metadata:
      annotations:
        kubernetes.azure.com/assign-hostports-for-containerports: 8080/tcp,8443/tcp
      labels:
        app: echoserver-hostport
    spec:
      nodeSelector:
        kubernetes.io/os: linux
      containers:
        - name: echoserver-hostport
          image: k8s.gcr.io/echoserver:1.10
          ports:
            - name: http
              containerPort: 8080
              protocol: TCP
            - name: https
              containerPort: 8443
              protocol: TCP

Az üzembe helyezés alkalmazásakor a hostPort bejegyzések az egyes podok YAML-jében lesznek:

$ kubectl describe pod echoserver-hostport-75dc8d8855-4gjfc
<cut for brevity>
Containers:
  echoserver-hostport:
    Container ID:   containerd://d0b75198afe0612091f412ee7cf7473f26c80660143a96b459b3e699ebaee54c
    Image:          k8s.gcr.io/echoserver:1.10
    Image ID:       k8s.gcr.io/echoserver@sha256:cb5c1bddd1b5665e1867a7fa1b5fa843a47ee433bbb75d4293888b71def53229                                                                                                      Ports:          8080/TCP, 8443/TCP
    Host Ports:     46645/TCP, 49482/TCP
    State:          Running
      Started:      Thu, 12 Jan 2023 18:02:50 +0000
    Ready:          True
    Restart Count:  0
    Environment:
      echoserver-hostport_PORT_8443_TCP_HOSTPORT:  49482
      echoserver-hostport_PORT_8080_TCP_HOSTPORT:  46645

Következő lépések