48、在Microsoft Azure上使用Azure Kubernetes Service搭建Kubernetes集群指南

在Microsoft Azure上使用Azure Kubernetes Service搭建Kubernetes集群指南

1. 安装Azure CLI

Azure CLI是管理Azure资源的强大工具,不同操作系统的安装方法有所不同:
- macOS :使用Homebrew进行安装,命令如下:

$ brew install azure-cli

安装完成后,运行以下命令检查版本:

$ az --version
  • Linux :Microsoft提供了适用于大多数常见Linux发行版的安装脚本,使用以下命令运行脚本:
$ curl -L https://aka.ms/InstallAzureCli | bash

安装完成后,需要重启会话。可以通过注销再登录,或者在某些发行版中运行以下命令:

$ source ~/.profile

重启会话后,同样运行 az --version 检查版本。
- Windows :有三种安装方式:
- 从 https://aka.ms/installazurecliwindows 下载安装程序,然后双击运行。
- 使用PowerShell命令:

$ProgressPreference = 'SilentlyContinue'; Invoke-WebRequest -Uri https://aka.ms/installazurecliwindows -OutFile .\AzureCLI.msi; Start-Process msiexec.exe -Wait -ArgumentList '/I AzureCLI.msi /quiet'; Remove-Item .\AzureCLI.msi
- 使用Chocolatey包管理器,运行以下命令:
$ choco install azure-cli

无论使用哪种方式安装,安装完成后都运行 az --version 检查版本。

2. 配置Azure CLI

配置Azure CLI非常简单,运行以下命令:

$ az login

这将打开默认浏览器,要求你登录。登录后,Azure CLI将配置为使用你登录的账户。
如果遇到问题或在仅支持命令行的环境(如远程Linux服务器)中安装Azure CLI,可以运行以下命令获取URL和唯一的登录代码:

$ az login --use-device-code

登录后,可以使用以下命令查看Azure账户信息:

$ az account show

如果由于某些原因无法在本地安装Azure CLI,也可以使用Azure门户中的基于Web的终端。

3. 访问Azure Cloud Shell

要访问Azure Cloud Shell,打开 https://portal.azure.com/ 并使用凭据登录。登录后,点击页面顶部菜单栏中的Cloud Shell图标(中央搜索框旁边的第一个图标)。
启动云外壳时,可以选择附加存储。由于我们将使用 kubectl ,建议选择“Mount storage account”选项并选择你的订阅。点击“Apply”按钮后,选择“We will create a storage account for you”选项。
大约一分钟后,Cloud Shell将打开,你将看到命令提示符。运行 az --version 检查Azure CLI版本,由于Azure门户在后台处理了登录,无需再运行 az login 命令。

4. 启动Azure Kubernetes Service集群

在完成上述步骤后,我们可以启动AKS集群,只需运行两个命令:
- 创建Azure资源组:

$ az group create --name rg-myfirstakscluster-eus --location eastus -o table

此命令在 eastus 区域创建名为 rg-myfirstakscluster-eus 的资源组,并将输出格式设置为表格。
- 启动AKS集群:

$ az aks create --resource-group rg-myfirstakscluster-eus --name aks-myfirstakscluster-eus --node-count 2 --enable-addons monitoring --generate-ssh-keys -o yaml

启动和配置集群大约需要五分钟,下面解释 az aks create 命令的参数:
| 参数 | 说明 |
| ---- | ---- |
| --resource-group | 指定AKS集群所在的资源组,集群将继承资源组的位置。 |
| --name | 指定集群的名称。 |
| --node-count | 设置要启动的节点数量。 |
| --enable-addons | 启用集群启动时的附加组件,这里启用了监控附加组件。 |
| --generate-ssh-keys | 为集群生成SSH公钥和私钥文件。 |
| -o | 指定命令输出格式,这里选择YAML格式,更易读。 |

集群启动后,运行以下命令配置本地 kubectl 客户端以与集群交互:

$ az aks get-credentials --resource-group rg-myfirstakscluster-eus --name aks-myfirstakscluster-eus

配置完成后,运行 kubectl get nodes 检查集群中的节点是否正常运行。

5. 部署工作负载并与集群交互

我们将使用之前章节中的示例Guestbook工作负载进行测试,部署步骤如下:
- 部署Redis leader:

$ kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/kubernetes-engine-samples/main/quickstarts/guestbook/redis-leader-deployment.yaml
$ kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/kubernetes-engine-samples/main/quickstarts/guestbook/redis-leader-service.yaml
  • 部署Redis follower:
$ kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/kubernetes-engine-samples/main/quickstarts/guestbook/redis-follower-deployment.yaml
$ kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/kubernetes-engine-samples/main/quickstarts/guestbook/redis-follower-service.yaml
  • 部署前端:
$ kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/kubernetes-engine-samples/main/quickstarts/guestbook/frontend-deployment.yaml
$ kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/kubernetes-engine-samples/main/quickstarts/guestbook/frontend-service.yaml

几分钟后,运行以下命令获取前端服务信息:

$ kubectl get service frontend

这将提供公共IP地址,使用 http://<ipaddress> 在浏览器中访问Guestbook应用程序。

6. 探索Azure门户

登录Azure门户 https://portal.azure.com/ ,在顶部搜索框中输入“Kubernetes”,点击“Kubernetes services”,可以看到用户有权限访问的Kubernetes服务列表。点击 aks-myfirstakscluster-eus 进入集群概述页面,左侧的“Kubernetes resources”菜单提供了以下选项:
- Namespaces :显示集群中所有活动的命名空间。由于我们在部署工作负载时未定义自定义命名空间,部署和服务将列在默认命名空间下。除了默认命名空间,还有 kube-node-lease kube-public kube-system ,建议不要修改这些命名空间。点击默认命名空间可进入概述页面,可编辑命名空间的YAML定义、查看事件日志和配置服务网格。
- Workloads :查看工作负载信息。可以过滤列表以仅显示默认命名空间中的工作负载。点击某个部署可查看详细信息,除了YAML和事件,还可以查看Insights。选择“Live logs”选项可以实时查看Pod日志。切换到“Pods”、“Replica sets”、“Stateful sets”、“Daemon sets”、“Jobs”和“Cron jobs”选项卡可以查看相应的信息。
- Services and ingresses :列出集群中部署的所有服务,可查看服务使用的集群IP和配置的外部IP。点击某个服务可深入查看配置信息。
- Storage :如果集群中配置了持久存储,可以在此查看详细信息并进行管理。在我们的示例工作负载中,没有配置持久存储,因此这里显示的信息较少。
- Configuration :查看和编辑集群中配置的ConfigMaps或Secrets。由于我们的工作负载中没有配置这些,列出的是集群本身的配置,不建议修改。
- Custom resources :管理附加到集群的自定义资源。
- Events :显示集群的所有实时事件,可帮助监控和排查集群及应用程序工作负载的健康问题。
- Run command :可以直接在Azure门户中运行任何 kubectl 命令,无需启动云外壳或配置本地 kubectl 客户端。

左侧的“Settings”菜单提供了以下选项:

graph LR
    A[Settings] --> B[Node pools]
    A --> C[Cluster configuration]
    A --> D[Application scaling]
    A --> E[Networking]
    A --> F[Extensions + applications]
    A --> G[Backup]
    A --> H[Other options]
  • Node pools :查看节点池详细信息,可升级节点池中运行的Kubernetes版本(前提是升级控制平面的Kubernetes版本),还可以缩放节点池或添加新的节点池。
  • Cluster configuration :升级控制平面的Kubernetes版本,Microsoft管理控制平面并将其与节点池分离。Kubernetes控制平面提供最多三个版本的向后兼容性,通常只能在当前运行版本的三个版本范围内进行升级。
  • Application scaling :启用Kubernetes Event-Driven Autoscaler (KEDA),可根据外部源的事件动态调整工作负载。目前通过Azure门户配置服务时,支持的缩放事件存在一些限制,支持的源包括Azure Service Bus、Cron、Memory和CPU。
  • Networking :查看和管理集群的网络设置。
  • Extensions + applications :作为Azure Marketplace的一部分,Microsoft提供了可部署到AKS集群的第一方和第三方应用程序,可在此管理这些部署。
  • Backup :Azure原生备份服务现在支持备份Kubernetes工作负载和应用程序数据,可在此进行管理。
  • Other options :提供了配置集群各个部分以及将集群连接到其他Azure原生服务的选项。如需更多信息,可以参考相关文档。
7. Insights(Monitoring)

在集群视图的“Monitoring”菜单中,“Insights”选项提供了以下几个选项卡:
- Cluster :快速查看整个集群的CPU和内存利用率,以及节点和Pod数量。
- Reports :提供预编写的节点监控(性能)、资源监控(可用性)、计费和网络报告,随着服务的发展,将添加更多报告。
- Nodes :查看节点概述。
- Controllers :显示集群中启动的控制器详细信息,如副本集和守护程序集。
- Containers :查看部署的Pod中运行的所有容器的详细信息。

通过这些Insights,我们可以快速了解集群的运行情况,而无需深入多个页面查找信息。

综上所述,通过以上步骤,我们可以在Microsoft Azure上使用Azure Kubernetes Service搭建Kubernetes集群,并部署和管理工作负载。同时,Azure门户提供了丰富的功能和工具,帮助我们监控和管理集群。

在Microsoft Azure上使用Azure Kubernetes Service搭建Kubernetes集群指南(续)

8. 详细操作流程总结

为了更清晰地展示整个搭建和管理Kubernetes集群的过程,我们可以将前面的步骤整理成如下流程图:

graph TD
    A[安装Azure CLI] --> B[配置Azure CLI]
    B --> C[访问Azure Cloud Shell]
    C --> D[启动AKS集群]
    D --> E[配置kubectl客户端]
    E --> F[部署工作负载]
    F --> G[探索Azure门户]
    G --> H[使用Insights监控]

下面我们再以列表形式详细回顾每个步骤的关键操作:
1. 安装Azure CLI
- macOS brew install azure-cli ,然后 az --version 检查版本。
- Linux curl -L https://aka.ms/InstallAzureCli | bash ,重启会话( source ~/.profile )后 az --version
- Windows :可通过下载安装程序、PowerShell命令或Chocolatey包管理器安装,安装后 az --version
2. 配置Azure CLI
- 正常情况: az login
- 特殊情况: az login --use-device-code ,登录后 az account show 查看账户信息。
3. 访问Azure Cloud Shell
- 登录 https://portal.azure.com/ ,点击Cloud Shell图标。
- 选择存储选项,点击“Apply”后选择自动创建存储账户。
- 打开后 az --version 检查版本。
4. 启动AKS集群
- 创建资源组: az group create --name rg-myfirstakscluster-eus --location eastus -o table
- 启动集群: az aks create --resource-group rg-myfirstakscluster-eus --name aks-myfirstakscluster-eus --node-count 2 --enable-addons monitoring --generate-ssh-keys -o yaml
5. 配置kubectl客户端 az aks get-credentials --resource-group rg-myfirstakscluster-eus --name aks-myfirstakscluster-eus ,然后 kubectl get nodes 检查节点。
6. 部署工作负载
- Redis leader:

kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/kubernetes-engine-samples/main/quickstarts/guestbook/redis-leader-deployment.yaml
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/kubernetes-engine-samples/main/quickstarts/guestbook/redis-leader-service.yaml
- Redis follower:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/kubernetes-engine-samples/main/quickstarts/guestbook/redis-follower-deployment.yaml
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/kubernetes-engine-samples/main/quickstarts/guestbook/redis-follower-service.yaml
- 前端:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/kubernetes-engine-samples/main/quickstarts/guestbook/frontend-deployment.yaml
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/kubernetes-engine-samples/main/quickstarts/guestbook/frontend-service.yaml
- 获取前端服务信息:`kubectl get service frontend`,访问`http://<ipaddress>`。
  1. 探索Azure门户
    • 登录 https://portal.azure.com/ ,搜索“Kubernetes”进入服务列表。
    • 点击集群进入概述页面,通过“Kubernetes resources”和“Settings”菜单进行各项操作。
  2. 使用Insights监控 :在“Monitoring”菜单的“Insights”选项中,通过不同选项卡查看集群相关信息。
9. 常见问题及解决方法

在搭建和管理Kubernetes集群的过程中,可能会遇到一些常见问题,下面我们以表格形式列出并给出解决方法:
| 问题 | 可能原因 | 解决方法 |
| ---- | ---- | ---- |
| az login 无法打开浏览器 | 本地环境配置问题或网络问题 | 尝试使用 az login --use-device-code 获取登录URL和代码进行登录。 |
| 集群启动失败 | 资源组配置错误、网络问题或权限不足 | 检查资源组名称和位置是否正确,确保网络连接正常,检查账户权限。 |
| kubectl 无法连接到集群 | 客户端配置错误或集群未正常启动 | 重新运行 az aks get-credentials 命令配置客户端,检查集群状态。 |
| 工作负载部署失败 | YAML文件错误或资源不足 | 检查YAML文件的语法和内容,确保集群有足够的资源。 |

10. 最佳实践建议

为了更好地使用Azure Kubernetes Service搭建和管理Kubernetes集群,我们提供以下最佳实践建议:
- 资源管理
- 合理规划资源组,将相关资源放在同一个资源组中,方便管理和权限控制。
- 根据实际需求调整节点数量和配置,避免资源浪费。
- 安全配置
- 定期更新Kubernetes版本,确保控制平面和节点池的安全性。
- 配置适当的角色和权限,限制对集群资源的访问。
- 监控和日志
- 启用监控附加组件,利用Insights功能实时监控集群的性能和健康状况。
- 定期查看事件日志,及时发现和解决潜在问题。
- 备份和恢复
- 利用Azure原生备份服务定期备份Kubernetes工作负载和应用程序数据,确保数据的安全性和可恢复性。

通过遵循这些最佳实践,我们可以提高集群的稳定性、安全性和性能,更好地满足业务需求。

总之,在Microsoft Azure上使用Azure Kubernetes Service搭建和管理Kubernetes集群是一个综合性的过程,需要我们掌握多个方面的知识和技能。通过本文详细介绍的步骤、操作方法、常见问题解决和最佳实践建议,希望能帮助读者顺利搭建和管理自己的Kubernetes集群。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值