您好,登錄后才能下訂單哦!
本篇文章為大家展示了Kubernetes Ingress 高可靠部署的實踐是怎樣的,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
在Kubernetes集群中,Ingress是授權(quán)入站連接到達集群服務(wù)的規(guī)則集合,為您提供七層負載均衡能力,您可以通過 Ingress 配置提供外部可訪問的 URL、負載均衡、SSL、基于名稱的虛擬主機等。作為集群流量接入層,Ingress的高可靠性顯得尤為重要,今天我們主要探討如何部署一套高性能高可靠的Ingress接入層。
高可靠性首先要解決的就是單點故障問題,一般常用的是采用多副本部署的方式,我們在Kubernetes集群中部署高可靠Ingress接入層同樣采用多節(jié)點部署架構(gòu),同時由于Ingress作為集群流量接入口,建議采用獨占Ingress節(jié)點的方式,以避免業(yè)務(wù)應(yīng)用與Ingress服務(wù)發(fā)生資源爭搶。
cdn.com/b5223438010ba6de332c1f5f56195920a1eae44e.png">
如上述部署架構(gòu)圖,由多個獨占Ingress實例組成統(tǒng)一接入層承載集群入口流量,同時可依據(jù)后端業(yè)務(wù)流量水平擴縮容Ingress節(jié)點。當(dāng)然如果您前期的集群規(guī)模并不大,也可以采用將Ingress服務(wù)與業(yè)務(wù)應(yīng)用混部的方式,但建議進行資源限制和隔離。
Ingress SLB:Ingress接入層前端SLB實例
Ingress Node:部署Ingress Pod的集群節(jié)點
Ingress Pod:Ingress服務(wù)實例
這三者之間依據(jù)標簽node-role.kubernetes.io/ingress=true進行關(guān)聯(lián):
Ingress SLB后端只會掛載打標了node-role.kubernetes.io/ingress=true的集群Node;
Ingress Pod只會被部署到打標了node-role.kubernetes.io/ingress=true的集群Node;
1、創(chuàng)建 Kubernetes 集群
在創(chuàng)建集群之前,我們需要依據(jù)自身具體業(yè)務(wù)場景來適當(dāng)規(guī)劃集群的規(guī)模以及集群內(nèi)各節(jié)點角色,比如業(yè)務(wù)節(jié)點數(shù)、Ingress節(jié)點數(shù)等,注意集群默認會初始化3臺Master節(jié)點來部署集群管控服務(wù)。
我們通過阿里云容器服務(wù)控制臺創(chuàng)建一個Kubernetes集群,這里以創(chuàng)建3臺Worker節(jié)點集群為例。
2、打標 Ingress Node
由于測試集群規(guī)模較小,我們暫采用混部的方式:即3臺Worker節(jié)點既作為業(yè)務(wù)節(jié)點又作為Ingress節(jié)點。我們給3臺Worker節(jié)點同時打標node-role.kubernetes.io/ingress=true,注意不建議將Ingress Pod部署在集群Master節(jié)點上,因為Master節(jié)點承載著集群的所有管控服務(wù),以避免集群接入流量過高時對管控服務(wù)造成影響。
~ kubectl label no cn-hangzhou.i-bp1ecwpuisra0y0bizdb node-role.kubernetes.io/ingress=true node "cn-hangzhou.i-bp1ecwpuisra0y0bizdb">
3、創(chuàng)建 Ingress 服務(wù)
集群初始化時默認部署了一個Ingress Controller,具體部署說明請參考。這里我們通過DaemonSet方式將其重新部署到目標Ingress Node上,當(dāng)然您也可以采用Deployment配合親和性方式來部署。
~ kubectl -n kube-system delete deploy nginx-ingress-controller deployment "nginx-ingress-controller" deleted ~ kubectl create -f https://acs-k8s-ingress.oss-cn-hangzhou.aliyuncs.com/nginx-ingress-controller-ds.yml daemonset "nginx-ingress-controller" created ~ kubectl -n kube-system get ds | grep nginx-ingress-controller nginx-ingress-controller 3 3 3 3 3 node-role.kubernetes.io/ingress=true 42s ~ kubectl -n kube-system get pod -o wide | grep nginx-ingress-controller nginx-ingress-controller-57j4l 1/1 Running 0 1m 172.16.3.2 cn-hangzhou.i-bp1ecwpuisra0y0bizdd nginx-ingress-controller-d7cxb 1/1 Running 0 1m 172.16.5.7 cn-hangzhou.i-bp1ecwpuisra0y0bizdc nginx-ingress-controller-m9w75 1/1 Running 0 1m 172.16.4.2 cn-hangzhou.i-bp1ecwpuisra0y0bizdb
4、更新 Ingress SLB 服務(wù)
集群初始化時默認部署了一個Ingress LoadBalancer Service,具體部署說明請參考,這里需要更新下Ingress LoadBalancer Service,以自動識別掛載打標的Ingress Node。
~ kubectl apply -f https://acs-k8s-ingress.oss-cn-hangzhou.aliyuncs.com/nginx-ingress-slb-service.yml service "nginx-ingress-lb" configured
5、此時具有3個Ingress實例的高可靠接入層部署完成。
隨著您的業(yè)務(wù)流量不斷增長,集群規(guī)模不斷擴大,您只需要簡單地通過打標的方式來快速擴容Ingress接入層。
集群Ingress接入層的監(jiān)控是必不可少的,您可以通過阿里云容器服務(wù)監(jiān)控以及阿里云云監(jiān)控對Ingress Pod和Ingress Node進行全方位監(jiān)控。
上述內(nèi)容就是Kubernetes Ingress 高可靠部署的實踐是怎樣的,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。