cloud-controller-manager (CCM) bileşeni, türü LoadBalancer olan bir hizmet için otomatik olarak bir yük dengeleyici oluşturur ve yönetir. Yük dengeleyici bir Classic Load Balancer (CLB) veya Network Load Balancer (NLB) olabilir. Bu konuda, LoadBalancer hizmeti kullanarak bir uygulamanın nasıl dışa açılacağını göstermek için örnek olarak bir Nginx uygulaması kullanılır.
Notlar
CCM, yalnızca
Type=LoadBalancertüründeki bir hizmet için yük dengeleyici yapılandırır. Diğer hizmet türleri için yük dengeleyici yapılandırmaz.-
CCM bildirimsel bir API kullanır ve yük dengeleyici yapılandırmasını hizmet tanımına göre otomatik olarak uzlaştırır. Server Load Balancer (SLB) konsolunda yapılan manuel değişikliklerin üzerine yazılabilir.
ÖnemliKubernetes tarafından yönetilen bir yük dengeleyicinin yapılandırmasını Server Load Balancer (SLB) konsolunda manuel olarak değiştirmeyin. Yaptığınız değişikliklerin üzerine yazılabilir ve bu durum hizmetin erişilemez hale gelmesine neden olabilir.
Mevcut bir
LoadBalancertürü hizmet için yük dengeleyiciyi değiştiremezsiniz. Farklı bir yük dengeleyici kullanmak istiyorsanız yeni bir hizmet oluşturmanız gerekir.
Bir hizmetin türünü Type=LoadBalancer türünden Type!=LoadBalancer türüne değiştirirseniz CCM, yük dengeleyiciye eklenen yapılandırmaları siler. Bu durumda hizmet yük dengeleyici üzerinden erişilemez hale gelir.
Kotalar
CCM,
Type=LoadBalancertüründeki her hizmet için bir yük dengeleyici örneği oluşturur. Varsayılan olarak en fazla 60 örneğiniz olabilir. 60'tan fazla örneğe ihtiyacınız varsa Kota Merkezi konsolunda oturum açın ve başvuru gönderin.CCM, hizmette tanımlanan bağlantı noktalarına göre bir dinleyici oluşturur. Varsayılan olarak tek bir yük dengeleyici örneğine en fazla 50 dinleyici ekleyebilirsiniz. Daha fazla dinleyici eklemek için Kota Merkezi konsolunda oturum açın ve başvuru gönderin.
-
Yük dengeleyici kullanım sınırları hakkında daha fazla bilgi için bkz. Sınırlar.
Yük dengeleyici kotalarınızı görüntülemek için bkz. Yük Dengeleyici Kota Yönetimi.
Adım 1: Örnek bir uygulama dağıtın
Aşağıdaki adımlarda uygulamanın kubectl kullanılarak nasıl dağıtılacağı açıklanmaktadır.
-
Aşağıdaki içeriğe sahip my-nginx.yaml adlı bir dosya oluşturun.
apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1 kind: Deployment metadata: name: my-nginx # The name of the sample application. labels: app: nginx spec: replicas: 3 # The number of replicas. selector: matchLabels: app: nginx # The value must match the selector of the Service that is used to expose this application. template: metadata: labels: app: nginx spec: containers: - name: nginx image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest # Replace this with the actual image address in the format: <image_name:tags>. ports: - containerPort: 80 # This port must be exposed in the Service. -
my-nginx uygulamasını dağıtın.
kubectl apply -f my-nginx.yaml -
Uygulamanın çalıştığını doğrulayın.
kubectl get deployment my-nginxÖrnek çıktı:
NAME READY UP-TO-DATE AVAILABLE AGE my-nginx 3/3 3 3 50s
Adım 2: LoadBalancer hizmeti kullanarak uygulamayı dışa açın
LoadBalancer hizmeti oluşturmak ve bir uygulamayı dışa açmak için konsolu ve kubectl kullanabilirsiniz.
Konsol
ACS konsolunda oturum açın. Sol gezinme bölmesinde Clusters seçeneğini tıklayın.
Clusters sayfasında hedef kümenin adını tıklayın. Sol gezinme bölmesinde Network > Services seçeneklerini seçin.
Services sayfasında sol üst köşede bulunan Create seçeneğini tıklayın.
Create Service iletişim kutusunda hizmet parametrelerini ayarlayın.
-
Parametre
Açıklama
Örnek
Name
Hizmet için bir ad girin.
my-nginx-svc
Service Type
Bir hizmet türü seçin. Farklı istemci türleri ve erişim kaynakları için aşağıdaki ağ modları desteklenir:
Hizmet türü olarak Server Load Balancer seçeneğini seçin.
Yük dengeleyici türü olarak CLB seçeneğini seçin ve Create Resource seçeneğini belirleyin.
Create CLB Instance açılır bölümünde ayarları gerektiği gibi düzenleyin. Billing Method değerini Pay-by-specification olarak ayarlayın.
External Traffic Policy
External Traffic Policy ayarını yalnızca Server Load Balancer değeri Server Load Balancer olarak ayarlandığında yapabilirsiniz.
Local: Trafik yalnızca trafiği alan düğümdeki Pod'lara yönlendirilir.
Cluster: Trafik kümedeki diğer düğümlerdeki Pod'lara iletilebilir.
Local
Backend
Hizmete bağlanacak arka uç uygulamasını seçin. Bir dağıtımı ilişkilendirmezseniz sistem Endpoints nesneleri oluşturmaz. Daha fazla bilgi için bkz. services-without-selectors.
Ad: app
Değer: nginx
Port Mapping
Bir hizmet bağlantı noktası (hizmet YAML dosyasındaki
portalanına karşılık gelir) ve bir konteyner bağlantı noktası (hizmet YAML dosyasındakitargetPortalanına karşılık gelir) ekleyin. Konteyner bağlantı noktası arka uç pod'u tarafından dışa açılan bağlantı noktasıyla eşleşmelidir.80
Annotations
Yük dengeleyici parametrelerini yapılandırmak için hizmete bir ek açıklama (Annotation) ekleyin. Daha fazla bilgi için bkz. Classic Load Balancer'ı (CLB) yapılandırmak için ek açıklamaları kullanma.
ÖnemliKümenin API Sunucusunun yük dengeleyici örneğini yeniden kullanmayın. Aksi takdirde kümeye erişilemeyebilir.
Bu örnekte hizmetin faturalandırma yöntemi bant genişliğine göre ödeme olarak ayarlanmış ve trafiği kontrol etmek için bant genişliği 2 Mbit/s ile sınırlandırılmıştır. Ek açıklamalar aşağıdaki gibidir:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-charge-type: paybybandwidthservice.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth: 2
Label
Hizmeti tanımlamak için bir etiket ekleyin.
Yok
kubectl
-
Aşağıdaki içeriğe sahip my-nginx-svc.yaml adlı bir dosya oluşturun.
Hizmet bildirimindeki
selectoralanının değerinin (bu örnekteapp: nginx) arka uç Deployment'dakimatchLabelsalanının değeriyle eşleştiğinden emin olun. Bu işlem hizmeti arka uç Deployment ile 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 harici bir IP adresine sahip olduğunu onaylayı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>