◆Service的工作模式:userspace, iptables, ipvs

•userspace: 1.1以前;已被淘汰。

•iptables: 1.10以前

• 靈活,功能強大

• 規則遍歷匹配和更新,呈線性時延

• 可擴展性

•ipvs: 1.11以後,若沒有配置ipvs,則降級為iptables;

• 工作在內核態,有更好的性能

• 調度算法豐富:rr,wrr,lc,wlc,ip hash

 

◆Service的類型:即服務的對外暴露方式。

ExternalName:當Service類型是ExternalName時,Service所關聯的不是本地Pod應用,而是集羣外部的服務。從而實現集羣內部的Pod應用調用集羣外部的服務,可以把集羣外部的服務當作內部服務一樣去調用它。當Service類型是ExternalName時,spec.externalName字段才生效。

 •ClusterIP:默認,自動分配一個僅cluster內部可以訪問的虛擬IP,用於集羣內部通信。

NodePort:分配一個內部集羣IP地址,並在每個節點上啓用一個端口來暴露服務,可以在集羣外部訪問。 訪問地址:node端口範圍30000-32067。

流:Client→NodeIP:NodePort→ClusterIP:ServicePort→PodIP:containerPort。

LoadBalancer:分配一個內部集羣IP地址,並在每個節點上啓用一個端口來暴露服務。 Kubernetes會請求底層雲平台上的負載均衡器,將每個Node([NodeIP]:[NodePort])作為後端添加進去。

◆service例(類型:ClusterIP/redis-svc.yaml)

svc loadBalancer配置寫法_redis

svc loadBalancer配置寫法_Code_02

1 apiVersion: v1
 2 kind: Service
 3 metadata:
 4   name: redis
 5   namespace: default
 6 spec:
 7   selector:
 8      app: redis
 9      role: logstor
10   clusterIP: 10.96.97.97
11   type: ClusterIP
12   ports:
13   - port: 6379
14     targetPort: 6379

View Code

●確認

創建:kubectl apply -f redis-svc.yaml

查看服務:kubectl get svc

svc loadBalancer配置寫法_Code_03

kubectl describe svc redis

svc loadBalancer配置寫法_Code_04

 查看端口:ss -tnl

◆service例(類型:NodePort/nginx-svc.yaml)

svc loadBalancer配置寫法_redis

svc loadBalancer配置寫法_Code_02

1 apiVersion: v1
 2 kind: Service
 3 metadata:
 4   name: nginx
 5   namespace: default
 6 spec:
 7   selector:
 8      app: nginx
 9      clusterIP: 10.96.97.97
10   type: NodePort
11   ports:
12   - port: 80
13     targetPort: 80
14     nodePort: 30080

View Code

•測試方法:#while true; do curl http://node:30080/; sleep 1; done

▶無頭(headless)service

svc loadBalancer配置寫法_redis

svc loadBalancer配置寫法_Code_02

1 apiVersion: v1
 2 kind: Service
 3 metadata:
 4   name: nginx
 5   namespace: default
 6 spec:
 7   selector:
 8     app: nginx
 9     clusterIP: None    #無頭service僅支持類型為clusterIP。
10     ports:
11     - port: 80
12       targetPort: 80

View Code

◆資源記錄:

格式:SVC_NAME.NS_NAME.DOMAIN.LTD.

svc.cluster.local.

------山的那一邊