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 \
--resource-group MyResourceGroup2 \
--name MyManagedCluster \
--location eastus \
--enable-node-public-ip \
--generate-ssh-keys
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 --resource-group MyResourceGroup2 --cluster-name MyManagedCluster --name 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 \
--resource-group MyResourceGroup3 \
--name MyManagedCluster \
--location eastus \
--enable-node-public-ip \
--node-public-ip-prefix /subscriptions/<subscription-id>/resourcegroups/MyResourceGroup3/providers/Microsoft.Network/publicIPPrefixes/MyPublicIPPrefix \
--generate-ssh-keys
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 --resource-group MC_MyResourceGroup2_MyManagedCluster_eastus --name 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 \
--name <clusterName> \
--location <location> \
--resource-group <resourceGroup> \
--enable-node-public-ip \
--node-public-ip-tags RoutingPreference=Internet \
--generate-ssh-keys
Csomópontkészlet hozzáadása útválasztási beállítási internettel
az aks nodepool add --cluster-name <clusterName> --name <nodepoolName> --location <location> --resource-group <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>" \
--generate-ssh-keys
Ú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
Ismerje meg, hogyan használhat több csomópontkészletet az AKS-ben.
Tudnivalók a standard terheléselosztók AKS-ben való használatáról
Azure Kubernetes Service