Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Węzły usługi AKS nie wymagają własnych publicznych adresów IP do komunikacji. Jednak scenariusze mogą wymagać, aby węzły w puli węzłów odbierały własne dedykowane publiczne adresy IP. Typowy scenariusz dotyczy obciążeń gier, w których konsola musi nawiązać bezpośrednie połączenie z maszyną wirtualną w chmurze, aby zminimalizować przeskoki. Ten scenariusz można osiągnąć w usłudze AKS przy użyciu publicznego adresu IP węzła.
Najpierw utwórz nową grupę zasobów.
az group create --name <resourceGroup> --location <region>
Utwórz nowy klaster usługi AKS i dołącz publiczny adres IP dla węzłów. Każdy z węzłów w puli węzłów otrzymuje unikatowy publiczny adres IP. Możesz to sprawdzić, przeglądając wystąpienia zestawu skalowania maszyn wirtualnych.
az aks create \
--resource-group <resourceGroup> \
--name <aksClusterName> \
--location <region> \
--enable-node-public-ip \
--generate-ssh-keys
W przypadku istniejących klastrów usługi AKS można również dodać nową pulę węzłów i dołączyć publiczny adres IP dla węzłów.
az aks nodepool add --resource-group <resourceGroup> --cluster-name <aksClusterName> --name <newNodePool> --enable-node-public-ip
Używanie prefiksu publicznego adresu IP
Istnieje wiele korzyści związanych z używaniem prefiksu publicznego adresu IP. Usługa AKS obsługuje używanie adresów z istniejącego prefiksu publicznego adresu IP dla węzłów przez przekazanie identyfikatora zasobu z flagą --node-public-ip-prefix-id podczas tworzenia nowego klastra lub dodawania puli węzłów.
Najpierw utwórz prefiks publicznego adresu IP przy użyciu polecenia az network public-ip prefix create:
az network public-ip prefix create --length 28 --location <region> --name <publicIPPrefixName> --resource-group <resourceGroup>
Wyświetl dane wyjściowe i zanotuj id prefiks dla prefiksu:
{
...
"id": "/subscriptions/<subscription-id>/resourceGroups/<resourceGroup>/providers/Microsoft.Network/publicIPPrefixes/<publicIPPrefixName>",
...
}
Na koniec podczas tworzenia nowego klastra lub dodawania nowej puli węzłów użyj flagi --node-public-ip-prefix-id i przekaż identyfikator zasobu prefiksu:
az aks create \
--resource-group <resourceGroup> \
--name <aksClusterName> \
--location <region> \
--enable-node-public-ip \
--node-public-ip-prefix-id /subscriptions/<subscription-id>/resourceGroups/<resourceGroup>/providers/Microsoft.Network/publicIPPrefixes/<publicIPPrefixName> \
--generate-ssh-keys
Lokalizowanie publicznych adresów IP dla węzłów
Publiczne adresy IP dla węzłów można zlokalizować na różne sposoby:
- Użyj polecenia interfejsu wiersza polecenia
az vmss list-instance-public-ipsplatformy Azure . - Użyj poleceń programu PowerShell lub powłoki Bash.
- Publiczne adresy IP można również wyświetlić w witrynie Azure Portal, wyświetlając wystąpienia w zestawie skalowania maszyn wirtualnych.
Ważne
Grupa zasobów węzła zawiera węzły i ich publiczne adresy IP. Użyj grupy zasobów węzła podczas wykonywania poleceń, aby znaleźć publiczne adresy IP dla węzłów.
az vmss list-instance-public-ips --resource-group <MC_region_aksClusterName_region> --name <virtualMachineScaleSetName>
Używanie publicznych tagów adresów IP na publicznych adresach IP węzła
Publiczne tagi IP można używać na publicznych adresach IP węzła do korzystania z funkcji preferencji routingu platformy Azure.
Wymagania
- Wymagana jest usługa AKS w wersji 1.29 lub nowszej.
Tworzenie nowego klastra przy użyciu Internetu preferencji routingu
az aks create \
--name <aksClusterName> \
--location <region> \
--resource-group <resourceGroup> \
--enable-node-public-ip \
--node-public-ip-tags RoutingPreference=Internet \
--generate-ssh-keys
Dodawanie puli węzłów z internetem preferencji routingu
az aks nodepool add --cluster-name <aksClusterName> \
--name <nodePoolName> \
--location <region> \
--resource-group <resourceGroup> \
--enable-node-public-ip \
--node-public-ip-tags RoutingPreference=Internet
Zezwalaj na połączenia portów hosta i dodawanie pul węzłów do grup zabezpieczeń aplikacji
Węzły usługi AKS korzystające z publicznych adresów IP węzłów hostujących usługi na swoim adresie hosta muszą mieć dodaną regułę sieciowej grupy zabezpieczeń, aby zezwolić na ruch. Dodanie żądanych portów w konfiguracji puli węzłów spowoduje utworzenie odpowiednich reguł zezwalania w sieciowej grupie zabezpieczeń klastra.
Jeśli sieciowa grupa zabezpieczeń znajduje się w podsieci z klastrem korzystającym z własnej sieci wirtualnej, reguła zezwalania musi zostać dodana do tej sieciowej grupy zabezpieczeń. Może to być ograniczone do węzłów w danej puli węzłów, dodając pulę węzłów do grupy zabezpieczeń aplikacji (ASG). Zarządzana grupa asg zostanie utworzona domyślnie w zarządzanej grupie zasobów, jeśli określono dozwolone porty hosta. Węzły można również dodać do co najmniej jednej niestandardowej grupy zabezpieczeń, określając identyfikator zasobu sieciowych grup zabezpieczeń w parametrach puli węzłów.
Format specyfikacji portu hosta
Podczas określania listy dozwolonych portów użyj listy rozdzielanej przecinkami z wpisami w formacie port/protocol lub startPort-endPort/protocol.
Przykłady:
- 80/tcp
- 80/tcp,443/tcp
- 53/udp,80/tcp
- 50000-60000/tcp
Wymagania
- Wymagana jest usługa AKS w wersji 1.29 lub nowszej.
Tworzenie nowego klastra z dozwolonymi portami i grupami zabezpieczeń aplikacji
az aks create \
--resource-group <resourceGroup> \
--name <aksClusterName> \
--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
Dodawanie nowej puli węzłów z dozwolonymi portami i grupami zabezpieczeń aplikacji
az aks nodepool add \
--resource-group <resourceGroup> \
--cluster-name <aksClusterName> \
--name <nodePoolName> \
--allowed-host-ports 80/tcp,443/tcp,53/udp,40000-60000/tcp,40000-50000/udp \
--asg-ids "<asgId>,<asgId>"
Aktualizowanie dozwolonych portów i grup zabezpieczeń aplikacji dla puli węzłów
az aks nodepool update \
--resource-group <resourceGroup> \
--cluster-name <aksClusterName> \
--name <nodePoolName> \
--allowed-host-ports 80/tcp,443/tcp,53/udp,40000-60000/tcp,40000-50000/udp \
--asg-ids "<asgId>,<asgId>"
Automatyczne przypisywanie portów hosta dla obciążeń zasobników (WERSJA ZAPOZNAWCZA)
Gdy publiczne adresy IP są skonfigurowane w węzłach, można użyć portów hosta, aby umożliwić zasobnikom bezpośrednie odbieranie ruchu bez konieczności konfigurowania usługi równoważenia obciążenia. Jest to szczególnie przydatne w scenariuszach, takich jak gry, gdzie efemeryczny charakter adresu IP węzła i portu nie jest problemem, ponieważ usługa matchmaker w dobrze znanej nazwie hosta może zapewnić prawidłowy host i port do użycia w czasie połączenia. Jednak ponieważ tylko jeden proces na hoście może nasłuchiwać na tym samym porcie, użycie aplikacji z portami hosta może prowadzić do problemów z planowaniem. Aby uniknąć tego problemu, usługa AKS zapewnia możliwość dynamicznego przypisywania dostępnego portu w czasie planowania przez system, zapobiegając konfliktom.
Ostrzeżenie
Ruch portów hosta zasobnika zostanie zablokowany przez domyślne reguły sieciowej grupy zabezpieczeń w klastrze. Ta funkcja powinna być połączona z zezwoleniem na porty hosta w puli węzłów, aby umożliwić przepływ ruchu.
Ważne
Funkcje usługi AKS w wersji zapoznawczej są dostępne na zasadzie samoobsługi. Wersje zapoznawcze są udostępniane w wersji "as is" i "jako dostępne" i są wykluczone z umów dotyczących poziomu usług i ograniczonej gwarancji. Wersje zapoznawcze usługi AKS są częściowo objęte pomocą techniczną dla klientów. W związku z tym te funkcje nie są przeznaczone do użytku produkcyjnego. Aby uzyskać więcej informacji, zobacz następujące artykuły pomocy technicznej:
Wymagania
- Wymagana jest usługa AKS w wersji 1.29 lub nowszej.
Rejestrowanie flagi funkcji "PodHostPortAutoAssignPreview"
Zarejestruj flagę PodHostPortAutoAssignPreview funkcji przy użyciu polecenia az feature register , jak pokazano w poniższym przykładzie:
az feature register --namespace "Microsoft.ContainerService" --name "PodHostPortAutoAssignPreview"
Wyświetlenie stanu Zarejestrowane trwa kilka minut. Sprawdź stan rejestracji przy użyciu polecenia az feature show :
az feature show --namespace "Microsoft.ContainerService" --name "PodHostPortAutoAssignPreview"
Gdy stan będzie odzwierciedlał wartość Zarejestrowano, odśwież rejestrację dostawcy zasobów Microsoft.ContainerService , używając polecenia az provider register :
az provider register --namespace Microsoft.ContainerService
Automatyczne przypisywanie portu hosta do zasobnika
Wyzwalanie automatycznego przypisywania portów hosta odbywa się przez wdrożenie obciążenia bez portów hosta i zastosowanie kubernetes.azure.com/assign-hostports-for-containerports adnotacji z listą portów, które wymagają przypisań portów hosta. Wartość adnotacji należy określić jako rozdzielaną przecinkami listę wpisów, takich jak port/protocol, gdzie port jest numerem pojedynczego portu zdefiniowanego w specyfikacji zasobnika, a protokół to tcp lub udp.
Porty zostaną przypisane z zakresu 40000-59999 i będą unikatowe w klastrze. Przypisane porty zostaną również dodane do zmiennych środowiskowych wewnątrz zasobnika, aby aplikacja mogła określić, które porty zostały przypisane. Nazwa zmiennej środowiskowej będzie mieć następujący format (przykład poniżej): <deployment name>_PORT_<port number>_<protocol>_HOSTPORT, więc przykładem może być mydeployment_PORT_8080_TCP_HOSTPORT: 41932.
Oto przykładowe echoserver wdrożenie pokazujące mapowanie portów hosta dla portów 8080 i 8443:
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
Po zastosowaniu hostPort wdrożenia wpisy będą znajdować się w pliku YAML poszczególnych zasobników:
$ 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
Następne kroki
Dowiedz się więcej o korzystaniu z wielu pul węzłów w usłudze AKS.
Dowiedz się więcej o używaniu standardowych modułów równoważenia obciążenia w usłudze AKS