Google Kubernetes Engine'de bir Kubernetes yük dengeleyicinin harici IP adresi nasıl seçilir


16

Google Kubernetes Engine kullanarak bir web uygulaması dağıtıyorum ve Google Cloud Platform'da aynı projenin bir parçası olarak kontrol ettiğim mevcut bir statik IP adresindeki bir yük dengeleyici aracılığıyla erişilebilir hale getirmek istiyorum, çünkü kullanmak istediğim etki alanı adı zaten bu IP'yi gösteriyor.

Kapsül için kullandığım yaml dosyası:

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
  labels:
    app: my-app
spec:
  containers:
  - name: my-container
    image: gcr.io/my-project/my-app:latest

Aşağıdakileri kullanarak bir yük dengeleyici kurabilirim:

apiVersion: v1
kind: Service
metadata:
  name: my-load-balancer
spec:
  ports:
  - port: 80
    targetPort: 80
  selector:
    app: my-app
  type: LoadBalancer

Bu, uygulamanın erişilebilir olduğu harici bir IP sağlar, ancak istediğim IP'yi kullanacak şekilde yapılandırmanın herhangi bir yolunu bulamıyorum. Hizmetler belgeler bir spec.clusterIP ayarı bahseder, ancak bu dış IP'ye ilişkilendirmek görünmüyor. Aynı şekilde, yük dengeleyici ayarlandıktan sonra, hizmetin status.loadBalancer.ingress.ip alanı harici IP adresine ayarlanır, ancak bu yapılandırılabilir bir ayar gibi görünmemektedir.

Alternatif olarak, trafiği statik IP adresimden Kubernetes tarafından ayarlanan hedef havuza yönlendirmek için Google Compute Engine konsolunda manuel olarak bir yönlendirme kuralı oluşturmayı denedim, ancak bağlanmaya çalıştığımda bağlantı reddedildi.

İstediğimi yapmanın herhangi bir yolu var mı - Google Kubernetes motorunda bir Kubernetes bölmesini (veya çoğaltma denetleyicisini) seçilen bir statik IP adresine maruz bırakmak?

Yanıtlar:


9

TL; Kubernetes v1.1 çalıştıran DR Google Container Engine loadBalancerIP, otomatik olarak atanan IP'yi önce statik olarak işaretlemeyi destekler .

Kubernetes v1.1 harici IP'leri destekler :

apiVersion: v1
kind: Service
spec:
  type: LoadBalancer
  loadBalancerIP: 10.10.10.10
  ...

Şimdiye kadar, GCE'de nasıl kullanılacağı hakkında gerçekten iyi ve tutarlı bir dokümantasyon yok. Kesin olan, bu IP'nin önce önceden ayrılmış statik IP'lerinizden biri olması gerektiğidir .

Çapraz bölge yük dengeleme dokümantasyon Bilişim Altyapısı olup Kubernetes / Konteyner Engine için çoğunlukla, ama yine de yararlıdır özellikle bir parçası "Yapılandırma hizmetini dengeleme yük".

GCE üzerinde sadece bir Kubernetes LoadBalancer oluşturursanız, kümenizdeki makinelerinizden yapılmış bir hedef havuzunu işaret eden bir ağ Compute Engine> Ağ> Ağ yük dengeleme> Yönlendirme Kuralı oluşturur (normalde yalnızca servis seçiciyle eşleşen Pod'ları çalıştıranlar) . Bir ad alanının silinmesi, oluşturulan bu kuralları güzel bir şekilde temizlemiyor gibi görünüyor.


Güncelleme

Aslında desteklenmektedir (belgelenmiş olsa bile):

  1. Kubernetes 1.1 veya üstünü çalıştırdığınızı kontrol edin ( GKE altında kümenizi düzenleyin ve "Düğüm sürümü" nü kontrol edin)
  2. Ağ Oluşturma> Harici IP adresleri altında , kümenizin VM örneğini işaret eden bazı Geçici sürümlere zaten sahip olmalısınız (eğer değilse veya emin değilseniz, bir kez olmadan dağıtın loadBalancerIP, çalıştırdığınızda harici bir IP tahsis edilene kadar bekleyin kubectl get svcve bu IP'yi listesi). Olarak bunlardan birini işaretleyin statik izin takımından söylemek Harici Adres olduğunu 10.10.10.10.
  3. Senin Düzenleme LoadBalancer olması loadBalancerIP=10.10.10.10yukarıdaki gibi (Google tarafından size verilen IP uyum).

Şimdi LoadBalancer'ınızı ve hatta ad alanınızı silerseniz, o kümede yeniden dağıtım yaptıktan sonra IP adresini korumalıdır. Kümeyi değiştirmeniz gerekiyorsa, bazı manuel işlemler mümkün olmalıdır:

  1. Altında bölümünde “Hedef havuzları” sekmesi “Ağ yük dengeleme” düğmesine “hedef havuzu oluşturma” tıklayın:
    • Ad: cluster-pool(veya başka bir ad)
    • Bölge: Kümelerinizden birinin bölgesini seçin
    • Sağlık Kontrolü: İsterseniz, isteğe bağlı
    • Mevcut örnek gruplarını seçin: Kubernetes kümeniz
  2. Altında sekmesi “kuralları Yönlendirme” bolum “Ağ yük dengeleme” , “yönlendirme kuralı oluşturma” düğmesine tıklayın:
    • Ad: http-cross-region-gfr(veya başka bir ad)
    • Bölge: Kümelerinizden birinin bölgesini seçin
    • Harici IP: loadbalancer-ip-crossregionYeni ayırdığınızı seçin
    • Hedef havuzu: cluster-poolYeni oluşturduğunuz seçin

Bunlar hala alakalı mı?
Ben

8

İyi haberler. Bu, Kubernetes v1.1'de düzeltilecektir. service.spec.loadBalancerIPAlanı, sahibi olduğunuzu bildiğiniz bir IP'ye ayarlayabilirsiniz .


Önceki:

Bu, çatlaklardan düşen bir özelliktir. Çalışması gerekiyordu (ve hatta bir noktada çalışmış olabilir), ancak iyi test edilmedi ve yol boyunca kırıldı ve sonra yanlışlıkla (geçici olarak) tasarlandı.

1.0'dan sonra düzeltilecek şeyler için kısa listemde.

https://github.com/GoogleCloudPlatform/kubernetes/issues/10323


Bu muhtemelen bir yorum olmalı, cevap değil.
Ward - Monica'yı eski

5
@Ward: dev gelen "Bu mümkün değil" ise , IMHO bir cevap, ve böyle olarak kabul edilmiştir.
Sven
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.