最近在學習阿里雲k8s相關容器服務ACK,因而本身建立了ACK集羣,配置好了SLB、NAT、Node、EIP等相關操做,因而建立了next.js項目,並經過發佈鏡像到阿里雲容器服務,因而在ACK上建立無狀態應用選用該鏡像來訪問next.js網站,經過了解k8s有兩種訪問方式:LoadBalancer和Ingress,如今記錄下來供你們參考。html
無論是LoadBalancer仍是Ingress都要進行前置操做,這裏先來介紹下如何去建立next.js應用。
一、配置應用基本信息
首先咱們在工做負載下面->點擊無狀態->右上角點擊使用鏡像建立nginx
二、容器配置
咱們選擇鏡像,使用官方提供的nginx鏡像,點擊選擇肯定,其它參數默認便可。
三、高級配置
這裏只需默認便可,後面會介紹如何建立Service和Ingress,點擊建立。
負載均衡
一、建立Service
在配置Ingress以前咱們要建立Service,才能暴露Endpoint。在服務與路由菜單下點擊服務,點擊右上角有建立按鈕。
名稱本身輸入便可,類型選擇虛擬集羣IP,並關聯my-nginx,端口都設置成80,80,或者next.js的80,3000,看實際狀況設定。
設定好了以後點擊建立便可。
二、建立Ingress
建立好Service以後,咱們再點擊左側菜單服務與路由下面的路由,點擊右上角建立按鈕,打開配置面板,輸入自定義名稱,輸入域名,服務選擇上一步咱們建立的my-nginx-svc便可,點擊建立。
學習
三、域名訪問
建立好以後咱們能夠經過域名或者ip便可訪問咱們的nginx頁面。
四、注意事項
默認狀況下阿里雲K8S的ACK的組件管理菜單裏面有個Nginx-Ingress-Controller組件,而且會多出一個監聽是80和443的SLB,另外若是你的SLB是私網環境,那麼你得配置EIP綁定到該SLB,這樣你才能真正能訪問你的網站了,若是是公網就忽略上面操做。還有一點就是你的域名解析問題,必定要解析到你的SLB所在的公網地址。
網站
這裏又能夠分爲:一、經過自動建立SLB服務公開應用 二、經過已有SLB服務公開應用阿里雲
接着上面的前置操做,選擇服務與路由菜單下面的服務菜單,而後點擊右上角的建立按鈕打開建立面板,接着咱們輸入服務名稱,類型選擇->負載均衡->公網訪問->新建SLB,接着關聯咱們在前置操做建立的my-nginx,外部流量策略爲Local,配置對應端口,再添加相關注解,下圖有解釋註解幹嗎用的,點擊建立,再點擊外部IP端口便可訪問咱們的網站了。
spa
和上面的操做類型,類型選擇->負載均衡->公網訪問->使用已有SLB->選擇SLB列表下面的SLB便可,點擊外部端口便可訪問,跟上面相同。
三、注意事項
上面咱們選擇的是類型選擇->負載均衡->公網訪問,若是你的SLB是私網,這裏也要配置成相同的私網訪問,不然訪問失敗。3d
一、建立k8s集羣以後會建立兩個SLB,一個是APIServer監聽端口6445,一個是nginx-ingress-controller監聽端口是80和443。
二、若是你的Service的type=ClusterIP,那麼使用上面的nginx-ingress-controller的SLB便可
若是你的Service的type=LoadBalancer,那麼你要麼經過自動建立SLB服務公開應用,要麼經過已有SLB服務公開應用,取決於你本身。
三、這裏要提醒一下,若是你的SLB是支持公網的話這裏不作任何操做,可是若是你的SLB是私網環境,那麼你的SLB要配置EIP,容許公網訪問,不然你內網的地址是打不開你的nginx網址頁面的
四、LoadBalancer和Ingress的最大區別在於LB不須要建立Ingress,而Ingress必需要建立。htm
經過負載均衡類型Service公開應用.mov
經過使用已有SLB的服務公開應用
建立無狀態工做負載Deployment
經過Annotation配置負載均衡ip