基于Kubernetes落地化的思考与实践

微风

2019/03/24 发布于 技术 分类

文字内容
1. AWS Kubernetes 落地化思考与实践 姚远,AWS解决方案架构师
3. 演讲日程 • • • • AWS容器平台发展历程 AWS上运行Kubernetes集群的选择 什么是EKS? EKS架构详细介绍
4. AWS容器管理平台的前世今生 客户 发布 实验, 更新, 发布新服务 50+ 反馈/ 新用户 案例 理解与学习 2015 后超过 50 次的更新
5. Amazon ECS(Elastic Container Service) AWS 2015年推出的第一款云中托管的容器集群管理服务 AWS VPC 网络模式 全球部署 进阶的任务置放策略 强力的编排引擎 深度集成 AWS 相关服务 自动扩展组 ECS CLI CloudWatch 监控指标 负载均衡器
6. AWS Fargate 让客户专注于开发应用 无需管理基 础设施 围绕任务为中 心的原生 API 基于实际的任 务资源计费
7. 开发者青睐Kubernetes 自有数 据中心 CLOUD 云计算 服务广度 可扩展 性能
8. AWS 是客户首选的容器应用技术平台 57% of Kubernetes workloads run on AWS today —CNCF survey https://www.cncf.io/blog/2017/12/06/cloud-native-technologies-scaling-production-applications/
9. Kubernetes Cluster 搭建的选择 开发测试环境—Minikube 开源社区—Kops • List: kubernetes-aws.io 企业级 • Rancher • CoreOS Tectonic • Red Hat OpenShift 自定义 • CloudFormation • Terraform AWS 合作伙伴: Docker, Heptio, Mesosphere
10. AWS 上自建 Kubernetes 集群典型架构 Internet gateway VPC NAT gateway VPC NAT gateway VPC NAT gateway Classic Load Balancer(s) Public Subnet Public Subnet Public Subnet Kubernetes Cluster State M EBS M EBS ASG ASG W M EBS ASG W W Private Subnet Private Subnet Private Subnet Availability Zone Availability Zone Availability Zone
11. 自建 Kubernetes 的痛点 服务的注册/发现 网络插件管理 集群 扩展/收缩 与云平台的集成 配置管理 监控 健康检查 权限管理 任务放置策略
12. Amazon EKS (E l a s t i c C o n t a i n e r S e r v i c e f o r Kubernetes) 和开源 Kubernetes 一致体验 Upstream 保持和上游同步 支持企业生产级别 的容器应用 按 需 和 AW S 服 务 无缝集成
13. Amazon EKS 工作原理
14. Amazon EKS 集群典型架构 Master Workers Availability Zone 1 Master Workers Availability Zone 2 Master Workers Availability Zone 3 AWS Managed AWS 托管 Customer Account 客户账号
15. 如何访问 Amazon EKS 集群 Kubectl 可用区1 mycluster.eks.amazonaws.com 可用区2 可用区3
16. Amazon EKS 用户体验 创建 EKS 集群 启动 K8S 插件 创建并添加 Wo r ke r 节 点 启动容器应用
17. Amazon EKS Master 节点 创建过程 创建 Master 创建高可用的 Master 集群 集成 IAM 认证授权 弹性伸缩 证书管理 创建高可用的 etcd 集群 创建和配置 负载均衡
18. Amazon EKS Master 节点弹性伸缩 AWS CloudTrail Amazon CloudWatch Master EKS监控Master节点的性 能指标,并在必要时进行 扩展,保证Kubernetes集 群控制平面的高可用性 通过CloudTrail记录EKS API 调用,Kubernetes Master 节点日志可以通过 CloudWatch 获得
19. 支持Kubernetes集群的Amazon VPC CNI网络插件 {…} 原生的 VPC 网络模型 通过 CNI 插件支持 K8S Pods 拥有和 VPC 中节 点Nodes)一样的 VPC 网络地址 简单、安全、高效的 网络模型 Github 开源 https://github.com/aws/amazon-vpc-cni-k8s
20. 可以用在哪些 Kubernetes 场景? • 任何运行在 AWS 上的 Kubernetes 集群: • EKS • BYO Kubernetes • Daemonset 方式部署 kubectl create –f eks-cni.yaml
21. 基于Amazon VPC CNI网络插件连接过程 ec2.associateaddress() ENI Secondary IPs:'>IPs: 10.0.0.20 10.0.0.22 Nginx Pod Veth IP:'>IP:'>IP:'>IP:'>IP:'>IP:'>IP:'>IP: 10.0.0.1 Java Pod Veth IP:'>IP:'>IP:'>IP:'>IP:'>IP:'>IP:'>IP: 10.0.0.2 实例 1 ENI Secondary IPs:'>IPs: 10.0.0.1 10.0.0.2 VPC Subnet – 10.0.0.0/24 Nginx Pod Veth IP:'>IP:'>IP:'>IP:'>IP:'>IP:'>IP:'>IP: 10.0.0.20 Java Pod Veth IP:'>IP:'>IP:'>IP:'>IP:'>IP:'>IP:'>IP: 10.0.0.22 实例 2
22. Amazon EKS 如何保障网络安全? Kubernetes 网络策略 定义基于网络安全规 则的访问控制 Calico 是目前领先的网 络策略 API 接口的实 现方案 开源,活跃的社区 (>100 贡献者) Tigera 可提供商业支持 https://docs.aws.amazon.com/zh_cn/eks/latest/userguide/calico.html
23. Kubernetes集成 AWS IAM 认证授权 • AW S 原 生 的 访 问 控 制 • 和 Heptio 合作开发 • 支持 Kubectl 和 Worker 节点的认证授权 • 兼容 Kubernetes RBAC
24. 用户认证和授权过程 1) Passes AWS Identity 2) Verifies AWS Identity Kubectl 4) K8s action allowed/denied K8s API 3) Authorizes AWS Identity with RBAC AWS Auth
25. Kubernetes 集群的可视化 Cluster Node Container Application
26. Amazon EKS日志管理 日志 Amazon CloudWatch Logs Master Worker Fluentd DaemonSet Worker AZ1 Kubectl logs Elasticsearch (索引), Fluentd (存储), 以及 Kibana (可视化) Amazon Elasticsearch Service Kibana Master ASG Worker Worker ASG AZ2 Region https://github.com/aws-samples/aws-workshop-for-kubernetes/tree/master/02-path-working-withclusters/204-cluster-logging-with-EFK
27. 可选择的自动升级配置 Version 1.10 Version 1.9.2 1.9.1 1.9
28. Amazon EKS 节点弹性伸缩(Cluster-Autoscaler) Cluster-autoscaler add-on 与ASG结合实 现worker nodes节点扩 展 mycluster.eks.amazonaws.com Kubectl EC2 Spot 可用区1 On-Demand EC2 On-Demand EC2 可用区2 可用区3 Worker nodes 可以选 择On-Demand 或者 EC2 Spot节点注册在 EKS集群中
29. Amazon EKS Ingress 选择(ELB/NLB) EC2 instances Nginx Pods 1) Request to NGINX Pod {NLB}:443 Internet 2) NLB Forwards to the node {node:32001} NLB 10001:8080 nginx-service :32002 kube-proxy :32001 3) Proxies request to the k8s service 4) 10002:8080 Load Balances to pods 10003:8080
30. Amazon EKS Ingress 选择(ALB) EC2 instances Nginx Pods 2) 1) Request to NGINX Pod {ALB}:443 ALB Routes based on the path. /api kube-proxy :32001 nginx-service :32003 10002:8080 Webapp Pods ALB /home kube-proxy :32002 3) Proxies request to the k8s service webapp-service :32004 4) Load Balances to pods 10002:8080
31. Amazon EKS 合作伙伴生态体系
32. Amazon EKS 客户案例
33. 未来由你选择 ECS EKS 1. 选择需要的编排工具 2. 选择需要的运行模式 EC2 Fargate EC2 Fargate
36. Q&A Thank you! © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.