vivo 公司 Kubernetes 集群 Ingress 网关实践
发布网友
发布时间:2024-10-19 06:02
我来回答
共1个回答
热心网友
时间:2024-11-30 05:40
自2018年末以来,vivo人工智能计算平台小组在 Kubernetes 集群和深度学习模型训练方面积累了丰富的经验,构建了稳定的AI容器平台(VContainer)。为了支持AI在线业务的发展,他们需要将C端和推理等业务从虚拟机或物理机迁移到AI容器平台。从2020年初开始,团队进一步改造平台,并与公司CMDB和CICD集成,以实现业务无缝迁移。
Kubernetes利用Pod抽象服务环境,部署工作负载如Deployment、StatefulSet和DaemonSet,同时提供Service解决集群内部通信,而Ingress则解决外部对集群内服务的访问问题。Ingress定义了集群内外网络通信规则,Nginx Ingress是最常用的控制器,我们选择了Kubernetes社区提供的官方版本。
Ingress-nginx由两部分组成:控制器监控Kubernetes资源,将路由规则转化为nginx配置;nginx负责外部请求的转发。通过nginx.conf和配置文件,它处理来自Ingress、Endpoint、ConfigMap的动态信息,确保流量路由到正确的Pod。
在部署选项中,团队选择了Daemonset+hostNetwork方案,以提高网络稳定性,降低复杂性,同时共享资源。但存在业务隔离和资源分配的问题,因此他们实施了隔离策略,并自动化了部署流程,以满足业务需求。
性能优化方面,团队针对nginx和内核进行了配置,如启用网卡多队列,调整连接队列大小,以及优化连接超时等,以应对高并发场景。此外,他们还对健康检查、无损发布和配置校验进行了改进,确保集群的稳定性和安全性。
未来,他们计划进一步提升ingress的功能,如服务限流来防止流量洪峰,支持GRPC以简化服务调用,以及改进日志分析以增强运维效率。所有这些改进都是为了更好地服务于vivo的AI业务增长。