深入了解Azure Arc启用的Kubernetes:功能、架构与操作指南
1. 概述
Azure Arc是一种云解决方案,可满足组织的本地和多云管理需求,它将Azure功能扩展到Azure外部的环境。Azure Arc启用的Kubernetes(Arc K8s)允许将运行在本地或非Azure云的Kubernetes集群连接到Azure,为任何地方运行的工作负载带来统一的Azure管理体验。
1.1 关键概念
在Arc K8s集群中,有多个重要的配置参数:
- Operator Instance name
- Operator namespace
- Repository URL
- Operator scope (Namespace/Cluster)
- Operator type
- Operator params
- Helm (Enabled/Disabled)
每个Arc K8s集群可以有多个sourceControlConfigurations,这些配置可以作用于命名空间或集群级别,适用于有多环境或多租户需求的组织。
1.2 可用区域
目前,Azure Arc启用的Kubernetes在以下特定区域可用:
- East US
- West Europe
- West Central US
- South Central US
- Southeast Asia
- UK South
- West US 2
- Australia East
- East US 2
- North Europe
- Central US
- US Gov Virginia
- France Central
- Korea Central
- Japan East
- East Asia
微软会随着时间增加更多支持的区域,建议查看官方文档获取最新信息。
1.3 支持的Kubernetes发行版
Azure Arc启用的Kubernetes支持任何经过云原生计算基金会(CNCF)认证的Kubernetes发行版,例如:
- Kind
- MicroK8s
- Rancher K3s
- AKS (Azure Kubernetes Service)
- AKS on Azure Stack HCI
- EKS (Amazon Elastic Kubernetes Service)
- GKE (Google Kubernetes Engine)
- ACK (Alibaba Cloud Container Service for Kubernetes)
- Azure Red Hat OpenShift
2. 功能与优势
2.1 核心功能
Azure Arc启用的Kubernetes通过扩展和GitOps将许多Azure的原生功能引入到Kubernetes集群,包括:
- 利用Azure Monitor和Microsoft Defender for Cloud进行监控和保护
- 使用Azure Arc和Azure Policy管理集群
- 利用Azure Active Directory RBAC进行授权和访问控制
- 与GitOps(Flux GitOps操作员)集成
- 通过GitOps部署应用程序和配置
- 通过GitOps部署Helm图表
- 部署物联网工作负载到边缘
- 在任何Arc启用的Kubernetes集群上运行Azure App Service、Functions、Event Grid、Azure API Management和Logic Apps
- 通过Microsoft Open Service Mesh在集群上实现服务网格
2.2 与其他产品的比较
| 产品 | 特点 |
|---|---|
| Azure Arc K8s | 集中管理本地或公共云(包括Azure、GCP、AWS、边缘、物联网和混合环境)的Kubernetes集群,将Azure原生工具和GitOps扩展到外部集群 |
| Rancher | 集中管理和预配本地或公共云(包括Azure、GCP和AWS)的Kubernetes集群,将Rancher界面、应用程序目录、GitOps和开源工具扩展到外部集群 |
| Azure Stack Hub/AWS Outposts | 支持混合云场景,Azure Stack允许在本地数据中心运行Azure,AWS Outposts允许在本地数据中心运行AWS |
| Anthos | 谷歌提供的托管应用程序平台,将GCP容器服务扩展到任何环境,侧重于将工作负载迁移到GKE上运行的容器 |
2.3 使用案例
Azure Arc启用的Kubernetes有助于解决以下使用案例:
- 跨Azure、Google Cloud Platform和Amazon Web Services云的应用程序一致性
- 为矿业公司集中管理多个边缘位置的物联网应用程序
- 将Azure PaaS服务引入本地以满足额外的合规性要求
3. 架构解析
Azure Arc启用的Kubernetes是运行在Azure中的PaaS服务,用于管理多个Kubernetes集群,无论它们位于何处。其架构由Azure服务、资源、工具、代理以及在投影Kubernetes集群上运行的多个部署和Pod组成。
3.1 资源提供者
在运行Azure Arc启用的Kubernetes的Azure订阅中,需要以下资源提供者来支持该服务:
- Microsoft.Kubernetes
- Microsoft.KubernetesConfiguration
- Microsoft.ExtendedLocation
3.2 网络要求
投影Kubernetes集群上需要运行Azure Arc启用的Kubernetes代理,为了使代理正常工作,需要在投影Kubernetes集群网络上允许以下网络端口和协议/端点出站URL:
-
端口
:
- TCP on port 443和TCP on port 9418
-
端点(DNS)允许从投影Kubernetes集群出站
:
- https://management.azure.com
- https://eastus.dp.kubernetesconfiguration.azure.com
- https://westeurope.dp.kubernetesconfiguration.azure.com
- https://login.microsoftonline.com
- https://mcr.microsoft.com
- https://eus.his.arc.azure.com
- https://weu.his.arc.azure.com
3.3 命名空间和操作员
投影Kubernetes集群加入后,将运行一个名为“azure-arc”的命名空间,并且在该命名空间中有多个操作员作为部署运行:
-
config-agent
:监控投影Kubernetes集群,在应用sourceControlConfiguration资源时更新合规状态。
-
controller-manager
:协调Azure Arc组件之间的交互,用于操作其他操作员。
-
metrics-agent
:收集其他Arc代理的指标,以测量性能并确保其最佳状态。
-
cluster-metadata-operator
:收集集群和Azure Arc代理的版本、集群元数据和节点计数。
-
resource-sync-agent
:将cluster-metadata-operator收集的元数据与Azure Arc同步。
-
clusteridentityoperator
:持有托管服务标识(MSI)证书,供其他操作员与Azure通信。
-
flux-logs-agent
:作为sourceControlConfiguration的一部分,收集Flux操作员的日志。
3.4 运行的Pod
在“azure-arc”命名空间中,还会有一些Pod运行,例如:
- cluster-metadata-operator-b88f6695d-rf998
- clusteridentityoperator-6459fd778c-4wx66
- config-agent-6cc967f5-kd8b8
- controller-manager-557d758b9f-f69vw
- flux-logs-agent-5db8bff9d4-gktl4
- metrics-agent-997cf95d5-h96gd
- resource-sync-agent-587b999567-4kz64
4. 连接Kubernetes集群到Azure Arc
在使用Azure Arc启用的Kubernetes之前,需要将外部Kubernetes集群连接到Azure Arc,具体步骤如下:
4.1 准备工作
在连接之前,需要完成以下先决条件:
1.
创建Azure服务主体(SP)
:在Azure订阅中创建一个具有对Microsoft.Kubernetes/connectedClusters资源类型读写权限的服务主体。可以使用以下命令在Azure Cloud Shell中创建:
az ad sp create-for-rbac --name <SPNNAME> --role contributor --scope /subscriptions/<SUBSCRIPTIONID>
创建后,务必将输出复制到安全的地方,示例输出如下:
{
"appId": "138r8633-v9g3-4f90-80d9-hg7924c823f9",
"displayName": " SPNNAME ",
"name": "http:// SPNNAME",
"password": "5g2c85va-43ds-31f0-o6c6-rbg2c5av472g",
"tenant": "9uh4qq35-q432-4j2v-h20r-6o24b11p53TW"
}
- 注册资源提供者 :在Azure订阅中注册以下资源提供者:
az provider register --namespace Microsoft.Kubernetes
az provider register --namespace Microsoft.KubernetesConfiguration
az provider register --namespace Microsoft.ExtendedLocation
- 安装Helm :根据不同的平台,有多种安装Helm的方法,建议参考官方安装指南:https://helm.sh/docs/intro/install
- 安装或更新Azure CLI :将Azure CLI安装或更新到2.15.0或更高版本,可以在Windows、macOS和Linux环境中安装,也可以作为Docker容器运行,或者使用预安装在Azure Cloud Shell中的版本。安装指南:https://docs.microsoft.com/en-us/cli/azure/install-azure-cli
- 安装Azure Arc K8s CLI扩展 :安装用于管理外部Kubernetes集群的扩展:
az extension add --name connectedk8s
az extension add --name k8s-configuration
4.2 连接集群
完成准备工作后,按照以下步骤连接Kubernetes集群到Azure Arc:
1.
使用服务主体登录Azure订阅
:在外部Kubernetes集群所在的shell中运行以下命令:
az login --service-principal --username SPID --password SPPWD --tenant SPTENANTID
- 创建资源组 :为投影Kubernetes集群创建一个资源组:
az group create –location LOCATIONHERE --name RGNAME --subscription SUBSCRIPTIONID
- 连接集群 :将外部Kubernetes集群连接到Azure Arc K8s:
az connectedk8s connect --name ARCK8SCLUSTERNAME --resource-group RGNAME --location LOCATIONHERE --tags ’Environment=dev-arc-cluster1’
连接成功后,投影Kubernetes集群将在Azure门户中显示为一个资源,具有标签、Azure资源管理器ID和托管标识。
5. 使用Azure Arc和Azure Monitor监控Kubernetes集群
监控投影Kubernetes集群及其上运行的容器对于确保环境健康至关重要。Azure Monitor Container Insights可以为连接到Azure Arc启用的Kubernetes的投影Kubernetes集群提供监控。
5.1 功能概述
Azure Monitor for Containers可以提供性能可见性,收集投影Kubernetes节点和容器的内存和CPU利用率指标。目前,它不支持实时数据。具体功能包括:
- 监控Kubernetes集群及其节点的性能
- 识别在节点上运行的容器及其平均处理器和内存利用率
- 确定容器在控制器或Pod中的位置
- 了解集群在平均和最重负载下的行为
- 与Prometheus集成,通过查询查看从节点和Kubernetes收集的应用程序和工作负载指标
5.2 先决条件
在启用Azure Monitor Container Insights监控之前,需要满足以下先决条件:
- 配置了Azure Monitor for Containers的Log Analytics工作区
- 至少是Azure订阅中Azure Contributor角色的成员
- 是配置了Azure Monitor for Containers的Log Analytics工作区的Log Analytics Contributor角色的成员
- 是Azure Arc集群资源的Contributor角色的成员
- 具有Log Analytics reader角色权限
- 用于为指定Kubernetes集群安装Azure Monitor for Containers图表的HELM客户端
- 允许以下Microsoft监控端点通过任何防火墙:
-
.ods.opinsights.azure.com
-
.oms.opinsights.azure.com
- dc.services.visualstudio.com
- *.monitoring.azure.com
- login.microsoftonline.com
- 所有端口443
5.3 接入方法
有三种方法可以将投影Kubernetes集群接入Azure Monitor Container Insights:
5.3.1 从Azure Monitor刀片
- 在Azure门户中,导航到“Monitor”刀片,选择“Insights”菜单下的“Containers”选项。
- 选择“Unmonitored clusters”选项卡,查看可以启用监控的Azure Arc启用的Kubernetes集群。
- 点击要启用监控的集群旁边的“Enable”链接。
- 选择Log Analytics工作区并选择“Configure”按钮继续。
5.3.2 从投影K8s集群资源刀片
- 在Azure门户中,选择要监控的投影Kubernetes集群。
- 选择资源刀片的“Monitoring”部分下的“Insights (preview)”项。
- 在接入页面上,选择“Configure Azure Monitor”按钮。
- 选择要发送指标和日志数据的Log Analytics工作区。
- 选择“Configure”按钮部署Azure Monitor Container Insights集群扩展。
5.3.3 从投影K8s集群资源
- 下载“enable monitoring AKA OMS”脚本:
curl -o enable-monitoring.sh -L https://aka.ms/enable-monitoring-bash-script
- 获取Azure Arc连接集群的Azure资源ID:
export azureArcClusterResourceId=$(az resource show --resource-group PROJECTEDK8SRESOURCEGROUP --name PROJECTEDK8SCLUSTERNAME --resource-type "Microsoft.Kubernetes/connectedClusters" --query id -o tsv)
- 从当前KubeContext获取投影Kubernetes集群的凭据:
export kubeContext="$(kubectl config current-context)"
- 运行启用监控脚本:
bash enable-monitoring.sh --resource-id $azureArcClusterResourceId --client-id SPNID --client-secret SPNPASSWORD --tenant-id TENANTID --kube-context $kubeContext
通过以上步骤,你可以全面了解Azure Arc启用的Kubernetes的功能、架构、连接方法和监控方式,为在不同环境中管理Kubernetes集群提供有力支持。
6. 利用Azure Arc和GitOps部署配置与应用
GitOps是一种将Git作为声明性基础设施和应用程序交付的单一事实来源的实践。在Azure Arc启用的Kubernetes中,结合GitOps可以实现自动化的配置和应用部署。
6.1 核心概念
在使用GitOps与Azure Arc启用的Kubernetes时,有几个关键的配置参数:
-
Operator Instance name
:操作员实例名称,用于标识特定的操作员实例。
-
Operator namespace
:操作员所在的命名空间。
-
Repository URL
:存储配置和应用定义的Git仓库URL。
-
Operator scope (Namespace/Cluster)
:操作员的作用范围,可以是命名空间级别或集群级别。
-
Operator type
:操作员的类型。
-
Operator params
:操作员的参数。
-
Helm (Enabled/Disabled)
:是否启用Helm进行部署。
6.2 工作流程
以下是利用GitOps和Azure Arc启用的Kubernetes部署配置和应用的工作流程:
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
A(定义配置和应用):::process --> B(推送到Git仓库):::process
B --> C(Azure Arc K8s Agent监控仓库):::process
C --> D{有变更?}:::process
D -- 是 --> E(拉取变更):::process
E --> F(应用到Kubernetes集群):::process
D -- 否 --> C(继续监控):::process
6.3 具体操作
- 创建sourceControlConfiguration资源 :在Kubernetes集群中创建一个sourceControlConfiguration资源,指定Git仓库的URL和其他配置参数。
apiVersion: kubernetesconfiguration.azure.com/v1
kind: SourceControlConfiguration
metadata:
name: my-gitops-config
namespace: azure-arc
spec:
repositoryUrl: https://github.com/myorg/myrepo.git
operatorInstanceName: my-operator
operatorNamespace: azure-arc
operatorParams: --git-branch=main
operatorScope: Cluster
helmOperator:
enabled: true
-
应用资源
:使用
kubectl将上述资源应用到Kubernetes集群。
kubectl apply -f my-gitops-config.yaml
-
验证部署
:在Azure门户或使用
kubectl检查配置和应用是否成功部署到Kubernetes集群。
7. 安全与合规性
Azure Arc启用的Kubernetes提供了一系列安全和合规性功能,帮助用户保护其Kubernetes集群和工作负载。
7.1 安全功能
- Azure Active Directory RBAC :利用Azure Active Directory进行基于角色的访问控制,确保只有授权用户可以访问Kubernetes集群。
- Microsoft Defender for Cloud :集成Microsoft Defender for Cloud,提供实时威胁检测和防护。
- Azure Policy :使用Azure Policy定义和实施安全策略,确保集群和工作负载符合组织的安全标准。
7.2 合规性支持
Azure Arc启用的Kubernetes支持多种合规性标准,例如:
| 合规性标准 | 说明 |
| ---- | ---- |
| GDPR | 支持欧盟通用数据保护条例,保护用户数据隐私。 |
| HIPAA | 符合美国健康保险流通与责任法案,适用于医疗保健行业。 |
| SOC | 满足服务组织控制标准,确保服务的安全性和可靠性。 |
7.3 操作步骤
-
配置Azure Active Directory RBAC
:
- 在Azure门户中创建Azure Active Directory组和角色。
- 将这些组和角色映射到Kubernetes集群的角色和角色绑定。
-
启用Microsoft Defender for Cloud
:
- 在Azure门户中启用Microsoft Defender for Cloud。
- 配置 Defender for Cloud 以监控Kubernetes集群。
-
应用Azure Policy
:
- 在Azure门户中定义和分配Azure Policy。
- 定期检查集群的合规性状态。
8. 成本与定价
Azure Arc启用的Kubernetes的定价具有独特性,目前在管理Azure Arc启用的服务器和Kubernetes集群时,不收取额外费用。
8.1 免费功能
Azure Arc控制平面功能(包括服务器和Kubernetes)是免费提供的,这些功能包括:
- 连接服务器和Kubernetes集群到Azure。
- 通过Azure管理组和标签进行资源组织。
- 通过资源图进行搜索和索引。
- 通过Azure RBAC和Azure订阅进行访问和安全控制。
- 通过ARM模板和Azure扩展进行环境和自动化配置。
8.2 其他成本考虑
虽然Azure Arc启用的Kubernetes本身免费,但在使用过程中可能会产生其他成本,例如:
-
Azure服务使用费用
:如果使用了其他Azure服务(如Azure Monitor、Microsoft Defender for Cloud等),将按照相应的服务定价收费。
-
网络成本
:确保Kubernetes集群与Azure之间的网络连接可能会产生一定的网络费用。
8.3 成本优化建议
- 合理规划资源使用 :根据实际需求合理配置Kubernetes集群的资源,避免资源浪费。
- 定期审查服务使用情况 :定期审查使用的Azure服务,停用不必要的服务。
9. 未来发展趋势
Azure Arc启用的Kubernetes是一个不断发展的技术,未来有几个值得关注的发展趋势。
9.1 功能增强
微软将继续为Azure Arc启用的Kubernetes添加更多功能和能力,例如:
- 支持更多的Kubernetes发行版和云环境。
- 增强GitOps集成,提供更高级的自动化和部署功能。
- 进一步优化安全和合规性功能。
9.2 生态系统集成
Azure Arc启用的Kubernetes将与更多的开源和商业工具集成,例如:
- 与Prometheus、Grafana等监控工具更紧密地集成。
- 支持更多的CI/CD工具,实现更高效的持续集成和持续部署。
9.3 行业应用拓展
随着技术的成熟,Azure Arc启用的Kubernetes将在更多行业得到应用,例如:
- 金融行业:用于管理分布式金融应用和交易系统。
- 医疗行业:支持医疗数据处理和分析的Kubernetes集群管理。
通过深入了解Azure Arc启用的Kubernetes的功能、架构、操作方法、安全与合规性、成本以及未来发展趋势,用户可以更好地利用这一技术来管理和优化其Kubernetes集群,实现多云和混合云环境下的高效工作负载部署和管理。
Azure Arc赋能Kubernetes详解
超级会员免费看
681

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



