AWS 平台上如何智能化管理容器集群最新最炫的容器技术更新
2 0 1 8 . 0 1 . 1 0
薛军 A W S 解决方案架构师
容器化技术在企业中应用趋势
业务创新驱动企业上云之路
App
已有的应用新的应用
采用现代的微服务和DevOps 框架和方法
容器化 利用现代的云基础设施:迁移上云云原生应用批处理
持续的业务创新
容器与云平台:协助客户扩展容器服务
Amazon
EC2Amazon
ECS
AWS
Lambda
虚拟机 E C 2 容器 / E C S E K S … 无服务器 / L a m b d a
运维复杂度 /开发简易程度
部署
团队
架构
优势
挑战
服务器
运维
多层架构
稳定
比较重
容器集群
DevOps
微服务
可移植跨数据中心
集群管理和容器编排
Serverless
开发
事件驱动
可扩展
和AWS紧密集成
用户关注VM、容器和代码,并管理容器集群
用户关注容器和代码
用户只关注代码
企业采用容器技术的关键因素
在哪里运行? 容器集群
ServerDocker
B
i
n
s
/
L
i
b
s
B
i
n
s
/
L
i
b
s
A
p
p
2
A
p
p
1
ServerDocker
B
i
n
s
/
L
i
b
s
B
i
n
s
/
L
i
b
s
A
p
p
2
A
p
p
1
ServerDocker
B
i
n
s
/
L
i
b
s
B
i
n
s
/
L
i
b
s
A
p
p
2
A
p
p
1
ServerDocker
B
i
n
s
/
L
i
b
s
B
i
n
s
/
L
i
b
s
A
p
p
2
A
p
p
1
ServerDocker
B
i
n
s
/
L
i
b
s
B
i
n
s
/
L
i
b
s
A
p
p
2
A
p
p
1
ServerDocker
B
i
n
s
/
L
i
b
s
B
i
n
s
/
L
i
b
s
A
p
p
2
A
p
p
1
ServerDocker
B
i
n
s
/
L
i
b
s
B
i
n
s
/
L
i
b
s
A
p
p
2
A
p
p
1
ServerDocker
B
i
n
s
/
L
i
b
s
B
i
n
s
/
L
i
b
s
A
p
p
2
A
p
p
1
ServerDocker
B
i
n
s
/
L
i
b
s
B
i
n
s
/
L
i
b
s
A
p
p
2
A
p
p
1
ServerDocker
B
i
n
s
/
L
i
b
s
B
i
n
s
/
L
i
b
s
A
p
p
2
A
p
p
1
ServerDocker
B
i
n
s
/
L
i
b
s
B
i
n
s
/
L
i
b
s
A
p
p
2
A
p
p
1
ServerDocker
B
i
n
s
/
L
i
b
s
B
i
n
s
/
L
i
b
s
A
p
p
2
A
p
p
1
ServerDocker
B
i
n
s
/
L
i
b
s
B
i
n
s
/
L
i
b
s
A
p
p
2
A
p
p
1
ServerDocker
B
i
n
s
/
L
i
b
s
B
i
n
s
/
L
i
b
s
A
p
p
2
A
p
p
1
ServerDocker
B
i
n
s
/
L
i
b
s
B
i
n
s
/
L
i
b
s
A
p
p
2
A
p
p
1
ServerDocker
B
i
n
s
/
L
i
b
s
B
i
n
s
/
L
i
b
s
A
p
p
2
A
p
p
1
ServerDocker
B
i
n
s
/
L
i
b
s
B
i
n
s
/
L
i
b
s
A
p
p
2
A
p
p
1
ServerDocker
B
i
n
s
/
L
i
b
s
B
i
n
s
/
L
i
b
s
A
p
p
2
A
p
p
1
ServerDocker
B
i
n
s
/
L
i
b
s
B
i
n
s
/
L
i
b
s
A
p
p
2
A
p
p
1
ServerDocker
B
i
n
s
/
L
i
b
s
B
i
n
s
/
L
i
b
s
A
p
p
2
A
p
p
1
ServerDocker
B
i
n
s
/
L
i
b
s
B
i
n
s
/
L
i
b
s
A
p
p
2
A
p
p
1
ServerDocker
B
i
n
s
/
L
i
b
s
B
i
n
s
/
L
i
b
s
A
p
p
2
A
p
p
1
ServerDocker
B
i
n
s
/
L
i
b
s
B
i
n
s
/
L
i
b
s
A
p
p
2
A
p
p
1
ServerDocker
B
i
n
s
/
L
i
b
s
B
i
n
s
/
L
i
b
s
A
p
p
2
A
p
p
1
ServerDocker
B
i
n
s
/
L
i
b
s
B
i
n
s
/
L
i
b
s
A
p
p
2
A
p
p
1
ServerDocker
B
i
n
s
/
L
i
b
s
B
i
n
s
/
L
i
b
s
A
p
p
2
A
p
p
1
ServerDocker
B
i
n
s
/
L
i
b
s
B
i
n
s
/
L
i
b
s
A
p
p
2
A
p
p
1
ServerDocker
B
i
n
s
/
L
i
b
s
B
i
n
s
/
L
i
b
s
A
p
p
2
A
p
p
1
ServerDocker
B
i
n
s
/
L
i
b
s
B
i
n
s
/
L
i
b
s
A
p
p
2
A
p
p
1
ServerDocker
B
i
n
s
/
L
i
b
s
B
i
n
s
/
L
i
b
s
A
p
p
2
A
p
p
1
容器编排 容器镜像管理
63% of Kubernetes workloads
run on AWS today —CNCF survey
AWS 是客户首选的容器应用技术平台
35%of Docker users on AWS
using Amazon ECS—DATADOG survey
Amazon ECS 是 AWS 客户首选的容器集群管理和编排平台
采用 ECS 容器管理平台的客户
为何客户选择将生产负载放在 AWS 容器环境
AWS VPC 网路模式
进阶的任务置放策略
深度集成 AWS 相关服务
ECS CLI…
全球部属
强力的编排引擎
自动扩展组
CloudWatch 监控指标
负载均衡器
倾听客户的需求!
50+ 2015 后超过50 次的更新
客户
发布
反馈/ 新用户案例
理解与学习
实验,
更新,
发布新服务
构建容器化应用的要素
容器网络
容器集群管理
容器编排和调度
安全监控与日志
服务注册与发现
关键技术之一:容器集群管理
集群管理器面临的挑战
Scheduling and Orchestration
集群管理 容器置放引擎
Availability Zone #1 Availability Zone #2 Availability Zone #3
多环境自动化构建:基础设施即代码能力
Environment git repo
Env templates
dev
qa
prod
高可用和弹性:集群管理服务和容器实例
● 92% CPU 预留● 58% Memory 预留● 弹性扩展策略:根据指标 Scale Out 和 Scale In
基础资源的监控、日志和警报
服务级别指标可用
CloudWatch 日志CloudWatch 事件支持
使用X-Ray实现容器运行环境的分布式追踪分析
AZ 1 AZ 2
ECS Cluster
ECS Container Instance ECS Container Instance
Task A Task B Task C
X-Ray
daemon
X-Ray
daemon
X-Ray API
Client
ALB
我能更专注在应用而不是容器基础设施吗?
ECS Instance ECS Instance ECS Instance ECS InstanceECS Instance ECS Instance
EC2
FARGATE
Notifications
Amazon ECS CLUSTER
Availability Zone #1 Availability Zone #2 Availability Zone #3
Subnet 2
172.31.2.0/24Subnet 1
172.31.1.0/24
Subnet 3
172.31.3.0/24
Web
Shopping
Cart
让客户专注于开发应用
无需管理基础设施
围绕任务为中心的原生 API
基于实际的任务资源计费
Spot 竞价实例为容器集群提供更多可能
请参考: https://aws.amazon.com/blogs/compute/powering-your-amazon-ecs-cluster-with-
amazon-ec2-spot-instances/
Amazon
ECS AWS
CloudFormation
AWS Batch
Auto Scaling
关键技术之二:容器编排和调度
选择 AWS 托管容器服务 ECS
在 AWS上如何继续使用 Kubernetes?
Amazon EC2
conjure-up
Kubernetes Operations
Tectonic Installer
社区解决方案 合作伙伴
“请帮我运行 Kubernetes ”
“Run Kubernetes for me.”
E L A S T I C C O N TA I N E R S E R V I C E F O R K U B E R N E T E S
(EKS)
EKS 设计原则
和开源K u b e r n e t e s
一致体验
U p s t r e a m
保持和上游同步支持企业生产级别
的容器应用按需和 AW S 服务
无缝集成
mycluster.eks.amazonaws.com
Availability
Zone 1
Availability
Zone 2
Availability
Zone 3
Kubectl
创建 E K S 集群
创建并添加 W o r k e r 节点
启动 K 8 S 插件
启动容器应用
EKS 用户体验
1.7.41.7.5
Version
1.7
Version
1.8
可选择的自动升级配置
关键技术之三:容器网络模型
Amazon VPC 容器联网模式 –支持 ECS172.31.0.0/16
Subnet
172.31.1.0/24
Internet
Other Entities in VPC
EC2 LB DB etc.
Private IP
172.31.1.164
• Amazon VPC 联网模式 - 每个任务都有自己的接口
• 提供动态的私有 IP 地址和内部DNS 名称
• 使用标准网络监控工具:Flowlogs
• 所有的 Fargate 任务运行在用户VPC 与子网
• 配置安全组以控制入站和出站流量
• 公有IP的支持
• 将您的应用程序部属跨越多个可用区域(AZ)中的子网以提高可用性
us-east-1a
us-east-1b
us-east-1c
ENI Fargate
TaskPublic /
208.57.73.13 /
https://github.com/aws/amazon-ecs-agent/blob/master/proposals/eni.md
Amazon VPC CNI 网络插件实现—支持 E K S 和 B Y O K 8 S
原生的 VPC 网络模型通过CNI 插件支持 K8S
Pods 拥有和 VPC 中节点Nodes)一样的 VPC 网络
地址
简单、安全、高效的网络模型
Github 开源
…{ }
h t t p s : / / g i t h u b . c o m / a w s / a m a z o n - v p c - c n i - k 8 s
Nginx Pod
Java Pod
ENI
Secondary IPs:
10.0.0.1
10.0.0.2
Veth IP: 10.0.0.1
Veth IP: 10.0.0.2
Nginx Pod
Java Pod
ENI
Veth IP: 10.0.0.20
Veth IP: 10.0.0.22
Secondary IPs:
10.0.0.20
10.0.0.22
ec2.associateaddress()
VPC Subnet – 10.0.0.0/24
实例 1 实例 2
关键技术之四:服务注册发现
常见的服务注册发现机制
负载均衡 键值对存储Key-value store
Service Mesh
Istio/Envovy
通过 Route53 实现服务注册及发现
ECS
Route 53
alpha.internal
App: IP3, IP4
Frontend: IP1, IP2
beta.internal
App: IP3, IP4
Frontend: IP1, IP2
用户
Route 53 提供API来创建• Namespace
• 每个服务的CNAME
• 每个Task的A 记录• 包括任务及端口在
内的Service记录
ECS 运维管理服务的动态状态信息
总结
E K S 2 0 1 8 年正式发布
了解更多 :
A W S . A M A Z O N .
C O M / E K S
A W S . A M A Z O N .
C O M / E C S
A W S . A M A Z O N .
C O M / F A R G A T E
• AWS 是企业容器应用的首选平台, ECS 是 AWS 客户首选的容器编排引擎
• 使用 Fargate,您可以专注于设计和构建应用程序,而不是管理运行应用程序的基础设施
• EKS 帮助客户管理 Master 高可用集群,同时保持原生的K8S API 操作体验
• AWS K8S CNI 开源插件支持客户集成利用成熟、高效和安全的 VPC 网络
• ECS 结合 Route53 提供基于 DNS 的服务自动注册和发现