你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
概述
Azure Chaos Studio 与 Chaos Mesh 集成,可在 Azure Kubernetes Service (AKS) 群集上运行错误,例如删除 pod、CPU 压力、网络中断等。 可以根据配置和首选项,使用两种不同类型的身份验证来运行这些错误,无论是本地帐户还是 AKS 管理的 Microsoft Entra 身份验证:
- Kubernetes 本地帐户存储在 Kubernetes API 服务器中,可用于对群集的请求进行身份验证和授权。 在此页了解有关本地帐户的详细信息: 管理本地帐户。
- AKS 托管的 Microsoft Entra 身份验证支持使用 Microsoft Entra 凭据和 Azure RBAC 登录和管理群集的权限。 了解如何 启用 AKS-Managed Microsoft Entra 身份验证。
注意
只要凭据位于客户端计算机上,本地帐户权限就会授予访问权限,而 AKS 托管的 Microsoft Entra 身份验证则可进行更大范围的权限分配和管理。 详细了解此最佳做法: 群集安全性和升级的最佳做法。
以前,Chaos Studio 仅支持将 Chaos Mesh 与本地帐户一起使用,但现在,所有 AKS 错误的 2.2 版都支持本地帐户和 Microsoft Entra 身份验证。
更新目标
目标 (Microsoft.Chaos/targets) 代表 Chaos Studio 资源模型中的另一个 Azure 资源,因此你可以轻松控制是否为某个资源启用错误注入以及可以针对它运行哪些错误。 在本例中,目标代表你想要影响的 AKS 群集。
如果在 Azure 门户中将 AKS 群集作为新的 Chaos Studio 目标加入,则新的错误版本将自动可用。
如果要在现有 AKS 目标上使用新的错误版本,则需要更新目标。 可以通过两种方法执行此操作:
- 禁用并重新启用目标资源。
- 若要在 Azure 门户中执行此作,请访问 Chaos Studio 门户界面中的 “目标 ”窗格,选择相关的 AKS 群集,然后选择“ 禁用目标”。 等待 1-2 分钟或确认通知,然后选择“ 启用目标>启用服务直接目标 ”并浏览“审阅和创建”屏幕。
- 更新已启用的功能。
- 若要在 Azure 门户中执行此作,请访问 Chaos Studio 中的 “目标 ”窗格,找到 AKS 群集(s),选择“ 管理作”,并确保启用所有功能。 选择 “保存” 以完成更新。
如果您正在使用 API 或命令行,请按照 使用 Azure CLI 创建一个包含 Chaos Mesh 故障的混沌实验 中的说明进行操作,以确保启用最新的可用功能。
新建新实验
在 Azure 门户中创建使用 AKS Chaos Mesh 错误的新试验时,可能会看到每个错误的两个版本,例如“AKS Chaos Mesh DNS Chaos”和“AKS Chaos Mesh DNS Chaos(已弃用)”。 选择第一个选项,而不是已弃用的选项。
如果在选择错误后没有看到 AKS 群集作为可能的目标,则可能需要在群集上启用新的错误版本。 访问“目标”页,找到 AKS 群集并选择“ 管理作”,然后在选择“ 保存”之前确保选中所有功能。
按照通过 Azure 门户创建使用 Chaos Mesh 错误来终止 AKS Pod 的 Chaos 试验教程来创建试验。
更新现有试验
按照以下两种方法之一来更新现有试验。
- Azure 门户
- 命令行
- 打开包含至少一个 AKS Chaos Mesh 错误的试验。
- 在错误上选择“编辑”,然后将 参数值复制到剪贴板。
jsonSpec - 打开错误选择下拉菜单,选择所需错误的版本,但不带
(deprecated)标记。 - 将剪贴板中的
jsonSpec粘贴到参数字段中。 - 保存错误和试验。
权限
Chaos Studio 需要权限才能在你的资源上执行错误。
在 Azure 门户中创建试验时,可以选择“ 启用自定义角色创建和分配 ”,让 Chaos Studio 尝试向试验的托管标识分配必要的权限。
如果选择不使用自定义角色创建,或者未使用 Azure 门户,则必须在创建试验后执行以下作 之一 :
- 将 Azure Kubernetes 服务 RBAC 管理员 和 Azure Kubernetes 服务群集用户 角色手动分配给试验托管标识(系统分配或用户分配)。
- 手动创建自定义角色,允许执行RBAC 操作所需的完整操作列表。
- 手动创建一个自定义角色,允许执行所需操作的部分操作,并部署自定义 YAML 文件。 此过程在 可选最小特权访问中详细介绍。
RBAC 操作
以下 RBAC 操作适用于 AKS Chaos Mesh 错误:
- 操作:
- Microsoft.ContainerService/managedClusters/read
- 数据操作:
- Microsoft.ContainerService/managedClusters/namespaces/read (用于读取命名空间)
- Microsoft.ContainerService/managedClusters/pods/read(微软容器服务/托管集群/Pod/读取)
- Microsoft.ContainerService/managedClusters/apiextensions.k8s.io/customresourcedefinitions/写入
- Microsoft.ContainerService/managedClusters/apiextensions.k8s.io/customresourcedefinitions/read
- Microsoft.ContainerService/managedClusters/authorization.k8s.io/subjectaccessreviews/write
- Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterroles/read
- Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterroles/write
- Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterroles/delete
- Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterroles/bind/action
- Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterroles/escalate/action
- Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterrolebindings/read
- Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterrolebindings/write
- Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterrolebindings/delete
可选的最低特权访问
如果你不想授予对 Chaos Studio 试验身份的完整 ClusterRole 和 ClusterRoleBinding 读/写访问权限,则可以手动为 Chaos Mesh 创建必要的角色和绑定。 这对于 Chaos Mesh 确保试验具有定位指定租户命名空间的权限是必要的。
此可选配置包含两个步骤。
在为试验的托管身份分配权限时,请使用具有一组有限权限的自定义角色。 所需权限包括:
- 操作:
- Microsoft.ContainerService/managedClusters/read
- 数据操作:
- Microsoft.ContainerService/managedClusters/namespaces/read (用于读取命名空间)
- Microsoft.ContainerService/managedClusters/pods/read(微软容器服务/托管集群/Pod/读取)
- Microsoft.ContainerService/managedClusters/apiextensions.k8s.io/customresourcedefinitions/写入
- Microsoft.ContainerService/managedClusters/apiextensions.k8s.io/customresourcedefinitions/read
- Microsoft.ContainerService/managedClusters/authorization.k8s.io/subjectaccessreviews/write
- 操作:
部署以下 YAML 配置以创建角色和绑定。 详细了解 AKS 文档中的部署: 使用 Azure 门户部署 Azure Kubernetes 服务 (AKS) 群集。
kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: name: role-cluster-manager-pdmas rules: - apiGroups: - chaos-mesh.org resources: [ "*" ] verbs: ["get", "list", "watch", "create", "delete", "patch", "update"] --- kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: cluster-manager-binding namespace: {Namespace targeted by experiment} subjects: - kind: User name: {CHAOS-STUDIO-EXPERIMENT-MSI-OBJECT-ID} roleRef: kind: ClusterRole name: role-cluster-manager-pdmas apiGroup: rbac.authorization.k8s.io