Azure Kubernetes Service'te (AKS) örnek düzeyinde genel IP'leri kullanma
AKS düğümleri, iletişim için kendi genel IP adreslerini gerektirmez. Ancak senaryolar, bir düğüm havuzundaki düğümlerin kendi ayrılmış genel IP adreslerini almasını gerektirebilir. Yaygın bir senaryo, konsolun atlamaları en aza indirmek için bulut sanal makinesine doğrudan bağlantı sağlaması gereken oyun iş yüklerine yöneliktir. Bu senaryo, Düğüm Genel IP'si kullanılarak AKS'de elde edilebilir.
İlk olarak yeni bir kaynak grubu oluşturun.
az group create --name myResourceGroup2 --location eastus
Yeni bir AKS kümesi oluşturun ve düğümleriniz için bir genel IP ekleyin. Düğüm havuzundaki düğümlerin her biri benzersiz bir genel IP alır. Sanal Makine Ölçek Kümesi örneklerine bakarak bunu doğrulayabilirsiniz.
az aks create \
--resource-group MyResourceGroup2 \
--name MyManagedCluster \
--location eastus \
--enable-node-public-ip \
--generate-ssh-keys
Mevcut AKS kümeleri için yeni bir düğüm havuzu ekleyebilir ve düğümleriniz için genel IP ekleyebilirsiniz.
az aks nodepool add --resource-group MyResourceGroup2 --cluster-name MyManagedCluster --name nodepool2 --enable-node-public-ip
Genel IP ön eki kullanma
Genel IP ön eki kullanmanın çeşitli avantajları vardır. AKS, yeni bir küme oluştururken veya düğüm havuzu eklerken kaynak kimliğini bayrağıyla node-public-ip-prefix
geçirerek düğümleriniz için mevcut genel IP ön ekinden adreslerin kullanılmasını destekler.
İlk olarak az network public-ip prefix create komutunu kullanarak bir genel IP ön eki oluşturun:
az network public-ip prefix create --length 28 --location eastus --name MyPublicIPPrefix --resource-group MyResourceGroup3
Çıktıyı görüntüleyin ve ön ek için öğesini id
not alın:
{
...
"id": "/subscriptions/<subscription-id>/resourceGroups/myResourceGroup3/providers/Microsoft.Network/publicIPPrefixes/MyPublicIPPrefix",
...
}
Son olarak, yeni küme oluştururken veya yeni düğüm havuzu eklerken bayrağını node-public-ip-prefix
kullanın ve ön ekin kaynak kimliğini geçirin:
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
Düğümler için genel IP'leri bulma
Düğümleriniz için genel IP'leri çeşitli yollarla bulabilirsiniz:
- Azure CLI komutunu
az vmss list-instance-public-ips
kullanın. - PowerShell veya Bash komutlarını kullanın.
- Sanal Makine Ölçek Kümesi'ndeki örnekleri görüntüleyerek Azure portalında genel IP'leri de görüntüleyebilirsiniz.
Önemli
Düğüm kaynak grubu düğümleri ve bunların genel IP'lerini içerir. Düğümlerinizin genel IP'lerini bulmak için komutları yürütürken düğüm kaynak grubunu kullanın.
az vmss list-instance-public-ips --resource-group MC_MyResourceGroup2_MyManagedCluster_eastus --name YourVirtualMachineScaleSetName
Düğüm genel IP'lerinde genel IP etiketlerini kullanma
Azure Yönlendirme Tercihi özelliğini kullanmak için düğüm genel IP'lerinde genel IP etiketleri kullanılabilir.
Gereksinimler
- AKS sürüm 1.24 veya üzeri gereklidir.
Yönlendirme tercihi interneti kullanarak yeni küme oluşturma
az aks create \
--name <clusterName> \
--location <location> \
--resource-group <resourceGroup> \
--enable-node-public-ip \
--node-public-ip-tags RoutingPreference=Internet \
--generate-ssh-keys
Yönlendirme tercihi İnternet ile düğüm havuzu ekleme
az aks nodepool add --cluster-name <clusterName> --name <nodepoolName> --location <location> --resource-group <resourceGroup> \
--enable-node-public-ip \
--node-public-ip-tags RoutingPreference=Internet
Konak bağlantı noktası bağlantılarına izin ver ve uygulama güvenlik gruplarına düğüm havuzları ekle
Hizmetleri konak adreslerinde barındıran düğüm genel IP'lerini kullanan AKS düğümlerinin trafiğe izin vermek için bir NSG kuralı eklenmesi gerekir. Düğüm havuzu yapılandırmasına istenen bağlantı noktalarının eklenmesi, küme ağ güvenlik grubunda uygun izin verme kurallarını oluşturur.
Kendi sanal ağınızı getirin kullanan bir küme ile alt ağda bir ağ güvenlik grubu varsa, bu ağ güvenlik grubuna bir izin verme kuralı eklenmelidir. Bu, düğüm havuzunu bir uygulama güvenlik grubuna (ASG) ekleyerek belirli bir düğüm havuzundaki düğümler ile sınırlandırılabilir. İzin verilen konak bağlantı noktaları belirtilirse yönetilen kaynak grubunda varsayılan olarak yönetilen bir ASG oluşturulur. Düğümler, düğüm havuzu parametrelerinde NSG'lerin kaynak kimliği belirtilerek bir veya daha fazla özel ASG'ye de eklenebilir.
Konak bağlantı noktası belirtimi biçimi
İzin verecek bağlantı noktalarının listesini belirtirken, veya startPort-endPort/protocol
biçiminde port/protocol
girdiler içeren virgülle ayrılmış bir liste kullanın.
Örnekler:
- 80/tcp
- 80/tcp,443/tcp
- 53/udp,80/tcp
- 50000-60000/tcp
Gereksinimler
- AKS sürüm 1.24 veya üzeri gereklidir.
İzin verilen bağlantı noktaları ve uygulama güvenlik gruplarıyla yeni bir küme oluşturma
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
İzin verilen bağlantı noktaları ve uygulama güvenlik gruplarıyla yeni bir düğüm havuzu ekleme
--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>"
Düğüm havuzu için izin verilen bağlantı noktalarını ve uygulama güvenlik gruplarını güncelleştirme
--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>"
Pod iş yükleri için konak bağlantı noktalarını otomatik olarak atama (ÖNİzLEME)
Düğümlerde genel IP'ler yapılandırıldığında, podların yük dengeleyici hizmeti yapılandırmak zorunda kalmadan trafiği doğrudan almasına izin vermek için konak bağlantı noktaları kullanılabilir. Bu, özellikle düğüm IP'sinin ve bağlantı noktasının kısa ömürlü doğasının sorun olmadığı oyun gibi senaryolarda kullanışlıdır çünkü iyi bilinen bir konak adındaki bir eşleştirme hizmeti bağlantı zamanında kullanılacak doğru konağı ve bağlantı noktasını sağlayabilir. Ancak, bir konak üzerindeki yalnızca bir işlem aynı bağlantı noktasında dinleyebildiğinden, konak bağlantı noktalarıyla uygulamaları kullanmak zamanlamayla ilgili sorunlara yol açabilir. Aks, bu sorunu önlemek için sistemin zamanlama zamanında dinamik olarak kullanılabilir bir bağlantı noktası atamasını sağlayarak çakışmaları önler.
Uyarı
Pod konak bağlantı noktası trafiği, kümedeki varsayılan NSG kuralları tarafından engellenir. Bu özellik, düğüm havuzundaki konak bağlantı noktalarının trafiğin akmasına izin vermesiyle birleştirilmelidir.
Önemli
AKS önizleme özellikleri self servis ve kabul temelinde kullanılabilir. Önizlemeler "olduğu gibi" ve "kullanılabilir" olarak sağlanır ve hizmet düzeyi sözleşmelerinin ve sınırlı garantinin dışında tutulur. AKS önizlemeleri, müşteri desteği tarafından kısmen en iyi çaba temelinde ele alınmaktadır. Bu nedenle, bu özellikler üretim kullanımı için tasarlanmamıştır. Daha fazla bilgi için aşağıdaki destek makalelerine bakın:
Gereksinimler
- AKS sürüm 1.24 veya üzeri gereklidir.
'PodHostPortAutoAssignPreview' özellik bayrağını kaydetme
PodHostPortAutoAssignPreview
Aşağıdaki örnekte gösterildiği gibi az feature register komutunu kullanarak özellik bayrağını kaydedin:
az feature register --namespace "Microsoft.ContainerService" --name "PodHostPortAutoAssignPreview"
Durumun Kayıtlı olarak gösterilmesi birkaç dakika sürer. az feature show komutunu kullanarak kayıt durumunu doğrulayın:
az feature show --namespace "Microsoft.ContainerService" --name "PodHostPortAutoAssignPreview"
Durum Kayıtlı olarak gösterildiğinde az provider register komutunu kullanarak Microsoft.ContainerService kaynak sağlayıcısının kaydını yenileyin:
az provider register --namespace Microsoft.ContainerService
Pod'a otomatik olarak konak bağlantı noktası atama
Konak bağlantı noktası otomatik atamasını tetikleme işlemi, herhangi bir konak bağlantı noktası olmadan bir iş yükü dağıtılarak ve ana bilgisayar bağlantı noktası ataması gerektiren bağlantı noktalarının listesiyle ek açıklama uygulanarak kubernetes.azure.com/assign-hostports-for-containerports
gerçekleştirilir. Ek açıklamanın değeri, gibi port/protocol
girdilerin virgülle ayrılmış listesi olarak belirtilmelidir; burada bağlantı noktası Pod belirtiminde tanımlanan tek bir bağlantı noktası numarasıdır ve protokol ise veya udp
şeklindedirtcp
.
Bağlantı noktaları aralıktan 40000-59999
atanır ve küme genelinde benzersiz olur. Atanan bağlantı noktaları, uygulamanın hangi bağlantı noktalarının atandığını belirleyebilmesi için pod içindeki ortam değişkenlerine de eklenir. Ortam değişkeni adı şu biçimde olacaktır (aşağıdaki örnek): <deployment name>_PORT_<port number>_<protocol>_HOSTPORT
bu nedenle bir örnek olacaktır mydeployment_PORT_8080_TCP_HOSTPORT: 41932
.
8080 ve 8443 bağlantı noktaları için konak bağlantı noktalarının eşlemesini gösteren örnek echoserver
bir dağıtım aşağıda verilmiştir:
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
Dağıtım uygulandığında hostPort
, girişler tek tek podların YAML'sinde olur:
$ 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
Sonraki adımlar
AKS'de birden çok düğüm havuzu kullanma hakkında bilgi edinin.
AKS'de standart yük dengeleyicileri kullanma hakkında bilgi edinin
Azure Kubernetes Service