注意 本文,只是笔者针对Kubernetes生产环境运行的一些关于架构设计和实现方案的总结,内容很粗糙,同时也会不断完善。
首先,我们来梳理下Kubernetes生产架构,其设计适用于绝大多数环境。如下图所示。
在该架构中,我们可以将其分为四层,如下:
Kubernetes平台的数据持久化存储,可以使用Ceph、NFS等存储方案。其中,Ceph适用于有其技术背景或大容量存储需求的公司;而NFS适用于存储容量需求相对较小,无专业存储技术背景的公司。
外部客户端访问K8s集群内的服务、负载均衡和路由规则定义使用Traefik Ingress实现。此外,应当实现Ingress服务HA高可用,可以想象在K8s集群中,大量的出入口流量都进过Ingress,其负载是非常大的,其重要程度不言而喻,因此实现HA就非常重要。ingress controller节点(无论是基于nginx还是traefik实现)应当至少为2个节点,并在这些节点上,部署Keepalived和HAproxy共同维护一个VIP地址,将其提供给ingress使用。
架构如下图所示。
在该架构中,Ingress节点一般使用独立的服务器,即只做将集群外部流量接入到集群内部。除了使用external Ip来暴露ingress的Service到集群外部,还可以使用hostNetwork,如果是公有云,还可以使用LoadBalance。这样Ingress Controller将监听节点的80和443端口,通过热备的形式部署多个ingress节点,并在每个节点上部署Keepalived,多个节点共同维护一个VIP,实现Ingress服务的高可用。
如上图所示,部署两个ingress节点172.16.10.11和172.16.10.12。公网ip映射或转发到内网的VIP地址172.16.10.10上(如果VIP本身是公网IP则可以不用转发)。ingress controller的副本数replicaCount为2,将被调度到node1和node2这两个节点上。同时,使用pod反亲和性禁止ingress pod调度在同一个节点上。
原文链接:https://xuchao918.github.io/2019/03/02/浅谈Kubernetes生产架构/#more 作者:徐超
DevOps 国际峰会 2019 · 北京站限时开启,DevOps 全领域技术大会就在7月5~6日。
专场一览 ▼