Kullanılabilir bir yük dengeleyiciniz yoksa, cloud-controller-manager (CCM) bileşeni, type: LoadBalancer türündeki bir hizmet için otomatik olarak bir yük dengeleyici örneği oluşturur ve yönetir. Bu örnek, Classic Load Balancer (CLB) veya Network Load Balancer (NLB) olabilir. Bu konuda, otomatik olarak yük dengeleyici oluşturan bir hizmet kullanılarak bir Nginx uygulamasının nasıl yayınlanacağı açıklanmaktadır.
Kullanım notları
CCM tarafından yönetilen SLB örnekleri için dikkat edilmesi gerekenler
CCM, yalnızca
Type=LoadBalancerHizmetleri için yük dengeleme yapılandırması yapar.CCM bildirim temelli bir API kullanır ve Hizmet değişikliklerine göre SLB yapılandırmasını yenileyebilir. SLB konsolunda yapılan manuel değişikliklerin üzerine yazılabilir.
service.k8s.alibaba/resourcesveyaservice.k8s.alibaba/nlbsonlandırıcısını (finalizer) silmeyin veya değiştirmeyin. Bu işlem, CLB veya NLB kaynaklarının düzgün şekilde geri kazanılmasını engelleyebilir.Cloud Controller Manager v2.5.0 veya sonraki sürümlerde, Hizmet oluştururken bir CLB örneği belirtmek için izin listesine alınma gereklidir. Kota Merkezi üzerinden bir istek gönderin.
Bir Type=LoadBalancer Hizmeti başka bir türe dönüştürülürse, CCM SLB yapılandırmalarını siler. Hizmet, SLB örneği üzerinden erişilemez hale gelir.
ACK tarafından yönetilen SLB örneklerinin yapılandırmalarını SLB konsolunda değiştirmeyin. Yaptığınız değişiklikler kaybolabilir ve Hizmet erişilemez hale gelebilir.
Server Load Balancer
CCM, her bir
Type=LoadBalancerHizmeti için bir SLB örneği oluşturur. Varsayılan kota 60 CLB ve 60 NLB örneğidir. Bu kotayı artırmak için Kota Merkezi konsoluna giriş yapın ve başvuru gönderin.-
CCM, Hizmet yapılandırmasına göre ECS örneklerini veya Elastik Ağ Arayüzlerini (ENI) SLB arka sunucu grubuna ekler ve her targetPort için ayrı bir sunucu grubu oluşturur. Kota sınırlamaları:
Arka sunucu sayısı: Bir CLB örneği en fazla 200 arka sunucuyu destekler; bir NLB örneği ise ECS, ENI veya IP tabanlı en fazla 400 sunucuyu destekler. Kota formülü: arka sunucu sayısı × targetPort sayısı. Kotayı artırmak için önceden Kota Merkezi konsoluna giriş yapın ve başvuru gönderin.
Örnek başına sunucu grubu eklemeleri: Bir ECS örneği veya ENI, en fazla 50 CLB arka sunucu grubuna ve 200 NLB arka sunucu grubuna eklenebilir. Bu sınırı artırmak için Kota Merkezi konsoluna giriş yapın ve başvuru gönderin.
Rolling güncellemeler sırasında ekstra kota: Eski pod'lar yok edilmeden önce yeni pod'lar oluşturulur ve bu durum beklenenden daha fazla kota tüketimine neden olabilir. Yeterli kotayı önceden ayırın.
CCM, Hizmet portlarına göre dinleyiciler oluşturur. Varsayılan limit, CLB veya NLB örneği başına 50 dinleyicidir. Daha fazla eklemek için Kota Merkezi konsoluna giriş yapın ve başvuru gönderin.
-
CLB sınırları ve NLB sınırları konularına bakın.
SLB kotalarını Server Load Balancer kota yönetimi sayfasından sorgulayabilirsiniz.
Uygulama dağıtma
LoadBalancer Hizmetinin arka planında çalışacak durum bilgisi tutmayan bir NGINX uygulaması dağıtın.
ACK konsolunu kullanma
ACK konsoluna giriş yapın. Sol gezinme bölmesinde Clusters seçeneğine tıklayın.
Clusters sayfasında küme adınıza tıklayın. Sol bölmede Workloads > Deployments seçeneklerini belirleyin.
-
Deployments sayfasında Create from Image seçeneğine tıklayın ve Dağıtımı yapılandırın:
Basic Information sayfasında Name alanına
my-nginxdeğerini girin ve Next seçeneğine tıklayın.-
Container sayfasında görüntüyü ve portu yapılandırın:
Parameter
Value
Image Name
Select images seçeneğine tıklayın. Artifact Center sekmesindenginxarayın ve openanolis/nginx seçeneğini belirleyin. Select Image Tag seçeneğine tıklayarak bir etiket ayarlayın ve OK seçeneğine tıklayın.
Port
Name:nginx, Container Port:80 Advanced sayfasında varsayılan ayarları koruyun ve Create seçeneğine tıklayın.
kubectl kullanma
-
Aşağıdaki içeriğe sahip
my-nginx.yamladlı bir dosya oluşturun:apiVersion: apps/v1 kind: Deployment metadata: name: my-nginx # Deployment name labels: app: nginx spec: replicas: 2 # Number of pod replicas selector: matchLabels: app: nginx # Must match the selector in the Service template: metadata: labels: app: nginx spec: # nodeSelector: # env: test-team containers: - name: nginx image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 ports: - containerPort: 80 -
Uygulamayı dağıtın:
kubectl apply -f my-nginx.yaml -
Dağıtımın hazır olduğunu doğrulayın:
kubectl get deployment my-nginxBeklenen çıktı:
NAME READY UP-TO-DATE AVAILABLE AGE my-nginx 2/2 2 2 50s
2. Adım: Otomatik oluşturulan yük dengeleyici ile uygulamayı yayınlama
type: LoadBalancer türünde bir hizmet oluşturarak uygulamanızı hem ACK konsolu hem de kubectl kullanarak yayınlayabilirsiniz.
11 Eylül 2025 tarihinden itibaren, konsol aracılığıyla Classic Load Balancer (CLB) türünde bir Hizmet oluşturmak için izin listesi erişimi gereklidir. Konsolda CLB türünde bir Hizmet oluşturmadan önce, Kota Merkezi'nde "Console-based creation of a CLB-type Service" için ayrıcalık kotası başvurusu yapın (kota kimlikleri: ack.white_list / ack.create_clb_service). Başvurunuz onaylandıktan sonra konsolda CLB türünde bir Hizmet oluşturabilirsiniz. Daha fazla bilgi için ürün değişikliği duyurusuna bakın.
Konsol
ACK konsoluna giriş yapın. Sol gezinme bölmesinde Clusters seçeneğine tıklayın.
Clusters sayfasında kümenizin adına tıklayın. Sol gezinme bölmesinde seçeneklerini belirleyin.
-
Services sayfasında Create seçeneğine tıklayın. Create Service iletişim kutusunda hizmet parametrelerini ayarlayın.
Parameter
Description
Example
Name
Hizmet için bir ad girin.
my-nginx-svc
service type
Farklı türdeki ve kaynaklardaki istemcilerden gelen erişimi işlemek için bir hizmet türü seçin. Bir hizmet aşağıdaki ağ modlarını destekler:
Hizmet türü olarak Server Load Balancer seçeneğini belirleyin.
Yük dengeleyici türü olarak CLB seçeneğini belirleyin ve Create Resource seçeneğini işaretleyin.
Create CLB Instance açılır bölümünde ayarları ihtiyacınıza göre düzenleyin. Billing Method alanını Pay-by-specification olarak ayarlayın.
External Traffic Policy
Node Port veya Server Load Balancer hizmet türünü seçtikten sonra External Traffic Policy yapılandırmasını yapabilirsiniz. Daha fazla bilgi için Hizmetleri yönetme konusuna bakın.
Local: Trafik yalnızca aynı düğümdeki pod'lara gider.
Cluster: Trafik, kümedeki diğer düğümlerdeki pod'lara yönlendirilebilir.
Local
Backend
Hizmete bağlanacak arka plan uygulamasını seçin. Bir dağıtım ilişkilendirmezseniz sistem Endpoints nesneleri oluşturmaz. Daha fazla bilgi için services-without-selectors konusuna bakın.
Name: app
Value: nginx
Port Mapping
Bir hizmet portu (Hizmet YAML dosyasındaki
portalanına karşılık gelir) ve bir konteyner portu (Hizmet YAML dosyasındakitargetPortalanına karşılık gelir) ekleyin. Konteyner portu, arka plandaki pod tarafından açılan portla eşleşmelidir.Service Port: 80
Container Port: 80
Protocol: TCP
annotations
Yük dengeleyici parametrelerini yapılandırmak için hizmete bir açıklama (annotation) ekleyin. Daha fazla parametre için Açıklamalar kullanarak CLB yapılandırma ve Açıklamalar kullanarak NLB yapılandırma konularına bakın.
ÖnemliKümenin API Server yük dengeleyici örneğini yeniden kullanmayın. Aksi takdirde kümeye erişim kesintiye uğrayabilir.
Bu örnekte, hizmetin genel ağ trafiği bant genişliği bazında ücretlendirilir ve trafiği kontrol etmek için tepe bant genişliği 2 Mbit/s olarak ayarlanır. Açıklamalar şu şekildedir:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-charge-type: paybybandwidthservice.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth: 2
labels
Hizmeti tanımlamak için bir etiket ekleyin.
None
Service Deletion Protection
Kritik iş süreçlerini destekleyen veya hassas verileri işleyen hizmetler için silme korumasını etkinleştirin. Bu, yanlışlıkla silinmeleri önler ve bakım maliyetlerini azaltır. Silme korumasını etkinleştirdikten sonra, kaynağı silmeden önce bu özelliği manuel olarak devre dışı bırakmanız gerekir.
NotBu özelliği kullanmak için Container Security Policy eklentisinden policy-template-controller ve gatekeeper bileşenlerini yükleyin. Bileşenleri dağıtmak için Install Now seçeneğine tıklayın.
Disabled
Parametreleri yapılandırdıktan sonra OK seçeneğine tıklayın.
-
Hizmet oluşturulduktan sonra, ayrıntılar sayfasına gitmek için adına tıklayın. Basic Information bölümünde, örnek uygulama erişimi sağlamak için hizmetin External IP adresine (örneğin
39.106.XX.XX:80) tıklayın.
Kubectl
-
Örnek hizmet için aşağıdaki içeriğe sahip my-nginx-svc.yaml adlı bir dosya oluşturun.
selector değerini, my-nginx.yaml örnek uygulama dosyasındaki matchLabels değeriyle (bu örnekte
app: nginx) eşleştirin. Bu işlem, hizmeti arka plan uygulamasıyla ilişkilendirir.apiVersion: v1 kind: Service metadata: labels: app: nginx name: my-nginx-svc namespace: default spec: ports: - port: 80 protocol: TCP targetPort: 80 selector: app: nginx type: LoadBalancer -
Hizmeti uygulayın:
kubectl apply -f my-nginx-svc.yaml -
Hizmetin bir dış IP adresine sahip olduğunu doğrulayın:
kubectl get svc my-nginx-svcBeklenen çıktı:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE my-nginx-svc LoadBalancer 172.21.5.82 39.106.XX.XX 80:30471/TCP 5m -
Uygulamaya erişin:
curl <YOUR-EXTERNAL-IP> # Replace with the external IP from the previous stepBeklenen çıktı:
<!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> ... </html>
Classic Load Balancer (CLB)
Create CLB Instance
Classic Load Balancer (CLB) oluştururken CLB örneği oluşturma talimatlarını izleyin. Daha fazla bilgi için CLB örnekleri oluşturma ve yönetme konusuna bakın.
Name | Description |
Name | CLB için özel bir ad girin. |
Access Method | Public Access veya Internal Access seçeneğini belirleyin. |
Billing Method | Pay-by-specification veya Pay-as-you-go (Pay-by-CU) seçeneğini belirleyin. Daha fazla bilgi için CLB faturalandırmasına genel bakış konusuna bakın. |
IP Version | IPv4 veya IPv6 seçeneğini belirleyin. Önemli IPv6 kullanmak için ACK küme bölgenizin IPv6 CLB örneklerini desteklediğinden emin olun. IPv6 CLB'yi destekleyen bölgeler için CLB tarafından desteklenen bölgeler konusuna bakın. |
Scheduling Algorithm | Desteklenen algoritmalar round robin (RR) ve weighted round robin (WRR)'dir. RR (varsayılan): Harici istekleri arka sunuculara sırayla dağıtır. WRR: Daha yüksek ağırlığa sahip arka sunucular daha fazla istek alır. |
Access Control | Dinleyici düzeyinde erişim kontrolü sağlar. Daha fazla bilgi için Erişim kontrolü konusuna bakın. |
Health Check | TCP ve HTTP protokollerini destekler. Sağlık kontrollerini etkinleştirdikten sonra, arka sunucu kullanılabilirliğini belirlemek için bunları kullanın. Daha fazla bilgi için CLB sağlık kontrolü konusuna bakın. |
Others | CLB'yi açıklamalar (annotations) kullanarak yapılandırın. Daha fazla bilgi için Açıklamalar kullanarak CLB yapılandırma konusuna bakın. |
Use Existing Resource
Açılır listeden mevcut bir Classic Load Balancer (CLB) örneği seçin. Mevcut dinleyicilerin zorla üzerine yazılması seçeneğini de belirleyebilirsiniz. Daha fazla bilgi için Mevcut yük dengeleyici kullanma ve mevcut dinleyicilerin üzerine zorla yazma konusuna bakın.
CLB örneklerinin yeniden kullanılması belirli sınırlamalara ve dikkat edilmesi gereken hususlara tabidir. Daha fazla bilgi için Hangi Server Load Balancer'lar yeniden kullanılabilir? konusuna bakın.
Configure Resources
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Network Load Balancer (NLB)
Create NLB Instance
Network Load Balancer (NLB) kaynağı oluşturabilirsiniz. Daha fazla bilgi için NLB örnekleri oluşturma ve yönetme konusuna bakın.
Name | Description |
Name | NLB örneği için özel bir ad girin. Bu parametre yalnızca yeni bir NLB örneği oluştururken gereklidir. |
Access Method | İhtiyaca göre Public Access veya Internal Access seçeneğini belirleyin. |
Billing Method | Pay-as-you-go. Daha fazla bilgi için NLB faturalandırması konusuna bakın. |
IP Version | İhtiyaca göre IPv4 veya DualStack seçeneğini belirleyin. |
Scheduling Algorithm | Bir zamanlama algoritması seçin.
|
Health Check | Sağlık kontrollerini etkinleştirin veya devre dışı bırakın.
|
Others | NLB örneğini açıklamalar (annotations) kullanarak da yapılandırabilirsiniz. Daha fazla bilgi için Açıklamalar kullanarak NLB örneği yapılandırma konusuna bakın. |
VPC | Küme için varsayılan VPC'nin bölgesi ve kimliği. |
vSwitch | Kümenin varsayılan VPC'sindeki desteklenen bir alan için sanal anahtar seçin. Yeni bir tane oluşturmak için Create vSwitch seçeneğine de tıklayabilirsiniz. |
Use Existing Resource
Açılır listeden mevcut bir NLB örneği seçin. Mevcut dinleyicinin zorla üzerine yazılması seçeneğini de belirleyebilirsiniz. Daha fazla bilgi için Mevcut Server Load Balancer örneği kullanma konusuna bakın.
NLB örneğinin yeniden kullanılması belirli sınırlamalara tabidir. Daha fazla bilgi için Hangi Server Load Balancer örnekleri yeniden kullanılabilir? konusuna bakın.
Configure Resources
Name | Description |
Scheduling Algorithm | Bir zamanlama algoritması seçin.
|
Health Check | Sağlık kontrollerini etkinleştirin veya devre dışı bırakın.
|
Others | NLB örneğini açıklamalar (annotations) kullanarak da yapılandırabilirsiniz. Daha fazla bilgi için Açıklamalar kullanarak NLB örneği yapılandırma konusuna bakın. |
VPC | Küme için varsayılan VPC'nin bölgesi ve kimliği. |
vSwitch | Kümenin varsayılan VPC'sindeki desteklenen bir alan için sanal anahtar seçin. Yeni bir tane oluşturmak için Create vSwitch seçeneğine de tıklayabilirsiniz. |
Sonraki adımlar
Bir hizmeti görüntülemeniz, güncellemeniz veya silmeniz ya da hizmet silme korumasını etkinleştirmeniz gerekiyorsa aşağıdaki işlemleri gerçekleştirebilirsiniz. Örneğin, hizmetle ilişkili genel ağa açık yük dengeleyiciyi değiştirebilirsiniz.
Bir Hizmeti sildiğinizde veya türünü LoadBalancer türünden başka bir türe değiştirdiğinizde, otomatik olarak oluşturulan yük dengeleyici örneği otomatik olarak serbest bırakılır. Yük dengeleyici örneğini korumak istiyorsanız service.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-lb-on-delete ek açıklamasını kullanın. Daha fazla bilgi için Hizmeti sildiğinizde otomatik olarak oluşturulan yük dengeleyici örneğini koruma konusuna bakın (Bu hem CLB hem de NLB için geçerlidir).
Konsol
ACK konsoluna giriş yapın. Sol gezinme bölmesinde Clusters seçeneğine tıklayın.
Clusters sayfasında kümenizin adına tıklayın. Sol gezinme bölmesinde seçeneklerini belirleyin.
Services sayfasında hedef hizmeti bulun ve ardından hizmet için güncelleme yapmak üzere Update seçeneğine veya Actions sütunundaki
simgesine tıklayın. Ayrıca hizmeti Delete veya Enable Deletion Protection işlemlerini de gerçekleştirebilirsiniz.
Kubectl
Hizmeti güncelleme
-
Yöntem 1: Hizmeti güncellemek için aşağıdaki komutu çalıştırın.
kubectl edit service my-nginx-svc -
Yöntem 2: YAML dosyasını değiştirin ve değişiklikleri uygulayın.
kubectl apply -f my-nginx-svc.yaml
Hizmeti görüntüleme
Hizmeti görüntülemek için aşağıdaki komutu çalıştırın.
kubectl get service my-nginx-svc
Beklenen çıktı:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
my-nginx-svc LoadBalancer 172.21.XX.XX 192.168.XX.XX 80:31599/TCP 5m
Hizmeti silme
Hizmeti silmek için aşağıdaki komutu çalıştırın.
kubectl delete service my-nginx-svc