小米生态云应用引擎实践


小米生态云的应用引擎实践 李波,小米生态云 SACC2017 大纲 • 小米生态云简介 • 小米生态云应用引擎演进 • 未来规划 SACC2017 小米生态云 • 为小米生态链及合作伙伴提供一站式云服务及解 决方案 • 完整的产品和服务 – 20+ – 涵盖云计算 大数据 人工智能 – 统一使用小米账号体系 • 效率 安全 自由 成本 大数据 人工智能 • 国际化布局 SACC2017 小米生态云 应用引擎 用户管理控制台 认证与授权 (集成小米账号) 用户权限管理 (用户/组/角色) 计量计费 事件审计 应用管理 文件存储 (FDS) 消息队列(EMQ) 日志采集与分析 结构化存储(SDS) 流式消息队列(Talos) 监控报警 数据处理(EMR) RPC服务治理 计划任务 数据库服务(RDS) 缓存服务 第三方服务 大数据服务 用户画像 推送推广 数据工场 数据通道 ……. 人工智能服务 深度学习 智能语音 …… 应用2 (公司A) 应用1 (公司A) 应用n (公司N) 应用3 (公司B) CLI SACC2017 小米生态云区域分布 SACC2017 小米生态云应用引擎演进 SACC2017 应用引擎v1 • 基于Cloud Foundry • 集成小米账号,支持公司及部门隔离,用户和角 色管理 • 支持主流开发语言以及静态页面和二进制文件 ( Heroku Buildpack) • 支持Docker应用 • 域名及证书 SACC2017 优点和缺点 • 优点 – 开箱即用的PaaS平台 – 完整的权限和授权体系 – 成熟稳定,非常适用于无状态Web应用 • 缺点 – Buildpack机制和基础文件系统不灵活,定制难度大 – 生态链公司开发测试逐步迁移到Docker平台,与生产环境 不一致 – 无法限制应用的CPU绝对用量 – 不支持Cluster应用、UDP应用 – Docker支持不完整,非原生体验 – 自有体系,组件繁多,部署运维复杂 – 社区参与度和活跃度下降 SACC2017 应用引擎v2 • 基于Kubernetes • 原生Docker体验 • 支持TCP/UDP应用 • 原生计划任务支持 • 配置和敏感信息管理 • CPU的绝对用量限制 • 支持Cluster应用 SACC2017 扩展 定制 • 高可用部署 • 认证授权 • 安全隔离 • 应用抽象和封装 • 应用自动扩容 • 容器直连 • 外部HTTP/HTTPS以及TCP/UDP服务 • 命令行工具 • 日志 • 监控报警 • 镜像安全扫描 SACC2017 整体架构 Web Console CLI nginx nginx Nginx Ingress Controller APP Browser API API API API API ECAA API API Log API API M&A API API Node etcd API API Scheduler API API Controller- manager Mi Account 计量计费 自动扩容 镜像仓库 SACC2017 az2 az1 高可用部署 master-1 node-1 node-3 node-N etcd-1 etcd-3 master-2 node-2 node-4 node-M etcd-2 API Server LB (DNS Name/IP) kubectl label nodes node-1 failure-domain.beta.kubernetes.io/region=cn-bj-6 failure-domain.beta.kubernetes.io/zone=cn-bj-6a kubectl label nodes node-2 failure-domain.beta.kubernetes.io/region=cn-bj-6 failure-domain.beta.kubernetes.io/zone=cn-bj-6b SACC2017 多租户环境 • 安全 – 权限控制 – 网络隔离 • 资源公平分配 – CPU – 流量 SACC2017 Kubernetes ECAA Mi Account 认证授权 o1-namespace1 Org1 o1-namespace2 Xiaomi ID Group User Role o1-namespace3 RBAC Authz role rolebinding Webhook Authn /token Client 1 2 3 /authenticate 4 5 SACC2017 网络隔离 应用引擎VPC A公司应用 A公司应用 A公司应用 A公司应用 A公司应用 B公司应用 A公司VPC B公司VPC 数据库 缓存 数据库 缓存 VPC对接 VPC对接 VPC安全组 VPC安全组 ✗ ✗ 应用引擎网络策略 ✓✗ ✗ SACC2017 网络策略实现 • 容器网络: Calico • Calico Policy – 优先级从高到低 • 允许某公司的应用访问该公司的VPC网段(egress) • 允许同一公司的应用之间相互访问(egress+ingress) • 允许所有应用访问kube-dns地址(egress) • 允许Nginx Ingress Controller访问所有应用(ingress) • 禁止所有应用访问所有私有地址(egress) • 允许所有应用 – 访问所有地址(egress) – 被所有地址/应用访问(ingress) SACC2017 Calico Policy • 允许同一公司的应用之间相互访问 SACC2017 Calico Policy • 禁止所有应用访问所有私有地址 SACC2017 流量隔离 • 配置不同的LB – 独立IP – 独立带宽 – 独立的Nginx(如果需要) SACC2017 Kubernetes Web应用抽象和封装 Ingress ReplicaSet Service Deployment Pod Application 0..1 1 1 0..N 1 SACC2017 应用自动扩容 SACC2017 容器直连 Web 直连服务 wss:// Kubernetes wss:// • wss:///api/v1/namespaces//pods//exec?stdo ut=1&stdin=1&stderr=1&tty=1&container=&command =%2Fbin%2Fsh&command=-i SACC2017 外部服务 • HTTP/HTTPS – LB+ Nginx Ingress Controller • TCP/UDP – EIP + Nginx (Stream Proxy) – 端口规划和分配 SACC2017 命令行工具 • 不使用kubectl – 暴露过多细节,功能过于强大 – 认证不便 • 自研工具 – ak/sk认证 – 有限功能 • 自动化运维 – 应用部署,更新,删除 – 应用水平扩容 – 资源指标(CPU,内存) • 实时日志 SACC2017 日志 Nodes Nodes Nodes Fluentd Agent Splunk FDS HDFS Kafka File 实时日志 离线计算 日志下载 实时分析 SACC2017 监控 报警 • 监控 – Nginx Ingress Controller + Lua + Open Falcon – HTTP相关指标 • 报警 – Open Falcon – 短信 – 邮件 SACC2017 镜像安全 • 镜像安全扫描 – Harbor + Clair SACC2017 经验分享 • 资源限制 – ResourceQuota – LimitRange • CronJob – successfulJobsHistoryLimit, failedJobsHistoryLimit – concurrencyPolicy: Forbid/Replace – activeDeadlineSeconds • Events – 导出到外部存储 • Docker – log rotation: --log-driver json-file --log-opt max-size=100m --log-opt max-file=10 • Calico – AWS多AZ: CALICO_IPV4POOL_IPIP=always – 重命名策略: k8s-policy-no-match SACC2017 应用引擎未来规划 • 应用版本管理 • 多应用映射同一域名 • 限制容器磁盘大小 • 应用资源监控 • 报警服务 • 精细化的资源调度 • 集群自动扩容 • Windows支持 SACC2017 SACC2017
还剩29页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

WindStand

贡献于2018-01-08

下载需要 10 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf