【08】Kubernets:Service

寫在前面的話node

 

在 K8S 第一節的時候咱們簡單提到過 Service 的工做模式有三種:userspace / iptables / ipvs。而且已經知道在目前新版本中默認是 ipvs,前提是在按照 K8S 的時候配置了 ipvs 模塊。redis

 

 

Service 資源清單api

 

前面就已經知道 service 簡稱 svc,因此咱們能夠直接經過 explain 查看資源清單的參數以下表:session

svc
apiVersion     v1 
kind     Service
metadata     和其餘同樣,name / labels / namespace 等
spec      
  clusterIP   定義 Service 的 IP,通常在 type 是 ClusterIP 的時候才配置,大多時候隨機分配
  ports    
    name 名稱
    nodePort 在 type 是 NodePort 的時候使用,就是大於 30000 的本機映射端口
    port Service 的端口
    targetPort Pod 的端口
  selector   標籤選擇器,直接鍵值對
  sessionAffinity   配置分配規則,支持 ClientIP / None
  type   ExternalName, ClusterIP, NodePort, LoadBalancer(通常用於雲)

 

簡單的資源清單示例:app

apiVersion: v1
kind: Service
metadata:
  name: redis-svc
  namespace: default
spec:
  type: ClusterIP
  selector:
    app: redis
    role: logstore
  ports:
  - name: redis-port
    port: 6373
    targetPort: 6379

運行查看:spa

kubectl apply -f svc-demo.yaml
kubectl get svc

結果如圖:code

 

資源記錄解析名字格式:SVC_NAME.NS_NAME.DOMAIN.LTD.blog

例如上面的 redis  名字爲:redis.default.svc.cluster.local.dns

當咱們 type 使用 NodePort 的時候,就能夠在 ports 裏面配置 nodePort 參數(大於 30000 端口,不指定隨機)。ip

必定要確保該端口沒用被其餘服務佔用。

當咱們這隻 CluterIP 爲 None 的時候,資源記錄直接解析到 Pod。此時再使用 dig 添加本地解析時,該資源記錄須要解析到 kube-dns 的 IP 地址。

相關文章
相關標籤/搜索