跳到主要内容

K8S service networking

Service

把整個application視為一個網路服務,然後以一個對外的service來提供服務。Service可以根據selector來挑出要group的pods,也可以不用selector,然後藉由EndpointSlices動態的將route rule掛上去。

Service有幾種type:

  • ClusterIP: 預設的選項,如果沒指定IP的話,就會分配一個只有cluster內才能access到的ip。
  • NodePort: 把service bind到node的某個port,可以透過這個方法從cluster外部access service。
  • LoadBalancer: 如果cloud provider支援 external load balancer的話,可以透過這個type產生load balander,然後將流量route進cluster。
  • ExternalName: 將service name用 CNAME的方式align到一個domain name,要注意某些protocal(eg: http/https)不支援此種方式。

Ingress

image info

Ingres exposes http/https endpoint,根據設定的route rule把相對應的pathhost route到相對應的service上。

如果patyTypeImplementationSpecific的話,確切的行為由ingress-controller處理,例如ingress-nginx,就支援regular expression(Ingress Path Matching)。

Gateway API

Ingres目前已經deprecated,由Gateway API取代。

Gateway API提供了三種API Kind:GatewayClassGatewayHTTPRoute

HTTPRoute的就是主要取代Ingres的部分。

Network Policies

NetworkPolicy可以根據namespaceSelectorpodSelector來對namespacepodingressegress的設定。