首页 > 其他分享 >基于Kubernetes的平台设计和实现

基于Kubernetes的平台设计和实现

时间:2023-03-20 17:33:25浏览次数:32  
标签:基于 Kubernetes 平台 业务 master 镜像 节点

一、背景介绍

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

相关文章