1

我在想如何創建多個共享IP的入口資源。 或者,如果這是不可能的,我想知道是否有某種轉發 規則我可以​​使用與雲DNS項目,確保所有流量 IP(我可以使靜態)去到一個kubernetes集羣。設置多個入口,服務,部署資源和雲端DNS

基本上我想設置一個入口,每個服務包含一個或多個子域,並且所有這些入口指向同一個羣集。現在 我得到一個不同的短暫的IP與每個入口。我可以創建一些轉發 規則,指向一個靜態IP的所有流量轉到羣集,然後 創建一個通配符DNS條目,將所有子域指向靜態IP?

下面是類似我使用的是什麼比如說配置:

apiVersion: v1 
kind: Service 
metadata: 
    name: api-service 
    labels: 
    name: api-service 
spec: 
    type: NodePort 
    ports: 
    - port: 80 
     targetPort: 3000 
     protocol: TCP 
    selector: 
    name: api-deployment 
--- 
apiVersion: extensions/v1beta1 
kind: Deployment 
metadata: 
    name: api-deployment 
    labels: 
    name: api-deployment 
spec: 
    template: 
    metadata: 
     labels: 
     name: api 
    spec: 
     containers: 
     - image: us.gcr.io/[project]/hello-world:1.0.0 
      name: api 
      ports: 
      - containerPort: 3000 
      env: 
      - name: NAME 
       value: api 
--- 
apiVersion: extensions/v1beta1 
kind: Ingress 
metadata: 
    name: api-ingress 
spec: 
    backend: 
    serviceName: api-service 
    servicePort: 80 
    rules: 
    - host: api.example.com 
    http: 
     paths: 
     - backend: 
      serviceName: api-service 
      servicePort: 80 

我一個KUBE羣集上創建這些資源,像這樣:

$ kubectl create -f api.yml 

再看到像這樣創建的入口:

$ kubectl get ing 
NAME    RULE    BACKEND   ADDRESS   AGE 
api-ingress  -    api-service:80 130.211.32.223 1h 
        api.example.com 
            api-service:80 

現在,想象你複製上面的yaml並更改服務,部署a nd 將入口名稱添加到api-2並創建它們。你想最終是這樣的:

$ kubectl get ing 
NAME    RULE    BACKEND   ADDRESS   AGE 
api-ingress  -    api-service:80 130.211.32.223 1h 
        api.example.com 
            api-service:80 
api-2-ingress  -    api-2-service:80 130.211.22.214 1h 
        api-2.example.com 
            api-2-service:80 

這很好......但我需要確保所有流量* .example.com的進入到 集羣,入節點可以做他們的魔法和路由請求權 服務。

我知道我可以創建一個入口資源並修補該入口,而不是創建一個新入口,但我試圖避免這種情況,並希望能夠爲每個服務創建一個。

這是可能以某種方式?

相關:https://github.com/kubernetes/kubernetes/issues/26935

+0

如果靜態IP解決了您的問題,只保留您的項目地址。 https://cloud.google.com/sdk/gcloud/reference/compute/addresses/create –

+0

@VikramTiwari你的意思是採用入口使用的那些短暫的IP之一,對吧?如果是這樣,問題是我將繼續添加具有不同IP的入口,並且這些入口不會與* .example.com通配符DNS記錄相關聯。或者我錯過了什麼? – luisgo

+0

一旦擁有靜態IP,您就可以在集羣的負載平衡器上使用它,並因此保持產生新的入口並將其添加到負載均衡器。 http://stackoverflow.com/questions/32266053/how-to-specify-static-ip-address-for-kubernetes-load-balancer –

回答

1

每個入口資源將有一個單獨的IP。如果您需要在域之間共享單個IP,則需要在同一個入口資源中配置兩個域。如果您不想直接在命令行上進行修補,請嘗試kubectl edit

+0

是的。這似乎是這種情況。我明白。我想知道的是,如果有一種方法可以在此設置之上添加以解決此限制。也許某種路由規則將所有流量發送到靜態IP到特定的目標池。即使我必須在kubernetes以外直接通過計算來做到這一點。這樣我可以有一個通配符DNS入口點到靜態IP和轉發到羣集的規則。 – luisgo

+1

您可以爲一個ip地址配置一個雲L3負載均衡器,並將它的流量導向一個執行L7平衡的nginx或apache服務器池。 –