一、說明
在 Kubernetes 中,有幾種不同的方式可以將服務(Service)暴露給外部流量。這些方式通過定義服務的 spec.type 字段來確定。
二、詳解
1. ClusterIP
定義:默認類型,服務只能在集群內部訪問。
作用:通過集群內部 IP 地址暴露服務。
示例:
spec:type: ClusterIPports:- port: 80targetPort: 8080
2.NodePort
定義:在每個節點上開放一個高端口(通常是 30000-32767),允許外部流量訪問服務。
作用:通過任意節點的 IP 地址和 nodePort 訪問服務。
示例:
spec:type: NodePortports:- port: 80targetPort: 8080nodePort: 30007
3. LoadBalancer
定義:云平臺提供的負載均衡器會為服務分配一個外部 IP 地址。
作用:通過該 IP 地址訪問服務,適合需要外部流量負載均衡的情況。
示例:
spec:type: LoadBalancerports:- port: 80targetPort: 8080selector:app: my-app
4. ExternalName
定義:將服務映射到一個外部域名(例如數據庫服務)。
作用:通過指定的外部域名訪問服務,而不是通過集群內部 IP 或節點 IP。
示例:
spec:type: ExternalNameexternalName: example.com
二、總結
ClusterIP:默認的服務類型,僅在集群內部可訪問。
NodePort:在每個節點上開放一個端口,允許外部流量訪問服務。
LoadBalancer:云平臺提供的負載均衡器分配一個外部 IP 地址,適合需要負載均衡的情況。
ExternalName:將服務映射到一個外部域名,適用于需要訪問外部服務的場景。