目录
概述:
1、资源需求
2、系统架构简图
3、k8s架构原理图
4、系统部署说明
5、ETCD集群说明
6、集群kube-apiserver高可用实现
7、nfs共享存储
8、ingress-nginx网关
9、nfs-client-provisioner
10、k8s监控系统
11、文档下载地址
概述:
内部系统基于kubernetes技术搭建完成的容器化集群,后续所有的业务应用服务部署并运行在kubernetes集群内。内部系统集群由3台主节点和2台工作节点以及一些组件节点组成,达到集群的高可用。(由于是公司内部测试环境,所以 NGINX以非集群方式部署)
1、资源需求
序号 | 主机名 | CPU/MEM | ip地址 | 浮动ip | 用途 | 系统盘 | 数据盘 | 挂载路径 | 备注 |
1 | k8s-master01 | 8C16G | 172.18.6.91 | 172.18.6.94 | master | 100G | haproxy+keepalived | ||
2 | k8s-master02 | 8C16G | 172.18.6.92 | 172.18.6.94 | master | 100G | haproxy+keepalived | ||
3 | k8s-master03 | 8C16G | 172.18.6.93 | 172.18.6.94 | master | 100G | haproxy+keepalived | ||
4 | k8s-node01 | 16C32G | 172.18.6.95 | node | 100G | ||||
5 | k8s-node02 | 16C32G | 172.18.6.96 | node | 100G | ||||
6 | nfs | 8C16G | 172.18.6.97 | NFS | 100G | 2T | nfs | 做LVM逻辑卷 | |
7 | harbor/rancher | 16C32G | 172.18.6.98 | 仓库/管理 | 100G | ||||
8 | nginx | 4C8G | 172.18.6.99 | 集群访问入口 | 100G | nginx映射公网 |
2、系统架构简图
3、k8s架构原理图
4、系统部署说明
用户通过kubernetes集群的统一入口(Nginx代理服务),访问集群内所有资源,用户不需要了解集群内部的网络和服务关系。
系统管理员通过kubernetes集群的统一入口(Nginx代理服务),访问集群管理系统Rancher,通过Rancher管理kubernetes集群,完成应用的部署和维护等。
开发人员和运维人员通过kubernetes集群的统一入口(Nginx代理服务),访问集群的镜像仓库Harbor,将部署镜像上传至镜像仓库(Harbor),部署应用时候,集群将会从Harbor镜像仓库拉取所需的镜像,完成业务应用的部署。
5、ETCD集群说明
Etcd作为kubernetes集群关键数据库,etcd共有3个节点和kubernetes 3个主节点(Master)共用主机,实现kubernetes配置中心和调度中心的高可用。Etcd数据库保存kubernetes集群和业务应用运行的配置文件,是整个集群的数据中心,不可缺失的关键依赖。
6、集群kube-apiserver高可用实现
kube-api是集群访问接口,集群的高可用关键要素,首先需要需要实现kube-api高可用,分别在3台Master 节点部署haproxy 和 keepalived 虚拟出一个浮动IP,通过负载均衡的方式来实现kube-api高可用。为集群提供统一得高可用api入口。如下图为Master和Etcd高可用服务集成架构图:
7、nfs共享存储
NFS服务器是集群内业务应用数据持久化的关键目的,运行在kubernetes集群内任何一个节点的容器应用数据持久化的实现都要通过访问NFS服务器,将应用的数据保存在NFS共享服务器。NFS服务器的存储能力和储存空间有比较高的要求,使用逻辑卷的形式来实现储存能力,更好的方便后期业务量大的需求,满足动态扩容NFS存储空间大小。(需要注意的是,所有node安装nfs软件,node节点不需启动nfs,仅仅是安装nfs即可)
8、ingress-nginx网关
Ingress-nginx应用服务作用:实现kubernetes集群内应用域名解析,可以实现多个域名和kubernetes统一入口,kubernetes集群内运行的可以通过有ingress-nginx服务提供访问,最后再由NGINX服务器实现负载均衡。用户通过访问NGINX反向代理服务器,将流量转发给ingress-nginx,最终由ingress-nginx实现将流量转发到kubernetes集群内相关应用后端。
下图为ingress-nginx实现原理图
9、nfs-client-provisioner
nfs-client-provisioner是实现kubernetes动态创建PVC的一种数据持久化的解决方案,通过该应用最终实现将微服务的数据持久化到后端储存系统中,我们内部系统集群使用的后端储存是nfs的服务形式。下图”nfs-client-provisioner原理”为kubernetes集群nfs pvc数据卷持久化实现原理。
10、k8s监控系统
Kubernetes集群所有的基础应用服务和业务应用服务都通过Promethus监控系统收集监控指标,存储在时序数据库中,最后通过告警服务通知相关运维人员,和通过grafana可视化页面实现集群集群所有服务的图形化监控。如见下图为,内部系统集群部署promethus监控系统服务关系架构图:
11、文档下载地址