16、深入了解Azure Arc启用的Kubernetes:功能、架构与操作指南

深入了解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"
}
  1. 注册资源提供者 :在Azure订阅中注册以下资源提供者:
az provider register --namespace Microsoft.Kubernetes
az provider register --namespace Microsoft.KubernetesConfiguration
az provider register --namespace Microsoft.ExtendedLocation
  1. 安装Helm :根据不同的平台,有多种安装Helm的方法,建议参考官方安装指南:https://helm.sh/docs/intro/install
  2. 安装或更新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
  3. 安装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
  1. 创建资源组 :为投影Kubernetes集群创建一个资源组:
az group create –location LOCATIONHERE --name RGNAME --subscription SUBSCRIPTIONID
  1. 连接集群 :将外部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刀片
  1. 在Azure门户中,导航到“Monitor”刀片,选择“Insights”菜单下的“Containers”选项。
  2. 选择“Unmonitored clusters”选项卡,查看可以启用监控的Azure Arc启用的Kubernetes集群。
  3. 点击要启用监控的集群旁边的“Enable”链接。
  4. 选择Log Analytics工作区并选择“Configure”按钮继续。
5.3.2 从投影K8s集群资源刀片
  1. 在Azure门户中,选择要监控的投影Kubernetes集群。
  2. 选择资源刀片的“Monitoring”部分下的“Insights (preview)”项。
  3. 在接入页面上,选择“Configure Azure Monitor”按钮。
  4. 选择要发送指标和日志数据的Log Analytics工作区。
  5. 选择“Configure”按钮部署Azure Monitor Container Insights集群扩展。
5.3.3 从投影K8s集群资源
  1. 下载“enable monitoring AKA OMS”脚本:
curl -o enable-monitoring.sh -L https://aka.ms/enable-monitoring-bash-script
  1. 获取Azure Arc连接集群的Azure资源ID:
export azureArcClusterResourceId=$(az resource show --resource-group PROJECTEDK8SRESOURCEGROUP --name PROJECTEDK8SCLUSTERNAME --resource-type "Microsoft.Kubernetes/connectedClusters" --query id -o tsv)
  1. 从当前KubeContext获取投影Kubernetes集群的凭据:
export kubeContext="$(kubectl config current-context)"
  1. 运行启用监控脚本:
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 具体操作

  1. 创建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
  1. 应用资源 :使用 kubectl 将上述资源应用到Kubernetes集群。
kubectl apply -f my-gitops-config.yaml
  1. 验证部署 :在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 操作步骤

  1. 配置Azure Active Directory RBAC
    • 在Azure门户中创建Azure Active Directory组和角色。
    • 将这些组和角色映射到Kubernetes集群的角色和角色绑定。
  2. 启用Microsoft Defender for Cloud
    • 在Azure门户中启用Microsoft Defender for Cloud。
    • 配置 Defender for Cloud 以监控Kubernetes集群。
  3. 应用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集群,实现多云和混合云环境下的高效工作负载部署和管理。

计及源荷不确定性的综合能源生产单元运行调度容量配置优化研究(Matlab代码实现)内容概要:本文围绕“计及源荷不确定性的综合能源生产单元运行调度容量配置优化”展开研究,利用Matlab代码实现相关模型的构建仿真。研究重点在于综合能源系统中多能耦合特性以及风、光等可再生能源出力和负荷需求的不确定性,通过鲁棒优化、场景生成(如Copula方法)、两阶段优化等手段,实现对能源生产单元的运行调度容量配置的协同优化,旨在提高系统经济性、可靠性和可再生能源消纳能力。文中提及多种优化算法(如BFO、CPO、PSO等)在调度预测中的应用,并强调了模型在实际能源系统规划运行中的参考价值。; 适合人群:具备一定电力系统、能源系统或优化理论基础的研究生、科研人员及工程技术人员,熟悉Matlab编程和基本优化工具(如Yalmip)。; 使用场景及目标:①用于学习和复现综合能源系统中考虑不确定性的优化调度容量配置方法;②为含高比例可再生能源的微电网、区域能源系统规划设计提供模型参考和技术支持;③开展学术研究,如撰写论文、课题申报时的技术方案借鉴。; 阅读建议:建议结合文中提到的Matlab代码和网盘资料,先理解基础模型(如功率平衡、设备模型),再逐步深入不确定性建模优化求解过程,注意区分鲁棒优化、随机优化分布鲁棒优化的适用场景,并尝试复现关键案例以加深理解。
内容概要:本文系统分析了DesignData(设计数据)的存储结构,围绕其形态多元化、版本关联性强、读写特性差异化等核心特性,提出了灵活性、版本化、高效性、一致性和可扩展性五大设计原则。文章深入剖析了三类主流存储方案:关系型数据库适用于结构化元信息存储,具备强一致性高效查询能力;文档型数据库适配半结构化数据,支持动态字段扩展嵌套结构;对象存储结合元数据索引则有效应对非结构化大文件的存储需求,具备高扩展性低成本优势。同时,文章从版本管理、性能优化和数据安全三个关键维度提出设计要点,建议采用全量增量结合的版本策略、索引缓存优化性能、并通过权限控制、MD5校验和备份机制保障数据安全。最后提出按数据形态分层存储的核心结论,并针对不同规模团队给出实践建议。; 适合人群:从事工业设计、UI/UX设计、工程设计等领域数字化系统开发的技术人员,以及负责设计数据管理系统架构设计的中高级工程师和系统架构师。; 使用场景及目标:①为设计数据管理系统选型提供依据,合理选择或组合使用关系型数据库、文档型数据库对象存储;②构建支持版本追溯、高性能访问、安全可控的DesignData存储体系;③解决多用户协作、大文件存储、历史版本管理等实际业务挑战。; 阅读建议:此资源以实际应用场景为导向,结合具体数据库类型和表结构设计进行讲解,建议读者结合自身业务数据特征,对比分析不同存储方案的适用边界,并在系统设计中综合考虑成本、性能可维护性之间的平衡。
先展示下效果 https://pan.quark.cn/s/6208c60fd188 以RFID技术为支撑的指纹面部双重生物识别方案,已成为当代门禁系统安全性能提升的关键象征,该方案综合运用了指纹确认和面部确认两种生物识别手段,旨在构建更为严密的防护屏障。 射频识别(Radio Frequency Identification)技术在此过程中承担着数据交互身份核实的重要辅助角色,促使门禁系统展现出更高的智能化水平运行效能。 **一、指纹门禁系统**指纹门禁系统依托于个体指纹的特异性进行身份核实,其特征具有不可替代性和不可复制的属性。 系统运用了前沿的数字图像处理方法、生物识别运算逻辑以及数字信号处理(Digital Signal Processing)技术,从而保障了门禁操控的安全性。 使用者只需将手指放置于指纹感应装置上,系统便能迅速且精准地完成身份核实。 此类系统不仅强化了安全性,还规避了传统钥匙、IC卡或密码锁可能遭遇的遗失、盗用或被破解等问题,并且通过屏幕汉字显示功能的结合,进一步强化了门禁系统的防护能力,实现了安全管理模式的现代化。 **二、面部门禁系统**面部识别,亦称作人脸识别,是一种通过剖析个体面部特征进行身份判定的技术。 该技术可分为常规视频捕捉分析热成像技术两种实施路径。 常规视频捕捉分析借助摄像头获取并解析面部特征,而在光线不足或完全黑暗的环境中,热成像技术则通过探测面部血液散发的热能形成面部影像,即便在无光状态下亦可正常运作。 面部识别技术在企业、住宅安保以及公共安全等多个领域得到了普遍应用,为无需物理接触的身份核实提供了有效途径。 **指纹识别技术的长处应用**1. **独特性**:个体指纹具有唯一性,为身份核实提供了坚实的依据。 2. **稳定...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值