為 kubernetes 中的 pod 指派靜態公用 ip 並在服務中指定

為 kubernetes 中的 pod 指派靜態公用 ip 並在服務中指定

按照關聯,我們可以創建具有多個網路的 Pod,如果應用程式使用非預設網路(eth2,3 等)打開端口,我們如何將其公開為服務?在服務 yaml 中,除了預設值之外,我沒有找到任何公開服務的方法。

答案1

Multus 可讓您將網路裝置連接到 Pod,但我們應該注意這些介面不是 Kubernetes 叢集 SDN 的一部分。

對於基於 Multus 的裝置:您可以將 IP 指派給您的 Pod,可以使用 DHCP、靜態 IP…由您決定。請記住,這些位址獨立於您的 Kubernetes SDN。

如果該叢集中的其他容器需要連接這些端點,那麼它們的流量將離開您的 SDN,透過其常用的預設網關,而預設網關又應該了解(路由到)您的 Multus 位址子網路。

但是,您仍然可以建立服務,指定 SDN 以外的位址。這可以透過建立一個 Endpoints 物件以及您的服務來完成,例如:

---
apiVersion: v1
kind: Endpoints
metadata:
  name: svc-out-sdn
  namespace: ns
subsets:
- addresses:
  - ip: 10.0.0.1
  ports:
  - name: tcp-80
    port: 80
    protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
  name: svc-out-sdn
  namespace: ns
spec:
  clusterIP: None
  ports:
  - name: tcp-80
    port: 80

相關內容