第1页
基于kubernetes的企业级容器云
周彩钦 | 联想PaaS团队资深工程师
2017/04/18
第2页
2016 Lenovo Internal. All rights reserved.
第3页
大纲
• 背景和挑战 • 企业级容器云设计与思考 • 让一切自动化 • 监控与日志 • Showcase • 那些坑,那些事
2017 Lenovo Internal. All rights reserved.
第4页
背景和挑战
• IT环境比较复杂 • 集中运维模式,人少活多 • 应用类型比较复杂 • 缺少标准和规范
2017 Lenovo Internal. All rights reserved.
第5页
背景和挑战
• 内部系统演进
脚本化
每个项目自维护 难以规范和升级
工具化
抽象成工具 模板化 一键化 零散,不成体系
平台化
多个工具集成 最佳搭配 合力作战
2017 Lenovo Internal. All rights reserved.
第6页
背景和挑战
• 挑战
依然不够自动化
服务割裂,申请流程 人工参与的半自动化
资源使用率低
底层资源使用率低
规范落地困难
系统分散,难以统一
自服务平台
高效协作,加速迭代
2017 Lenovo Internal. All rights reserved.
第7页
背景和挑战
• 容器之道
加速 交付
节约 资源
统一 规范
构建 平台
2017 Lenovo Internal. All rights reserved.
第8页
企业级容器云设计与思考
• 设计思路
从成本方面衡量
资源利用率,人力成本,投入产出比
从长远技术方向考虑
未来方向,新技术潮流,公司战略
从需求出发
需求驱动,勿求大而全,没有银弹
从用户的角度思考
简单,学习成本低,改变成本小
从技术的角度评估
高效,稳定,可扩展
2017 Lenovo Internal. All rights reserved.
第9页
企业级容器云设计与思考
• 技术的抉择
2017 Lenovo Internal. All rights reserved.
Console
前端
用户界面
Router
Console
后端
后端Restful API
路由 API Gateway
Builder
镜像构建
第10页
容器云设计--多集群支持的容器云
• What?
– 多个K8S容器云集群统一管理
• Why?
跨数据中心
技术和管理难度大
2 混合基础架构 物理机,VMWare,OpenStack,AWS,Azure
统一用户体验
多集群统一管理,无需切换平台系统
2017 Lenovo Internal. All rights reserved.
第11页
容器云设计--多集群支持的容器云
• 多集群,一平台
Builder
K8S-1
Router1
2017 Lenovo Internal. All rights reserved.
Console Front End
Dev/Ops/Admin
Console Back End
Registry
K8S-2
Router2
End User
第12页
容器云设计—网络和路由
• 网络方案及路由设计—简单,低侵入
Create Service app01
Console
Dev/Ops
2017 Lenovo Internal. All rights reserved.
app01.xpaas.lenovo.com Flannel网络
Router
User
K8S Service
Pod Pod
DNS
*.xpaas.lenovo.com Router IP
Service Name app01.xpaas.lenovo.com app02.xpaas.lenovo.com
…
K8S Cluster IP 172.19.228.1 172.19.228.2
…
第13页
容器云设计—部署和回滚
• 部署流程 or 回滚流程
console
• 配置请求 • 部署请求
Deployment StatefulSet
kubernetes
• 部署服务
2017 Lenovo Internal. All rights reserved.
builder
• 准备构建环境 • 生成Dockerfile • Build镜像 • Push镜像
Docker Registry
第14页
容器云设计-- DevOps的支持
• 常用DevOps工具的支持,快速融入现有开发体系
Push
Web Hook
Upload
XPlatform
Console Restful
API
K8S-1 K8S-2
2017 Lenovo Internal. All rights reserved.
第15页
2017 Lenovo Internal. All rights reserved.
容器云设计– 存储方案
• 存储方案选择,主要给服务组件提供服务,如MySQL,Redis等
需求
数据持久化
数据共享
存储技术
RBD
对象存储 S3/FastDFS/TFS
使用方案
K8S Dynamic Provisioning StorageClass
应用自己管理
第16页
容器云设计-- 企业权限设计
• 功能权限:允许或拒绝用户使用系统提供的某个功能
2017 Lenovo Internal. All rights reserved.
功能/资源 修改系统配置 增加服务模板 创建服务
角色
用户
*
* Admin
*
* user01
OPS
user02
User
第17页
容器云设计-- 企业权限设计
• 业务权限/数据权限:允许或拒绝用户进行某个数据的增删改查操作
Project
删 增
Owner Master
Service
改 查
Developer Guest
2017 Lenovo Internal. All rights reserved.
第18页
让一切自动化--工欲善其事,必先利其器
• 从设计开始之初就把自动化理念融入进来 • 充分利用Docker的优势,加速平台的迭代 • 配置即代码
集群安装运维自动化 组件安装运维自动化 服务部署上线自动化
环境安装 配置管理 部署上线
2017 Lenovo Internal. All rights reserved.
第19页
监控与日志
• 监控:传统监控+新监控平台
Applications
Docker Kubernetes
OS CPU/Disk/Memory
2017 Lenovo Internal. All rights reserved.
第20页
监控与日志
• 日志平台:多种采集手段并行
stdout stderr
Applications
log tail K8S Pod LogMinion
Docker
stdout stderr
K8S DaemonSet logspout
Kubernetes OS
log tail
K8S DaemonSet
2017 Lenovo Internal. All rights reserved.
Console
Kibana
Kafka Cluster
ES Cluster
Log Parser
第21页
Showcase
• 平台主要功能特点
– 多集群管理 – 自服务式应用发布和上线部署 – 应用快速Scale Out – 应用滚动更新 – 集群容器登陆 – 应用日志查看 – 支持MySQL/Redis等常用组件服务市场
2017 Lenovo Internal. All rights reserved.
第22页
Showcase
• 部署示例:配置简单,自服务
上传包 打包镜像并部署完成部署上线 配置应用 选择应用类型/模板
2017 Lenovo Internal. All rights reserved.
第23页
Showcase
• Scale Out横向扩展:简单,快速
{“spec”:{ “replicas”:"6"}}
2017 Lenovo Internal. All rights reserved.
第24页
Showcase
• 滚动更新:实时查看更新进度
2017 Lenovo Internal. All rights reserved.
第25页
2017 Lenovo Internal. All rights reserved.
Showcase
• 容器访问:使用exec的api,通过websocket提供web终端
第26页
Showcase
• 日志查看:实时查看应用日志
2017 Lenovo Internal. All rights reserved.
第27页
Showcase
• 资源管理:项目级别的资源控制
2017 Lenovo Internal. All rights reserved.
第28页
那些坑,那些事
• 底层平台的那些坑
– K8S Deployment ID出现重复,导致部署后不更新应用 https://github.com/kubernetes/kubernetes/issues/29735
– K8S Dashboard卡顿的问题 – harbor服务器重启后出现mysql无主进程
• 平台开发的那些事
– 平台健壮性:当服务器频繁挂掉的时候,才知道现实和理想的距离 – Angular2出新版本了,更还是不更
2017 Lenovo Internal. All rights reserved.
第29页
小结
• 背景和挑战 • 企业级容器云设计与思考
– 设计思路 – 多集群支持和整体架构 – 网络方案和路由设计 – 部署、回滚流程 – DevOps支持 – 存储方案 – 权限设计
• 通过Ansible让运维自动化 • 监控与日志 • Showcase,系统流程示例 • 踩过的坑
2017 Lenovo Internal. All rights reserved.
第30页
zhoucq1@lenovo.com caiqinzhou@gmail.com