openshift三種網(wǎng)絡(luò)支持方式概述

問題
客戶端在外部訪問容器怎么實現(xiàn)呢?

1.HostPort/HostNetwork
通過宿主機的iptables給每個容器設(shè)置映射訪問,如容器里面的80端口映射到宿主機的8080端口,缺點是:當(dāng)你的容器非常多,而且每個容器都有服務(wù)要對外映射的時候,你會寫很多iptables,不易于維護,致命點是宿主機掛掉了,而你沒做冗余,那么你的服務(wù)就下線了

2.NodePort
這個是基于老版k8s的基礎(chǔ)上做的,提供了一個service服務(wù),即給你的容器做浮動IP<VIP>,不使用docker自帶的網(wǎng)絡(luò),自己設(shè)置子網(wǎng),在docker集群內(nèi)部,通過該VIP就可以訪問到你的服務(wù);在對外提供服務(wù)的時候,只需要將該VIP與宿主機映射端口即可,缺點:需要在每一臺宿主機上都寫上一樣的iptables

oc edit svc myapp
spec: 
  clusterIP: 172.30.207.79
  ports:   
- name: 8080-tcp     
  port: 8080     
  protocol: TCP     
  targetPort: 8080     
  nodePort: 30800 #端口范圍:30000-32767   
  selector:     
  app: hello     
  deploymentconfig: myapp 
  sessionAffinity: None   
  type: NodePort 
通過上述配置后,既可通過訪問集群任意一臺宿主機的30800端口去獲取服務(wù)

3.Openshift Routes
這種方式是Openshift首選的方式,這種方式將service與一個全局唯一的域名綁定,使用oc expose命令實現(xiàn),Router使用的是Haproxy容器。缺點:只能支持http協(xié)議,這一點是紅帽設(shè)計初衷的時候決定,他們覺得容器對外只提供web訪問就好了,其他的容器內(nèi)部自己實現(xiàn)交互

oc expose svc myapp
oc get svc myapp
通過上述命令,客戶端可以通過訪問域名的方式獲取服務(wù) 
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容