2017-06-13 70 views
5

編輯:我設置的整點是實現(如果可能)以下:分配外部IP的Kubernetes服務

  • 我有多個K8S節點
  • 當我聯繫的IP地址(來自我公司的網絡),它應該被路由到我的容器/ pod/service /其中之一。
  • 我應該能夠輕鬆地設置該IP(就像我的服務.yml定義)

我正在爲了一個小Kubernetes羣(帶內置kubeadm)來評估,如果我可以移動我的碼頭工人(舊)羣設置爲k8s。我絕對需要的功能是將IP分配給容器的功能,就像我使用MacVlan一樣。

在我目前的泊塢窗的設置,我使用MacVlan指定由我公司的網絡,一些容器IP地址,這樣我就可以直接到達(不反向代理)一樣,如果它是任何物理服務器。我正在努力實現與k8s類似的東西。

我發現:

  • 我不得不使用服務
  • 我不能使用負載平衡器類型,因爲它是唯一兼容的雲服務提供商(如GCE或AWS)。
  • 我應該使用ExternalIPs
  • 入口資源是某種反向代理?

我YAML文件是:

apiVersion: apps/v1beta1 
kind: Deployment 
metadata: 
     name: nginx-deployment 
spec: 
    template: 
    metadata: 
     labels: 
     app: nginx 
    spec: 
     containers: 
     - name: nginx 
     image: nginx:1.7.9 
     ports: 
     - containerPort: 80 
     nodeSelector: 
     kubernetes.io/hostname: k8s-slave-3 
--- 
kind: Service 
apiVersion: v1 
metadata: 
    name: nginx-service 
spec: 
    type: ClusterIP 
    selector: 
    app: nginx 
    ports: 
    - name: http 
     protocol: TCP 
     port: 80 
     targetPort: 80 
    externalIPs: 
    - A.B.C.D 

我跳,我的服務會得到IP A.B.C.D(這是我公司的網絡之一)。我的部署正在工作,因爲我可以使用它的ClusterIP從k8s羣集內部到達我的nginx容器。

我缺少什麼?或者至少,我在哪裏可以找到關於我的網絡流量的信息,以查看數據包是否即將到來?

編輯

$ kubectl get svc 
NAME   CLUSTER-IP  EXTERNAL-IP  PORT(S) AGE 
kubernetes  10.96.0.1  <none>   443/TCP 6d 
nginx-service 10.102.64.83 A.B.C.D   80/TCP 23h 

感謝。

+0

您確定外部IP提到路由到k8s羣集節點嗎?另外,當你運行kubectl獲得服務時,你會看到什麼? –

+0

你可以嘗試不指定'type:ClusterIP' –

+0

我增加了'kubectl get svc'輸出爲EDIT。刪除'type:ClusterIP'不會改變任何東西,因爲它是默認值。如何檢查流量是否進入我的羣集?在'kube-proxy'中? –

回答

0

您可以嘗試在服務的yaml文件中添加「type:NodePort」,然後您將有一個端口通過Web瀏覽器或從外部訪問它。對我而言,這有幫助。

相關問題