- 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