企业级容器云平台的落地与实施( 二 )


3. Amazon EKS助力企业快速实现容器化转型
? 如何快速、高效地拥有自己的容器化平台呢?下面一段,就是AWS官网上Amazon EKS的介绍:
? Amazon EKS 是一项托管服务,可让您在 AWS 上轻松运行 Kubernetes,而无需安装、操作和维护您自己的 Kubernetes 控制层面或节点 。Kubernetes 是一个用于实现容器化应用程序的部署、扩展和管理的自动化的开源系统 。
? Amazon EKS 跨多个可用区运行 Kubernetes 控制层面实例以确保高可用性 。Amazon EKS 可以自动检测和替换运行状况不佳的控制层面实例,并为它们提供自动版本升级和修补 。
? Amazon EKS 与许多 AWS 服务集成以便为您的应用程序提供可扩展性和安全性,包括:
· 用于容器镜像的 Amazon ECR
· 用于负载分配的 Elastic Load Balancing
· 用于身份验证的 IAM
· 用于隔离的 Amazon VPC
? Amazon EKS 运行最新版本的开源 Kubernetes 软件,因此您可以使用 Kubernetes 社区中的所有现有插件和工具 。在 Amazon EKS 上运行的应用程序与在任何标准 Kubernetes 环境中运行的应用程序完全兼容,无论此类环境是在本地数据中心还是在公有云中运行都是如此 。这意味着,您可以轻松地将任何标准 Kubernetes 应用程序迁移到 Amazon EKS,而无需修改任何代码 。
4. 理论结合实际,让容器化更直观
? 理论说了一大堆,不如动手玩起来 。下面,我设计一个场景,在Amazon EKS上逐步完成容器化部署,并逐步在每个环节介绍技术细节 。
1) 通过Nginx,做三个页面web1,web2,web3
2)将三个web页面作为一组服务,由Amazon EKS管理
3) 通过http访问,轮询到三个不同的页面,来看到效果
? 注释:web1,web2,web3实际生产应该是一个业务,只不过为了显示实验效果,通过不同的页面,展示轮询的效果
4.1. 环境准备4.1.1. 需要一个AWS账号
4.1.2. 账号资源限制检查,确保有足够的IGW,VPC,EIP等
4.1.3. 安装awscli(包含eksctl)及配置kubectl:
4.1.3.1. awscli安装:
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"unzip awscliv2.zipsudo ./aws/install检查安装结果
$ aws --version安装方法参考链接:
https://docs.aws.amazon.com/zh_cn/cli/latest/userguide/cli-chap-install.html
4.1.3.2. 配置kubectl,
aws eks --region cn-northwest-1 update-kubeconfig --name my-zhy-eks官方配置方法链接:
https://docs.amazonaws.cn/eks/latest/userguide/create-kubeconfig.html
4.2. 创建****Amazon EKS集群:
4.2.1. 创建命令
#命令,参数注释
--node-type 工作节点类型
--nodes 工作节点数量
CLUSTER_NAME 集群名称
AWS_REGION cn-northwest-1:宁夏区; cn-north-1:北京区
创建命令:
AWS_REGION=cn-northwest-1AWS_DEFAULT_REGION=cn-northwest-1CLUSTER_NAME=my-zhy-ekseksctl create cluster --name=${CLUSTER_NAME} --version 1.15 --nodes=3 --node-type t3.medium --managed --alb-ingress-access --region=${AWS_REGION}4.2.2. 成功执行的输出:
eksctl create cluster --name=${CLUSTER_NAME} --version 1.15 --nodes=3 --node-type t3.medium --managed --alb-ingress-access --region=${AWS_REGION}[?]eksctl version 0.32.0[?]using region cn-northwest-1[?]setting availability zones to [cn-northwest-1b cn-northwest-1c cn-northwest-1a][?]subnets for cn-northwest-1b - public:192.168.0.0/19 private:192.168.96.0/19[?]subnets for cn-northwest-1c - public:192.168.32.0/19 private:192.168.128.0/19[?]subnets for cn-northwest-1a - public:192.168.64.0/19 private:192.168.160.0/19[?]using Kubernetes version 1.15[?]creating EKS cluster "my-zhy-eks" in "cn-northwest-1" region with managed nodes[?]will create 2 separate CloudFormation stacks for cluster itself and the initial managed nodegroup[?]if you encounter any issues, check CloudFormation console or try 'eksctl utils describe-stacks --region=cn-northwest-1 --cluster=my-zhy-eks'[?]CloudWatch logging will not be enabled for cluster "my-zhy-eks" in "cn-northwest-1"[?]you can enable it with 'eksctl utils update-cluster-logging --enable-types={SPECIFY-YOUR-LOG-TYPES-HERE (e.g. all)} --region=cn-northwest-1 --cluster=my-zhy-eks'[?]Kubernetes API endpoint access will use default of {publicAccess=true, privateAccess=false} for cluster "my-zhy-eks" in "cn-northwest-1"[?]2 sequential tasks: { create cluster control plane "my-zhy-eks", 2 sequential sub-tasks: { no tasks, create managed nodegroup "ng-e5146e45" } }[?]building cluster stack "eksctl-my-zhy-eks-cluster"[?]deploying stack "eksctl-my-zhy-eks-cluster"[?]building managed nodegroup stack "eksctl-my-zhy-eks-nodegroup-ng-e5146e45"[?]deploying stack "eksctl-my-zhy-eks-nodegroup-ng-e5146e45"[?]waiting for the control plane availability...[?]saved kubeconfig as "/root/.kube/config"[?]no tasks[?]all EKS cluster resources for "my-zhy-eks" have been created[?]nodegroup "ng-e5146e45" has 3 node(s)[?]node "ip-192-168-5-37.cn-northwest-1.compute.internal" is ready[?]node "ip-192-168-58-97.cn-northwest-1.compute.internal" is ready[?]node "ip-192-168-65-234.cn-northwest-1.compute.internal" is ready[?]waiting for at least 3 node(s) to become ready in "ng-e5146e45"[?]nodegroup "ng-e5146e45" has 3 node(s)[?]node "ip-192-168-5-37.cn-northwest-1.compute.internal" is ready[?]node "ip-192-168-58-97.cn-northwest-1.compute.internal" is ready[?]node "ip-192-168-65-234.cn-northwest-1.compute.internal" is ready[?]kubectl command should work with "/root/.kube/config", try 'kubectl get nodes'[?]EKS cluster "my-zhy-eks" in "cn-northwest-1" region is ready


推荐阅读