一、背景介绍
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高可用架构见图2。
图2 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高可用架构见图3。
图3 基于nginx的master高可用架构图
2种方案对比结果如下:
架构 |
keepalived + haproxy |
基于nginx |
优点 |
集群扩容、线上维护便利 |
基本达到高可用需求 |
缺点 |
无 |
配置管理量大 |
通过对比2种方案的优缺点,选择keepalived + haproxy作为master高可用架构方案。
3.2 平台易用性
传统的镜像打包,需要编写Dockerfile文件,而Dockerfile参数较多,如何降低学习,沟通成本,提高业务对Kubernetes平台接受程度呢?
为了业务能更好的使用Kubernetes平台,在平台建设过程中,优化了Dockerfile,业务接入Kubernetes平台无需编写Dockerfile,业务镜像的Dockerfile由平台生成。业务只需在rms项目接入时,勾选镜像系统、程序依赖,填写程序执行命令;程序运行目录,系统等配置自动生成dockerfile。
rms的Dockerfile配置示例见图4。
图4 rms的Dockerfile配置示例
3.3 平台完善性
传统实体机部署,迁移Kubernetes平台,如何在引入新的体系架构过程中,确保开发、运维在日常工作不会有额外的学习成本?为此,新增oss系统,提供容器信息展示、操作和监控。
3.3.1 容器信息上报、监控
通过结合Kubernetes标准化特性,建立一系列label规则,使得通过RMS发布的业务容器监控率达100%。
labels:
pod-template-hash: 5775679d57
project-name: oss-prerelease
release: v26-tag-20200813181912
type: project
3.3.2 容器登录、日志
业务2,3级负责人对容器具有登录和日志查看操作的权限。
3.4 平台安全性
安全是业务发展的基石。确保Kubernetes平台的安全性是平台建设的重要一环。容器基于镜像搭建,那么镜像安全则直接决定了容器安全。本文通过镜像自动打包、镜像漏洞扫描、镜像私有化拉取,介绍Kubernetes平台是如何保障业务安全的。
3.4.1 镜像自动打包
基础系统镜像由运维统一提供,业务在发布过程,RMS会集合业务配置和基础系统镜像和拉取业务代码,编译生成业务镜像,并上传到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平台的相关功能见图5。
图5 Kubernetes平台的相关功能
标签:基于,Kubernetes,平台,业务,master,镜像,节点 From: https://www.cnblogs.com/tz2011/p/17237091.html