在使用Nginx Ingress Controller时,Controller所属的Pod作为流量的实际入口和转发服务的提供者,它们的可靠性决定了Controller的可靠性。Nginx Ingress Controller在安装后默认使用两个Pod,在大多数场景中已经足够可靠。如果您有进一步提高可靠性的需求,可通过控制Pod的数量和调度方式来达成。
背景信息
已创建Kubernetes集群。具体操作,请参见使用快速入门。
SSH连接到Master节点。具体操作,请参见通过SSH连接ACK专有集群的Master节点。
高可靠部署架构
高可靠性首先要解决的就是单点故障问题,通常系统采用多副本部署的方式,在Kubernetes集群中部署高可靠Ingress接入层同样采用多节点部署架构,同时由于Ingress作为集群流量接入口,建议系统采用一个Ingress服务独占一个Ingress节点的方式,以避免业务应用与Ingress服务发生资源抢占。
如上述部署架构图,由多个独占Ingress实例组成统一接入层来承载集群入口流量,同时可依据后端业务流量水平扩缩容Ingress节点。若您前期的集群规模并不大,也可以采用将Ingress服务与业务应用混部的方式,但注意进行资源限制和隔离。
查看Nginx Ingress Controller默认部署的Pod
当您安装Nginx Ingress Controller组件后,集群内部已经部署了一个拥有2个Pod的Nginx Ingress Controller服务。
执行以下命令查看Nginx Ingress Controller所属的Pod。
kubectl -n kube-system get pod | grep nginx-ingress-controller
预期输出:
nginx-ingress-controller-*****nxs 1/1 Running 0 3h
nginx-ingress-controller-*****9pm 1/1 Running 0 3h
部署高可靠的Ingress接入层
随着集群业务规模的逐渐扩大,系统需要扩容Ingress接入层,以保证集群接入层的高性能高可用。通过调整Nginx Ingress Controller Deployment的Pod副本数量,可以快速增加Ingress接入层的规模。
执行以下命令,将Pod副本数量扩容到3个。
kubectl -n kube-system scale --replicas=3 deployment/nginx-ingress-controller deployment.extensions/nginx-ingress-controller scaled
执行以下命令,查看部署Nginx Ingress Controller服务的Pod。
kubectl -n kube-system get pod | grep nginx-ingress-controller
预期输出:
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