部署高可靠Ingress Controller
在使用Nginx Ingress Controller時(shí),Controller所屬的Pod作為流量的實(shí)際入口和轉(zhuǎn)發(fā)服務(wù)的提供者,它們的可靠性決定了Controller的可靠性。Nginx Ingress Controller在安裝后默認(rèn)使用兩個(gè)Pod,在大多數(shù)場(chǎng)景中已經(jīng)足夠可靠。如果您有進(jìn)一步提高可靠性的需求,可通過控制Pod的數(shù)量和調(diào)度方式來達(dá)成。
背景信息
已創(chuàng)建Kubernetes集群。具體操作,請(qǐng)參見使用快速入門。
SSH連接到Master節(jié)點(diǎn)。具體操作,請(qǐng)參見通過SSH連接ACK專有集群的Master節(jié)點(diǎn)。
高可靠部署架構(gòu)
高可靠性首先要解決的就是單點(diǎn)故障問題,通常系統(tǒng)采用多副本部署的方式,在Kubernetes集群中部署高可靠Ingress接入層同樣采用多節(jié)點(diǎn)部署架構(gòu),同時(shí)由于Ingress作為集群流量接入口,建議系統(tǒng)采用一個(gè)Ingress服務(wù)獨(dú)占一個(gè)Ingress節(jié)點(diǎn)的方式,以避免業(yè)務(wù)應(yīng)用與Ingress服務(wù)發(fā)生資源搶占。
如上述部署架構(gòu)圖,由多個(gè)獨(dú)占Ingress實(shí)例組成統(tǒng)一接入層來承載集群入口流量,同時(shí)可依據(jù)后端業(yè)務(wù)流量水平擴(kuò)縮容Ingress節(jié)點(diǎn)。若您前期的集群規(guī)模并不大,也可以采用將Ingress服務(wù)與業(yè)務(wù)應(yīng)用混部的方式,但注意進(jìn)行資源限制和隔離。
查看Nginx Ingress Controller默認(rèn)部署的Pod
當(dāng)您安裝Nginx Ingress Controller組件后,集群內(nèi)部已經(jīng)部署了一個(gè)擁有2個(gè)Pod的Nginx Ingress Controller服務(wù)。
執(zhí)行以下命令查看Nginx Ingress Controller所屬的Pod。
kubectl -n kube-system get pod | grep nginx-ingress-controller
預(yù)期輸出:
nginx-ingress-controller-*****nxs 1/1 Running 0 3h
nginx-ingress-controller-*****9pm 1/1 Running 0 3h
部署高可靠的Ingress接入層
隨著集群業(yè)務(wù)規(guī)模的逐漸擴(kuò)大,系統(tǒng)需要擴(kuò)容Ingress接入層,以保證集群接入層的高性能高可用。通過調(diào)整Nginx Ingress Controller Deployment的Pod副本數(shù)量,可以快速增加Ingress接入層的規(guī)模。
執(zhí)行以下命令,將Pod副本數(shù)量擴(kuò)容到3個(gè)。
kubectl -n kube-system scale --replicas=3 deployment/nginx-ingress-controller deployment.extensions/nginx-ingress-controller scaled
執(zhí)行以下命令,查看部署Nginx Ingress Controller服務(wù)的Pod。
kubectl -n kube-system get pod | grep nginx-ingress-controller
預(yù)期輸出:
nginx-ingress-controller-8648ddc696-2bshk 1/1 Running 0 3h nginx-ingress-controller-8648ddc696-jvbs9 1/1 Running 0 3h nginx-ingress-controller-8648ddc696-xqmfn 1/1 Running 0 33s