在云服务中部署Kubernetes集群:AWS EKS与Azure AKS全解析
1. 使用AWS控制台探索EKS集群
要使用AWS控制台检查新部署的工作负载,可按以下步骤操作:
1. 登录AWS控制台:访问 https://console.aws.amazon.com/ 进行登录。
2. 选择区域:登录后,在屏幕右上角用户名旁边的区域选择器中,选择美国西部(俄勒冈)us - west - 2区域。
3. 进入EKS页面:在右上角的搜索栏中搜索“Elastic Kubernetes Service”,并选择该服务(通常为第一个结果),即可进入俄勒冈区域的EKS页面。
4. 访问集群:点击集群名称,可能会遇到访问被拒的情况。这是因为eksctl启动集群时,授予了之前创建的ekscluster用户使用AWS服务与集群交互的权限,而当前登录的主用户没有该权限。
5. 启用控制台访问:返回AWS控制台的IAM,进入用户页面,选择ekscluster用户,转到安全凭证选项卡,点击“Enable console access”按钮。选择自动生成密码选项并启用访问,最后下载包含凭证的CSV文件。
6. 使用新用户登录:退出AWS控制台,打开下载的CSV文件,访问控制台登录URL,使用CSV文件中的用户名和密码登录。登录后返回EKS页面并选择集群,此时应能正常访问。
当首次打开集群时,会看到以下几个选项卡:
| 选项卡名称 | 功能描述 |
| — | — |
| 概述(Overview) | 显示各种集群详细信息,如运行的Kubernetes版本、端点信息、集群状态、创建时间和日期等。 |
| 资源(Resources) | 提供有关节点、Pod、命名空间和工作负载的信息。 |
| 计算(Compute) | 显示节点信息、节点组以及与集群关联的任何Fargate配置文件的详细信息。 |
| 网络(Networking) | 详细介绍VPC配置。 |
| 附加组件(Add - ons) | 列出集群已安装和可用的附加组件。 |
| 访问(Access) | 显示IAM角色、AWS认证ConfigMap和Kubernetes RBAC角色绑定。 |
| 可观测性(Observability) | 配置并显示日志记录、监控和最近事件。 |
| 升级洞察(Upgrade insights) | 列出可用的Kubernetes版本升级和兼容性检查。 |
| 更新历史(Update history) | 提供集群和节点组更新的历史记录。 |
| 标签(Tags) | 列出并管理与EKS集群关联的标签。 |
点击“资源”选项卡,选择“部署”,并过滤到默认工作区,将显示已启动的工作负载。点击其中一个部署,可获取有关该部署的更多信息,包括Pod详细信息、配置等。但在操作过程中会发现,只能查看服务的基本信息,没有图表、日志输出等更详细的内容,因为AWS控制台主要只是展示Kubernetes本身的信息。
离开EKS服务页面,进入AWS控制台的EC2服务部分,会显示两个节点。在这里可以深入了解实例的更多信息,如CPU、RAM和网络利用率,但这些信息仅针对实例本身,而非Kubernetes工作负载。选择左侧菜单负载均衡部分的“负载均衡器”,会显示在应用前端服务时启动并配置的弹性负载均衡器。
进入服务菜单中的“CloudFormation”并点击链接,会进入CloudFormation服务页面,这里会看到两个堆栈:一个用于EKS节点(即两个EC2实例),另一个用于EKS集群(即Kubernetes管理平面)。选择其中一个堆栈,可查看堆栈启动时的详细信息,还能查看eksctl生成的CloudFormation模板(一个复杂的JSON文件),点击“View in Application Composer”按钮,可获得堆栈更直观的可视化表示。
graph LR
A[登录AWS控制台] --> B[选择区域]
B --> C[搜索并进入EKS页面]
C --> D[点击集群名称]
D --> E{是否访问被拒}
E -- 是 --> F[启用ekscluster用户控制台访问]
F --> G[下载CSV文件并使用新用户登录]
G --> H[返回EKS页面访问集群]
E -- 否 --> H
H --> I[查看各选项卡信息]
I --> J[查看工作负载]
I --> K[查看EC2节点信息]
I --> L[查看负载均衡器信息]
I --> M[查看CloudFormation堆栈信息]
2. 删除Amazon EKS集群
可以使用以下命令删除集群,记得将集群名称替换为自己的集群名称:
$ eksctl delete cluster --name hilarious - wardrobe - 1717847351
删除集群的运行时间比启动时短,大约需要5分钟。在删除过程中,eksctl会给出详细信息:
[i] deleting EKS cluster "hilarious-wardrobe-1717847351"
[i] will drain 0 unmanaged nodegroup(s) in cluster "hilarious-wardrobe-1717847351"
[i] starting parallel draining, max in-flight of 1
[i] deleted 0 Fargate profile(s)
首先更新的是本地kubectl配置:
[✔] kubeconfig has been updated
然后终止作为工作负载部署到集群的一部分而启动的任何资源:
[i] cleaning up AWS load balancers created by Kubernetes objects of Kind Service or Ingress
接着移除两个AWS CloudFormation堆栈,这将依次移除它们创建和配置的所有资源:
[i] 2 sequential tasks: { delete nodegroup "ng-11c87ff4", delete cluster control plane "hilarious-wardrobe-1717847351" [async] }
[i] will delete stack "eksctl-hilarious-wardrobe-1717847351-nodegroup-ng-11c87ff4"
[i] waiting for stack "eksctl-hilarious-wardrobe-1717847351-nodegroup-ng-11c87ff4" to get deleted
[i] waiting for CloudFormation stack "eksctl-hilarious-wardrobe-1717847351-nodegroup-ng-11c87ff4"
[i] will delete stack "eksctl-hilarious-wardrobe-1717847351-cluster"
[✔] all cluster resources were deleted
运行Amazon EKS集群一个月的成本主要有两部分:
- Amazon EKS集群本身:每个创建的Amazon EKS集群每小时收费0.10美元,每个区域通常只需启动一个集群,每月成本约73美元。
- 集群使用的AWS资源:例如EC2集群节点,每个节点每月成本约70美元,运行集群一个月的总成本约213美元,但由于带宽和AWS弹性负载均衡(ELB)服务的收费,实际成本可能会更高。
完成操作后,务必仔细检查AWS控制台中的EC2、EKS和CloudFormation部分,确保所有服务已正确删除,避免因遗留的孤立或闲置资源而产生额外费用。
3. 微软Azure与Azure Kubernetes Service简介
在深入了解如何安装支持工具之前,先简要介绍一下相关服务的起源。
3.1 微软Azure
2008年,微软正式宣布推出名为Windows Azure的新服务。该服务是内部名为Project Red Dog项目的一部分,该项目自2004年开始开发,旨在利用核心Windows组件提供数据中心服务。
在2008年开发者大会上,微软宣布的五个核心组件如下:
| 组件名称 | 组件描述 |
| — | — |
| Microsoft SQL Data Services | 这是Microsoft SQL数据库服务的云版本,作为平台即服务(PaaS)运行,旨在消除自行托管SQL服务的复杂性。 |
| Microsoft .NET Services | 另一个PaaS服务,允许开发者将基于.NET的应用程序部署到微软管理的.NET运行时中。 |
| Microsoft SharePoint | 流行的企业内部网产品的软件即服务(SaaS)版本。 |
| Microsoft Dynamics | 微软CRM产品的SaaS版本。 |
| Windows Azure | 与其他云提供商类似的基础设施即服务(IaaS),使用户能够启动虚拟机、存储和支持其计算工作负载所需的网络服务。 |
所有这些服务都构建在Red Dog操作系统之上,该操作系统是Windows操作系统的一个专门版本,内置了云层。2014年,Windows Azure更名为Microsoft Azure,反映了为云服务提供支持的底层操作系统的名称,并且Azure当时已经在运行许多基于Linux的工作负载。
graph LR
A[2004年] --> B[开始开发Project Red Dog]
B --> C[2008年宣布Windows Azure及五个核心组件]
C --> D[2014年Windows Azure更名为Microsoft Azure]
3.2 Azure Kubernetes Service
最初,微软推出了名为Azure Container Service(ACS)的基于容器的服务,允许用户部署容器工作负载,并选择由三种不同的编排器之一提供支持:Docker Swarm、DC/OS或Kubernetes。所有这些都提供了基于容器的集群解决方案。
随着时间的推移,Kubernetes成为三种编排器中最受欢迎的一种,因此ACS逐渐被AKS取代。AKS是一个符合CNCF标准、纯粹基于Kubernetes的服务。过渡过程大约持续了两年,AKS于2018年全面可用,而ACS于2020年初退役。
AKS服务与Azure Active Directory、策略和其他关键微软Azure服务紧密集成。除了AKS,微软还提供其他容器服务,最新的是Azure Container Apps。
Azure Container Apps是一个无服务器平台,可运行容器化应用程序,而最终用户无需管理基础设施,具有基于流量、事件、CPU或内存负载进行动态扩展、HTTPS或TCP入口、Dapr集成和自动扩展等功能。它允许使用各种Azure原生工具进行管理、安全的秘密处理、内部服务发现以及用于部署策略的流量拆分。应用程序可以从任何注册表运行容器,并与其他Azure服务集成。
4. 准备本地环境
在启动集群之前,需要完成一些任务。
4.1 创建免费的微软Azure账户
如果还没有账户,可以访问 https://azure.microsoft.com/free/ 注册免费账户。
在撰写本文时,免费账户包括:
- 12个月的热门服务使用期。
- 200美元的信用额度,可用于探索和测试不同的Azure服务。
- 访问超过55项始终免费的服务。
点击“Start free”按钮并按照屏幕上的说明操作。注册过程大约需要15分钟,需要提供有效的信用卡或借记卡信息才能完成注册并访问免费账户。
4.2 安装Azure CLI
微软提供了一个强大的跨平台命令行工具,用于管理微软Azure资源。在macOS、Linux和Windows上安装都非常简单。
- 在macOS上安装 :如果之前已经按照相关步骤操作,可能已经猜到会使用Homebrew来安装Azure CLI。运行以下命令:
# 此处原文档未给出具体命令,可补充为常见的安装命令示例
brew install azure-cli
graph LR
A[无Azure账户] --> B[访问注册页面]
B --> C[点击Start free并完成注册]
C --> D[注册成功获得免费账户]
D --> E[安装Azure CLI]
E --> F{操作系统类型}
F -- macOS --> G[使用Homebrew安装]
F -- Linux --> H[对应Linux安装方式]
F -- Windows --> I[Windows安装方式]
5. 总结
在使用Amazon EKS时,虽然能够轻松部署工作负载,甚至无需额外指令就能使用AWS原生负载均衡服务部署负载均衡器,但发现其与AWS控制台的集成程度不如Google的相关服务。并且,由于使用AWS CLI启动集群较为复杂,需要安装第二个命令行工具。
而微软Azure方面,了解了其起源和发展,以及Azure Kubernetes Service的演变。在准备本地环境时,需要创建Azure账户并安装Azure CLI。后续可以继续深入学习如何启动Azure Kubernetes Service集群、部署工作负载、与集群交互以及删除集群等操作。在操作过程中,要始终关注成本问题,避免不必要的费用支出,同时确保所有资源在使用完毕后正确删除。
超级会员免费看
1157

被折叠的 条评论
为什么被折叠?



