Service中spec.type 字段的值:ClusterIP和NodePort理解


  • ClusterIP(默認)

在群集中的內部IP上公布服務,這種方式的 Service(服務)只在集群內部可以訪問到

[root@master ~]# kubectl get service -n test -o wide
NAME           TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)    AGE   SELECTOR
cloud-config   ClusterIP   10.96.249.98   <none>        8888/TCP   21d   k8s.kuboard.cn/layer=cloud,k8s.kuboard.cn/name=cloud-config
cloud-eureka   ClusterIP   10.96.181.80   <none>        8761/TCP   27d   k8s.kuboard.cn/layer=cloud,k8s.kuboard.cn/name=cloud-eureka
  • NodePort

使用 NAT 在集群中每個的同一端口上公布服務。這種方式下,可以通過訪問集群中任意節點+端口號的方式訪問服務 <NodeIP>:<NodePort>。此時 ClusterIP 的訪問方式仍然可用。

[root@master ~]# kubectl get service -n test -o wide
NAME           TYPE       CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE   SELECTOR
cloud-config   NodePort   10.96.249.98   <none>        8888:32155/TCP   21d   k8s.kuboard.cn/layer=cloud,k8s.kuboard.cn/name=cloud-config
cloud-eureka   NodePort   10.96.181.80   <none>        8761:31739/TCP   27d   k8s.kuboard.cn/layer=cloud,k8s.kuboard.cn/name=cloud-eureka

service yaml文件示例

apiVersion: v1
kind: Service
metadata:
  name: nginx-service	#Service 的名稱
  labels:     	#Service 自己的標簽
    app: nginx	#為該 Service 設置 key 為 app,value 為 nginx 的標簽
spec:	    #這是關於該 Service 的定義,描述了 Service 如何選擇 Pod,如何被訪問
  selector:	    #標簽選擇器
    app: nginx	#選擇包含標簽 app:nginx 的 Pod
  ports:
  - name: nginx-port	#端口的名字
    protocol: TCP	    #協議類型 TCP/UDP
    port: 80	        #集群內的其他容器組可通過 80 端口訪問 Service
    nodePort: 32600   #通過任意節點的 32600 端口訪問 Service
    targetPort: 80	#將請求轉發到匹配 Pod 的 80 端口
  type: NodePort	#Serive的類型,ClusterIP/NodePort/LoaderBalancer


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM