k8s高可用部署方案

目录

概述:

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、系统架构简图

k8s高可用部署方案_第1张图片

3、k8s架构原理图

k8s高可用部署方案_第2张图片

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高可用服务集成架构图:

k8s高可用部署方案_第3张图片

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实现原理图

k8s高可用部署方案_第4张图片

9、nfs-client-provisioner

        nfs-client-provisioner是实现kubernetes动态创建PVC的一种数据持久化的解决方案,通过该应用最终实现将微服务的数据持久化到后端储存系统中,我们内部系统集群使用的后端储存是nfs的服务形式。下图”nfs-client-provisioner原理”为kubernetes集群nfs pvc数据卷持久化实现原理。

k8s高可用部署方案_第5张图片

10、k8s监控系统

        Kubernetes集群所有的基础应用服务和业务应用服务都通过Promethus监控系统收集监控指标,存储在时序数据库中,最后通过告警服务通知相关运维人员,和通过grafana可视化页面实现集群集群所有服务的图形化监控。如见下图为,内部系统集群部署promethus监控系统服务关系架构图:

k8s高可用部署方案_第6张图片

11、文档下载地址

        https://download.csdn.net/download/weixin_44770684/87654185

你可能感兴趣的:(云原生,kubernetes,docker,云原生)