k8s高可用部署方案
k8s高可用部署方案
目录
概述:
内部系统基于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、文档下载地址
更多推荐



所有评论(0)