一、簡介
Kubernetes服務(wù)內(nèi)部流量策略已開啟內(nèi)部流量限制,這意味著只有發(fā)起方所在節(jié)點內(nèi)的服務(wù)端點才能接收到內(nèi)部流量。這里的“內(nèi)部”流量指的是當前集群中 Pod 所發(fā)起的流量。這種機制有助于降低開銷并提高資源利用率。
二、使用服務(wù)內(nèi)部流量策略
可以通過將 Service 的 .spec.internalTrafficPolicy 項設(shè)置為 Local,來為它指定一個內(nèi)部專用的流量策略。此設(shè)置相當于告訴 kube-proxy 對于集群內(nèi)部流量只能使用節(jié)點本地的服務(wù)端口。
注意:如果某個節(jié)點上的 Pod 都不提供指定 Service 的服務(wù)端點,即使該 Service 在其他節(jié)點上有可用的服務(wù)端點,那么在該節(jié)點上訪問該 Service 的行為看起來也像是它只有 0 個服務(wù)端點(只針對此節(jié)點上的 Pod)。
以下示例展示了把 Service 的 .spec.internalTrafficPolicy 項設(shè)為 Local 時, Service 的樣子:
apiVersion: v1 kind: Service metadata: name: my-service spec: selector: app.kubernetes.io/name: MyApp ports: - protocol: TCP port: 80 targetPort: 9376 internalTrafficPolicy: Local
三、工作原理
Kubernetes服務(wù)內(nèi)部流量策略的工作原理基于節(jié)點本地的網(wǎng)絡(luò)連接和負載均衡機制。當集群中的兩個 Pod 想要通信,并且這兩個 Pod 都在同一節(jié)點上運行時,服務(wù)內(nèi)部流量策略將會把網(wǎng)絡(luò)流量限制在該節(jié)點內(nèi)。
具體來說,如果某服務(wù)的請求來自于集群內(nèi)部的某個 Pod,那么根據(jù)該服務(wù)內(nèi)部的流量策略,請求只會被路由到發(fā)起請求的 Pod 所在節(jié)點內(nèi)的服務(wù)端點。這種“內(nèi)部”流量指的是當前集群中 Pod 所發(fā)起的流量。
kube-proxy 基于 Service 的 .spec.internalTrafficPolicy 設(shè)置來過濾路由的目標服務(wù)端點。當它的值設(shè)為 Local 時,只會選擇節(jié)點本地的服務(wù)端點。而當它的值設(shè)為 Cluster 或缺省時,Kubernetes 會選擇所有的服務(wù)端點。