您好,登錄后才能下訂單哦!
如果希望將 Service 暴露在一個(gè)外部IP地址上。 Kubernetes 支持4種實(shí)現(xiàn)方式,詳細(xì)如下:
Clusterip是集群內(nèi)部的私有ip,在集群內(nèi)部訪問(wèn)服務(wù)非常方便,也是kuberentes集群默認(rèn)的方式,直接通過(guò)service的Clusterip訪問(wèn),也可以直接通過(guò)ServiceName訪問(wèn)。集群外部則是無(wú)法訪問(wèn)的。
NodePort在kubenretes里是一個(gè)早期廣泛應(yīng)用的服務(wù)暴露方式。Kubernetes中的service默認(rèn)情況下都是使用的ClusterIP這種類型,這樣的service會(huì)產(chǎn)生一個(gè)ClusterIP,這個(gè)IP只能在集群內(nèi)部訪問(wèn),要想讓外部能夠直接訪問(wèn)service,需要將service type修改為 nodePort。將service監(jiān)聽(tīng)端口映射到node節(jié)點(diǎn)。
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
在集群之外,可以通過(guò)任何一個(gè)node節(jié)點(diǎn)的 ip:nodeport 都可以訪問(wèn)集群中服務(wù)
LoadBlancer Service 是 kubernetes 深度結(jié)合云平臺(tái)的一個(gè)組件;當(dāng)使用 LoadBlancer Service 暴露服務(wù)時(shí),實(shí)際上是通過(guò)向底層云平臺(tái)申請(qǐng)創(chuàng)建一個(gè)負(fù)載均衡器來(lái)向外暴露服務(wù);目前 LoadBlancer Service 支持的云平臺(tái)已經(jīng)相對(duì)完善,比如國(guó)外的 GCE、DigitalOcean,國(guó)內(nèi)的 阿里云,私有云 Openstack 等等,由于 LoadBlancer Service 深度結(jié)合了云平臺(tái),所以只能在一些云平臺(tái)上來(lái)使用.
Ingress是自kubernetes1.1版本后引入的資源類型。必須要部署Ingress controller才能創(chuàng)建Ingress資源,Ingress controller是以一種插件的形式提供。
Ingress 使用比較廣泛的有:nginx 和 traefik,個(gè)人推薦使用traefik。
https://blog.51cto.com/michaelkang/2429929
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。