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