Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure Kubernetes Service'te (AKS) uygulamalarınıza erişimi kısıtlamak için iç yük dengeleyici oluşturabilir ve kullanabilirsiniz. İç yük dengeleyicinin genel IP'si yoktur ve Kubernetes hizmetini yalnızca özel IP'ye ulaşabilen uygulamalar için erişilebilir hale getirir. Bu uygulamalar aynı sanal ağda veya sanal ağ eşlemesi aracılığıyla başka bir sanal ağda olabilir. Bu makalede AKS ile iç yük dengeleyici oluşturma ve kullanma hakkında bilgi verilmektedir.
Önemli
Azure Kubernetes Service (AKS), 30 Eylül 2025'den itibaren Temel Yük Dengeleyici'yi desteklememektedir. Olası hizmet kesintilerini önlemek için yeni dağıtımlar için Standart Load Balancer kullanmanızı ve mevcut dağıtımları Standart Load Balancer'a yükseltmenizi öneririz. Daha fazla bilgi için Kullanımdan Kaldırma GitHub konusuna ve Azure Güncelleştirmeleri kullanımdan kaldırma duyurusuna bakın. Duyurular ve güncelleştirmeler hakkında bilgi sahibi olmak için AKS sürüm notlarını izleyin.
Başlamadan önce
- Bu makalede, mevcut bir AKS kümeniz olduğu varsayılır. AKS kümesine ihtiyacınız varsa Azure CLI, Azure PowerShell veya Azure portalını kullanarak bir küme oluşturabilirsiniz.
- Azure CLI sürüm 2.0.59 veya üzeri gerekir. Sürümü bulmak için
az --versionkomutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme. - Mevcut bir alt ağı veya kaynak grubunu kullanmak istiyorsanız AKS kümesi kimliğinin ağ kaynaklarını yönetmek için izin alması gerekir. Bilgi için bkz. AKS'de Azure CNI ağını yapılandırma. Yük dengeleyicinizi farklı bir alt ağda bir IP adresi kullanacak şekilde yapılandırıyorsanız AKS kümesi kimliğinin de
Readbu alt ağa erişimi olduğundan emin olun.- İzinler hakkında daha fazla bilgi için bkz: AKS erişimini diğer Azure kaynaklarına devretme.
İç yük dengeleyici oluşturma
internal-lb.yamladlı, hizmet türüLoadBalancerolan veazure-load-balancer-internalek açıklamasına sahip bir hizmet bildirimi oluşturun.apiVersion: v1 kind: Service metadata: name: internal-app annotations: service.beta.kubernetes.io/azure-load-balancer-internal: "true" spec: type: LoadBalancer ports: - port: 80 selector: app: internal-appkomutunu kullanarak iç yük dengeleyiciyi dağıtın
kubectl apply. Bu komut, AKS kümenizle aynı sanal ağa bağlı düğüm kaynak grubunda bir Azure yük dengeleyici oluşturur.kubectl apply -f internal-lb.yamlkomutunu kullanarak
kubectl get servicehizmet ayrıntılarını görüntüleyin.kubectl get service internal-appİç yük dengeleyicinin IP adresi, aşağıdaki örnek çıktıda
EXTERNAL-IPgösterildiği gibi sütunda gösterilir. Bu bağlamda Dış, yük dengeleyicinin dış arabirimini ifade eder. Bu, genel, dış IP adresi aldığı anlamına gelmez. Bu IP adresi, AKS kümesiyle aynı alt ağdan dinamik olarak atanır.NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE internal-app LoadBalancer 10.0.248.59 10.240.0.7 80:30555/TCP 2m
IP adresi belirtme
Yük dengeleyici için bir IP adresi belirttiğinizde, IP adresi yük dengeleyici tarafından kullanılan alt ağ içinde kullanılabilir olmalıdır. Yük dengeleyici varsayılan olarak AKS kümesiyle aynı alt ağı kullanır. Azure ayrılmış IP adresi, başka bir kaynağa atanmış bir IP adresi veya Kubernetes hizmeti CIDR'sinden bir IP adresi kullanmayın.
Sanal ağınızdaki alt ağları almak için Azure CLI komutunu veya az network vnet subnet list PowerShell cmdlet'ini kullanabilirsinizGet-AzVirtualNetworkSubnetConfig.
Alt ağlar hakkında daha fazla bilgi için bkz: Benzersiz bir alt ağa sahip düğüm havuzu ekleme.
Yük dengeleyici ile belirli bir IP adresi kullanmak istiyorsanız iki seçeneğiniz vardır: hizmet ek açıklamalarını ayarlama veya LoadBalancerIP özelliğini yük dengeleyici YAML bildirimine ekleme.
Önemli
Yük dengeleyici YAML manifestosuna LoadBalancerIP özelliğinin eklenmesi, upstream Kubernetes doğrultusunda kullanımdan kaldırılmaktadır. Geçerli kullanım aynı kalır ve mevcut hizmetlerin değişiklik yapılmadan çalışması beklenir, ancak bunun yerine hizmet ek açıklamalarını ayarlamanızı kesinlikle öneririz. Hizmet ek açıklamaları hakkında daha fazla bilgi için bkz. Azure Load Balancer tarafından desteklenen ek açıklamalar.
Hizmet ek açıklamalarını, IPv4 adresi için
service.beta.kubernetes.io/azure-load-balancer-ipv4ve IPv6 adresi içinservice.beta.kubernetes.io/azure-load-balancer-ipv6kullanarak ayarlayın.apiVersion: v1 kind: Service metadata: name: internal-app annotations: service.beta.kubernetes.io/azure-load-balancer-ipv4: 10.240.0.25 service.beta.kubernetes.io/azure-load-balancer-internal: "true" spec: type: LoadBalancer ports: - port: 80 selector: app: internal-appkomutunu kullanarak
kubectl get servicehizmet ayrıntılarını görüntüleyin.kubectl get service internal-appSütundaki
EXTERNAL-IPIP adresi, aşağıdaki örnek çıktıda gösterildiği gibi belirtilen IP adresinizi yansıtmalıdır:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE internal-app LoadBalancer 10.0.184.168 10.240.0.25 80:30225/TCP 4m
Yük dengeleyicinizi farklı bir alt ağda yapılandırma hakkında daha fazla bilgi için bkz . Farklı bir alt ağ belirtme.
Azure Özel Bağlantı Hizmetini AKS iç yük dengeleyicisine bağlama
Özel Bağlantı Hizmet gereksinimleri
- Kümenizin AKS'de desteklenen bir Kubernetes sürümü çalıştırması gerekir.
- AKS kümenizin,
nodeIPConfigurationarka uç havuzu türüne sahip bir Standart Load Balancer kullanması gerekir. Özel Bağlantı Service, Basic Load Balancer'ı veya IP tabanlınodeIParka uç havuzu türünü desteklemez. Daha fazla bilgi için Bkz. Özel Bağlantı Service sınırlamaları. - Sanal ağ ve alt ağa sahip mevcut bir kaynak grubuna ihtiyacınız vardır. Bu kaynak grubu, özel uç noktayı oluşturduğunuz yerdir. Bu kaynaklara sahip değilseniz, Sanal ağ ve alt ağ oluşturma konusuna bkz.
Önemli
Özel Bağlantı Hizmeti aşağıdaki kısıtlamalara sahiptir:
- Özel Bağlantı Hizmeti yalnızca IPv4 trafiğini destekler ve yalnızca TCP ve UDP aktarım protokollerini destekler.
- Hizmette
externalTrafficPolicy: Localkullanılıyorsa, Özel Bağlantı Service alt ağı pod alt ağından farklı olmalıdır. Aynı alt ağı kullanmak içinClusterdeğeriniexternalTrafficPolicyolarak ayarlayın. - PROXY protokolunu etkinleştirir ve kullanırsanız
externalTrafficPolicy: Local, varsayılan sistem durumu yoklaması başarısız olduğundan özel bir sistem durumu yoklaması yapılandırmanız gerekir.
Daha fazla bilgi için bkz. Özel Bağlantı Hizmeti sınırlamaları ve Azure Özel Bağlantı Hizmeti tümleştirme kısıtlamaları.
Özel Bağlantı Service bağlantısı oluşturun
internal-lb-pls.yamladlı, hizmet türüLoadBalancerolan veazure-load-balancer-internalileazure-pls-createek açıklamalarını içeren bir hizmet bildirimi oluşturun. Diğer seçenekler için Azure Özel Bağlantı Hizmet Tümleştirmesi tasarım belgesine bakın.apiVersion: v1 kind: Service metadata: name: internal-app annotations: service.beta.kubernetes.io/azure-load-balancer-internal: "true" service.beta.kubernetes.io/azure-pls-create: "true" spec: type: LoadBalancer ports: - port: 80 selector: app: internal-appkomutunu kullanarak iç yük dengeleyiciyi dağıtın
kubectl apply. Bu komut, AKS kümenizle aynı sanal ağa bağlı düğüm kaynak grubunda bir Azure yük dengeleyici oluşturur. Ayrıca Kubernetes hizmet nesnesiyle ilişkilendirilmiş iç yük dengeleyicinin ön uç IP yapılandırmasına bağlanan bir Özel Bağlantı Hizmeti nesnesi oluşturur.kubectl apply -f internal-lb-pls.yamlkomutunu kullanarak
kubectl get servicehizmet ayrıntılarını görüntüleyin.kubectl get service internal-appİç yük dengeleyicinin IP adresi, aşağıdaki örnek çıktıda
EXTERNAL-IPgösterildiği gibi sütunda gösterilir. Bu bağlamda Dış, yük dengeleyicinin dış arabirimini ifade eder. Bu, genel, dış IP adresi aldığı anlamına gelmez.NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE internal-app LoadBalancer 10.125.17.53 10.125.0.66 80:30430/TCP 64mkomutunu kullanarak Özel Bağlantı Service nesnesinin
az network private-link-service listayrıntılarını görüntüleyin.# Create a variable for the node resource group AKS_MC_RG=$(az aks show -g myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv) # View the details of the Private Link Service object az network private-link-service list -g $AKS_MC_RG --query "[].{Name:name,Alias:alias}" -o tableÇıkışınız aşağıdaki örnek çıkışa benzer olmalıdır:
Name Alias -------- ------------------------------------------------------------------------- pls-xyz pls-xyz.abc123-defg-4hij-56kl-789mnop.eastus2.azure.privatelinkservice
Özel Bağlantı Hizmetine Özel Uç Nokta Oluşturma
Özel Uç Nokta, oluşturduğunuz Özel Bağlantı Hizmeti aracılığıyla Kubernetes hizmet nesnenize özel olarak bağlanmanızı sağlar.
komutunu kullanarak az network private-endpoint create özel uç nokta oluşturun.
pls-xyz öğesini önceki adımda döndürülen Özel Bağlantı hizmeti adıyla değiştirin.
Özel uç noktayı oluşturmak istediğiniz hedef kaynak grubuna ayarlayın --resource-group .
--subnet ve --vnet-name öğelerini, özel uç noktayı içeren sanal ağ ve alt ağ olarak ayarlayın.
AKS_PLS_ID öğesini, --private-connection-resource-id içinden alınan Özel Bağlantı Hizmeti kaynak kimliği olarak ayarlayın.
# Create variables for the Private Link Service
AKS_PLS_NAME=pls-xyz
AKS_PLS_ID=$(az network private-link-service show -g $AKS_MC_RG --name $AKS_PLS_NAME --query id -o tsv)
# Create the private endpoint
az network private-endpoint create \
-g myOtherResourceGroup \
--name myAKSServicePE \
--vnet-name myOtherVNET \
--subnet pe-subnet \
--private-connection-resource-id $AKS_PLS_ID \
--connection-name connectToMyK8sService
Ek açıklamalar aracılığıyla Özel Bağlantı Service özelleştirmeleri
PLS kaynağını özelleştirmek için aşağıdaki ek açıklamaları kullanabilirsiniz:
| Ek Açıklama | Değer | Açıklama | Zorunlu | Varsayılan |
|---|---|---|---|---|
service.beta.kubernetes.io/azure-pls-create |
"true" |
PLS'nin oluşturulması gerekip gerekmediğini gösteren Boole değeri. | Zorunlu | |
service.beta.kubernetes.io/azure-pls-name |
<PLS name> |
Oluşturulacak PLS kaynağının adını belirten dize. | İsteğe bağlı | "pls-<LB frontend config name>" |
service.beta.kubernetes.io/azure-pls-resource-group |
Resource Group name |
PLS kaynağının oluşturulduğu Kaynak Grubunun adını belirten dize | İsteğe bağlı | MC_resource |
service.beta.kubernetes.io/azure-pls-ip-configuration-subnet |
<Subnet name> |
PLS'nin dağıtıldığı alt ağı gösteren dize. Bu alt ağ, arka uç havuzuyla aynı sanal ağda bulunmalıdır. PLS NAT IP'leri bu alt ağ içinde ayrılır. | İsteğe bağlı |
service.beta.kubernetes.io/azure-load-balancer-internal-subnet ise bu ILB alt ağı kullanılır. Aksi takdirde, yapılandırma dosyasından varsayılan alt ağ kullanılır. |
service.beta.kubernetes.io/azure-pls-ip-configuration-ip-address-count |
[1-8] |
Ayrılacak özel NAT IP'lerinin toplam sayısı. | İsteğe bağlı | 1 |
service.beta.kubernetes.io/azure-pls-ip-configuration-ip-address |
"10.0.0.7 ... 10.0.0.10" |
Ayrılacak statik IPv4 IP adreslerinin boşluklarla ayrılmış listesi. (IPv6 şu anda desteklenmiyor.) Toplam IP sayısı içinde service.beta.kubernetes.io/azure-pls-ip-configuration-ip-address-countbelirtilen IP sayısından büyük olmamalıdır. Daha az IP belirtilmişse, geri kalanı dinamik olarak ayrılır. Listedeki ilk IP olarak Primaryayarlanır. |
İsteğe bağlı | Tüm IP'ler dinamik olarak ayrılır. |
service.beta.kubernetes.io/azure-pls-fqdns |
"fqdn1 fqdn2" |
PLS ile ilişkili tam nitelikli etki alanı adlarının boşlukla ayrılmış listesi. | İsteğe bağlı | [] |
service.beta.kubernetes.io/azure-pls-proxy-protocol |
"true" veya "false" |
Bağlantı kimliği ve kaynak IP adresi de dahil olmak üzere bağlantı bilgilerini geçirmek için PLS'de TCP PROXY protokolunun etkinleştirilip etkinleştirilmeydiğini gösteren Boole. Arka uç hizmeti PROXY protokolünü desteklemelidir; aksi takdirde bağlantı başarısız olur. | İsteğe bağlı | false |
service.beta.kubernetes.io/azure-pls-visibility |
"sub1 sub2 sub3 … subN" veya "*" |
Özel Bağlantı Hizmeti'nin görünür olduğu Azure abonelik kimliklerinin boşlukla ayrılmış listesi. PLS'yi tüm alt bileşenlerde kullanıma açmak için kullanın "*" (En az kısıtlayıcı). |
İsteğe bağlı | Yalnızca rol tabanlı erişim denetimini gösteren boş liste[]: Bu Özel Bağlantı Hizmeti yalnızca kiracılar genelinde yetkili kullanıcılar dahil olmak üzere gerekli Azure RBAC izinlerine sahip kullanıcılar tarafından kullanılabilir. (En kısıtlayıcı) |
service.beta.kubernetes.io/azure-pls-auto-approval |
"sub1 sub2 sub3 … subN" |
PLS'ye yönelik PE bağlantı istekleri otomatik olarak onaylanan Azure abonelik kimliklerinin boşlukla ayrılmış listesi. Otomatik onay listesi görünürlük listesinin bir alt kümesi olmalıdır. | İsteğe bağlı | [] |
Özel ağlarla iç yük dengeleyici kullanma
AKS kümenizi oluştururken gelişmiş ağ ayarlarını belirtebilirsiniz. Bu ayarlar, kümeyi mevcut bir Azure sanal ağına ve alt ağlarına dağıtmanıza olanak tanır. Örneğin, AKS kümenizi şirket içi ortamınıza bağlı özel bir ağa dağıtabilir ve yalnızca dahili olarak erişilebilen hizmetleri çalıştırabilirsiniz.
Daha fazla bilgi için bkz . Kubenet veya Azure CNI ile kendi sanal ağ alt ağlarınızı yapılandırma.
AKS kümesinde özel ağ kullanan bir iç yük dengeleyiciyi dağıtmak için önceki adımlarda herhangi bir değişiklik yapmanız gerekmez. Yük dengeleyici AKS kümenizin düğüm kaynak grubunda oluşturulur ve aşağıdaki örnekte gösterildiği gibi özel sanal ağınıza ve alt ağınıza bağlanır:
kubectl get service internal-app
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
internal-app LoadBalancer 10.1.15.188 10.0.0.35 80:31669/TCP 1m
Not
AKS kümesi tarafından kullanılan küme kimliğinin, sanal ağ kaynağı üzerinde en az Network Contributor rolüne sahip olması gerekir. komutunu kullanarak az aks show küme kimliğini görüntüleyebilirsiniz, örneğin az aks show --resource-group <resource-group-name> --name <cluster-name> --query "identity". Komutunu kullanarak az role assignment create Ağ Katkıda Bulunanı rolünü atayabilirsiniz, örneğin az role assignment create --assignee <identity-resource-id> --scope <virtual-network-resource-id> --role "Network Contributor".
Bunun yerine özel bir rol tanımlamak istiyorsanız aşağıdaki izinlere ihtiyacınız vardır:
Microsoft.Network/virtualNetworks/subnets/join/actionMicrosoft.Network/virtualNetworks/subnets/read
Daha fazla bilgi için Sanal ağ alt ağı ekleme, değiştirme veya silme bölümüne bakın.
Farklı bir alt ağ belirtme
azure-load-balancer-internal-subnet Yük dengeleyiciniz için bir alt ağ belirtmek üzere ek açıklamayı hizmetinize ekleyin. Belirtilen alt ağ AKS kümenizle aynı sanal ağda olmalıdır. Dağıtıldığında, yük dengeleyici EXTERNAL-IP adresi belirtilen alt ağın bir parçasıdır.
apiVersion: v1
kind: Service
metadata:
name: internal-app
annotations:
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
service.beta.kubernetes.io/azure-load-balancer-internal-subnet: "apps-subnet"
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: internal-app
service.beta.kubernetes.io/azure-load-balancer-internal-subnet annotation değerini, "apps-subnet" gibi alt ağ adı dizesi olarak ayarlayın.
Yük dengeleyiciyi silme
Tüm Kubernetes hizmetlerini sildiğinizde yük dengeleyici silinir.
Herhangi bir Kubernetes kaynağında olduğu gibi, kubectl delete service internal-app gibi bir hizmeti doğrudan silebilirsiniz; bu işlem temel Azure yük dengeleyicisini de siler.
Sonraki adımlar
Kubernetes hizmetleri hakkında daha fazla bilgi edinmek için Kubernetes hizmetleri belgelerine bakın.