基于Kubernetes的平台设计和实现

一、背景介绍

1.1 问题

随着移动互联网的蓬勃发展,业务逻辑愈发复杂,规模愈发庞大,更新迭代愈发频繁,用户对应用程序的Qps和SLA有了更高的要求:更高效、更灵活和更可靠。面对成千上万的后端服务,复杂的配置和环境,使软件交付的周期变的漫长,人为事故风险升高。

1.2 现状

1.3 解决方案

 

二、Kubernetes的特点与架构

本章先简要介绍Kubernetes的相关知识,然后结合实际业务需求,概述相关技术和方案。

2.1 Kubernetes的特点

2.2 Kubernetes的架构

 

三、如何构建高效的Kubernetes平台

根据业务需要,直面业务痛点,如何保证业务部署高效、稳定地由传统物理机转向Kubernetes平台,同时保证Kubernetes平台接入率呢,本章将从以下4个方面论述构建高效的Kubernetes平台:

3.1 平台可用性

3.1.1 Kubernetes集群高可用架构

架构需求:Master模块高可用,集群维护成本低。

方案一:keepalived + haproxy

实现原理:通过keepalived + haproxy实现的,集群之间通讯通过vip来实现,确保Master节点的高可用;由haproxy接收提供端口转发功能,转发请求到真实master节点。当master 主节点宕机后。vip会漂移到备用节点,haproxy 亦会将主节点踢除。客户端(集群node节点)通讯不受影响。

keepalived + haproxy的master高可用架构见下图。

方案二:基于nginx反向代理

实现原理:通过在每台node节点上安装nginx,由nginx通过内部的负载均衡将node节点上需要通过访问master,kube-apiserver组件的请求,反代到两台k8s-master节点上,这样就可以实现master节点的高可用。当任意一台master节点宕机后,也可以通过nginx负载均衡到另一个master节点上。kube-scheduler以及kube-controller-manager高可用则是在两台master配置文件设置leader-elect参数。

基于nginx的master高可用架构见下图。

 

2种方案对比结果如下:

 

架构

keepalived + haproxy

基于nginx

优点

集群扩容、线上维护便利

基本达到高可用需求

缺点

配置管理量大

通过对比2种方案的优缺点,选择keepalived + haproxy作为master高可用架构方案。

 

3.2 平台易用性

传统的镜像打包,需要编写Dockerfile文件,而Dockerfile参数较多,如何降低学习,沟通成本,提高业务对Kubernetes平台接受程度呢?

为了业务能更好的使用Kubernetes平台,在平台建设过程中,优化了Dockerfile,业务接入Kubernetes平台无需编写Dockerfile,业务镜像的Dockerfile由平台生成。业务只需在发布项目接入时,勾选镜像系统、程序依赖,填写程序执行命令;程序运行目录,系统等配置自动生成dockerfile。

发布系统的Dockerfile配置示例见下图。

 

3.3 平台完善性

传统实体机部署,迁移Kubernetes平台,如何在引入新的体系架构过程中,确保开发、运维在日常工作不会有额外的学习成本?为此,新增管理系统,提供容器信息展示、操作和监控。

3.3.1 容器信息上报、监控

通过结合Kubernetes标准化特性,建立一系列label规则,使得通过发布系统发布的业务容器监控率达100%。

3.3.2 容器登录、日志

业务负责人对容器具有登录和日志查看操作的权限。

 

3.4 平台安全性

安全是业务发展的基石。确保Kubernetes平台的安全性是平台建设的重要一环。容器基于镜像搭建,那么镜像安全则直接决定了容器安全。本文通过镜像自动打包、镜像漏洞扫描、镜像私有化拉取,介绍Kubernetes平台是如何保障业务安全的。

3.4.1 镜像自动打包

基础系统镜像由运维统一提供,业务在发布过程,发布系统会集合业务配置和基础系统镜像和拉取业务代码,编译生成业务镜像,并上传到Harbor仓库中。业务镜像打包,没有人工参与环节,杜绝人为污染的发生。

3.4.2 镜像漏洞扫描

Harbor结合Clair工具,对Harbor仓库的镜像进行一天一次的安全扫描。Clair首先对镜像进行特征的提取,然后再将这些特征匹配CVE漏洞库,若发现漏洞则进行提示及修补,其功能侧重于扫描容器中的OS及APP的CVE漏洞。

3.4.3 镜像私有化拉取

由于业务镜像包含业务代码,为防止业务代码泄漏,在建立Kubernetes集群的过程中,限制了Kubernetes集群登录Harbor仓库的权限,各部门的Kubernetes集群只能拉取对应部门的镜像,且Harbor账号密码经过加密处理。

 

四、总结

本文从系统集成相关技术出发,简述了Kubernetes平台的核心特性和关键技术,主要研究了基于Kubernetes的平台设计和实现。首先针对业务现存痛点提出合理的需求分析和描述,然后结合业界主流的容器体系,选择合适的方案,并从4个方面:平台可用性、平台易用性、平台完善性、平台安全性,详细阐述并构建高效的Kubernetes平台。

Kubernetes平台的相关功能见下图。

 

 

 

 

posted @   疯狂搬砖  阅读(202)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
点击右上角即可分享
微信分享提示