2017-04-03 54 views
1

因此,我將Kubernetes用於一個側面項目,它很棒。運行像我這樣的小項目會更便宜(一個3-5個實例的小羣集基本上給我提供了我需要的所有東西,每個月花費約30美元)。在沒有GCP負載平衡器的情況下創建kubernetes nginx入口

我唯一需要努力的地方就是嘗試使用kubernetes Ingress資源來映射到羣集中,然後扇出我的微服務(它們是小型Go或Node後端)。我有入口的配置設置映射到不同的服務,這裏沒有問題。

據我所知,在創建入口資源時,您可以非常容易地讓GCP啓動LoadBalancer。這很好,但它也代表了另外20美元/月,這增加了項目的成本。一旦/如果這件事情得到了一些牽引力,可忽略,但現在,也爲便於理解Kubernetes更好,我想將做到以下幾點:

  • 得到GCP靜態IP,
  • 使用它瓦特/入口資源
  • 主機負載均衡在同一個集羣中(使用nginx的負載平衡器)
  • 避免對外部負載平衡器

支付有什麼辦法這甚至可以用Kub來完成ernetes和入口資源?

謝謝!

+0

高興,如果需要張貼我現有CONFIGS - 只是好奇,第一,如果這是連東西,你可以做:) – markthethomas

+0

更不用說許多K8s工具將不活動的負載均衡器放在後面,對我而言,每月僅爲無用的負載均衡器增加30美元。 –

回答

2

是的,這是可能的。部署您的入口控制器,並使用NodePort服務進行部署。例如:

--- 
apiVersion: v1 
kind: Service 
metadata: 
    name: nginx-ingress-controller 
    namespace: kube-system 
    labels: 
    k8s-app: nginx-ingress-controller 
spec: 
    type: NodePort 
    ports: 
    - port: 80 
    targetPort: 80 
    nodePort: 32080 
    protocol: TCP 
    name: http 
    - port: 443 
    targetPort: 443 
    nodePort: 32443 
    protocol: TCP 
    name: https 
    selector: 
    k8s-app: nginx-ingress-controller 

現在,創建一個DNS條目入口:

apiVersion: extensions/v1beta1 
kind: Ingress 
metadata: 
    name: my-ingress 
spec: 
    rules: 
    - host: myapp.example.com 
    http: 
     paths: 
     - path:/
     backend: 
      serviceName: my-app-service #obviously point this to a valid service + port 
      servicePort: 80 

現在,假設你的靜態IP地址連接到運行KUBE-代理任何kubernetes節點,都DNS更新爲指向靜態IP,您應該可以訪問myapp.example.com:32080,入口會將您映射回您的應用。

一些額外的東西:

如果要使用較低的端口超過32080,然後記住,如果你正在使用CNI網絡,you'll have trouble with hostport。建議在80端口上使用負載均衡器,我想你可以讓nginx設置爲進行代理傳遞,但這會變得很困難。這就是爲什麼推薦你的雲提供商的負載平衡器:)

相關問題