天天看點

kubernetes 暴露服務端口的幾種方式

kubernetes 暴露服務端口的幾種方式

如果希望将 Service 暴露在一個外部IP位址上。 Kubernetes 支援4種實作方式,詳細如下:

1:叢集内部實作通路:Clusterip

Clusterip是叢集内部的私有ip,在叢集内部通路服務非常友善,也是kuberentes叢集預設的方式,直接通過service的Clusterip通路,也可以直接通過ServiceName通路。叢集外部則是無法通路的。

2:叢集外部方式通路:NodePort

NodePort在kubenretes裡是一個早期廣泛應用的服務暴露方式。Kubernetes中的service預設情況下都是使用的ClusterIP這種類型,這樣的service會産生一個ClusterIP,這個IP隻能在叢集内部通路,要想讓外部能夠直接通路service,需要将service type修改為 nodePort。将service監聽端口映射到node節點。

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx-dm
spec:
  replicas: 2
  template:
    metadata:
      labels:
        name: nginx
    spec:
      containers:
        - name: nginx
          image: nginx:alpine
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 80

---

apiVersion: v1
kind: Service
metadata:
  name: nginx-svc
spec:
  type: NodePort
  ports:
    - port: 80
      targetPort: 80
      nodePort: 30004
      protocol: TCP
  selector:
    name: nginx           

建立

kubectl create -f nginx-ds.yaml           

通路測試

在叢集之外,可以通過任何一個node節點的 ip:nodeport 都可以通路叢集中服務

3:LoadBalancer

LoadBlancer Service 是 kubernetes 深度結合雲平台的一個元件;當使用 LoadBlancer Service 暴露服務時,實際上是通過向底層雲平台申請建立一個負載均衡器來向外暴露服務;目前 LoadBlancer Service 支援的雲平台已經相對完善,比如國外的 GCE、DigitalOcean,國内的 阿裡雲,私有雲 Openstack 等等,由于 LoadBlancer Service 深度結合了雲平台,是以隻能在一些雲平台上來使用.

4:Ingress

Traefik 配置使用方法:

繼續閱讀