一、Service核心概念
Service通過標簽選擇器(Label Selector)關聯Pod,為動態變化的Pod集合提供穩定的虛擬IP和DNS名稱,主要解決:
- 服務發現
- 負載均衡
- 流量路由
二、Service類型詳解
1. ClusterIP(默認類型)
作用:創建僅供集群內部訪問的虛擬IP
使用場景:
- 數據庫服務(如MySQL/Redis)
- 微服務間內部通信
- 不需要外網訪問的后端服務
示例配置片段:
apiVersion: v1
kind: Service
metadata:name: internal-service
spec:type: ClusterIPselector:app: backendports:- protocol: TCPport: 80targetPort: 9376
2. NodePort
作用:通過節點IP+靜態端口(30000-32767)暴露服務
使用場景:
- 開發測試環境
- 非生產環境的臨時訪問
- 需要直連節點的特殊場景
示例配置片段:
apiVersion: v1
kind: Service
metadata:name: nodeport-service
spec:type: NodePortselector:app: frontendports:- protocol: TCPport: 80targetPort: 80nodePort: 30007
3. LoadBalancer
作用:自動創建云平臺負載均衡器并分配外部IP
使用場景:
- 生產環境對外服務
- 云環境下的公網暴露
- 需要集成云平臺LB功能的場景
示例配置片段:
apiVersion: v1
kind: Service
metadata:name: lb-service
spec:type: LoadBalancerselector:app: webports:- protocol: TCPport: 443targetPort: 8443
三、流量路徑對比
外部用戶訪問路徑:
LoadBalancer -> NodePort -> ClusterIP -> Pod
開發測試訪問:
NodePort -> ClusterIP -> Pod
集群內部訪問:
ClusterIP -> Pod
四、選擇建議
類型 | 網絡層級 | 典型延遲 | 成本 | 適用階段 |
---|---|---|---|---|
ClusterIP | 集群內部 | 最低 | 無額外 | 生產 |
NodePort | 節點級別 | 中等 | 低 | 開發/測試 |
LoadBalancer | 云平臺LB | 最高 | 較高 | 生產 |
實際生產環境中,通常結合Ingress控制器使用,通過LoadBalancer暴露Ingress,再由Ingress路由到不同的ClusterIP Service。