Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
通过使用Azure CLI或Azure PowerShell将现有 Kubernetes 群集连接到 Azure Arc,开始使用启用了Azure Arc的 Kubernetes。
有关将群集连接到 Azure Arc 的概念性介绍,请参阅 Azure Arc 启用的 Kubernetes 代理概述。 若要在示例/实践体验中试用内容,请访问 Azure Arc Jumpstart。
先决条件
重要
除了这些先决条件,请确保满足启用 Azure Arc 的 Kubernetes 的所有 网络要求。
具有活动订阅的Azure帐户。 创建试用版订阅。
基本了解 Kubernetes 核心概念。
身份(用户或服务主体),可用于登录到Azure CLI并将群集连接到Azure Arc。
最新版本的 Azure CLI。
通过运行以下命令安装最新版本的 connectedk8s Azure CLI 扩展:
az extension add --name connectedk8s正在运行的 Kubernetes 群集。 如果没有群集,可以使用以下选项之一创建群集:
在群集上部署 Arc 代理需要至少 850 MB 的可用空间,并且大约需要 7% 的单个 CPU 容量。
指向群集的 kubeconfig 文件和上下文。 有关详细信息,请参阅 配置对多个群集的访问权限。
为启用 Azure Arc 的 Kubernetes 注册提供程序
输入以下命令:
az provider register --namespace Microsoft.Kubernetes az provider register --namespace Microsoft.KubernetesConfiguration az provider register --namespace Microsoft.ExtendedLocation监视注册过程。 注册最多可能需要 10 分钟。
az provider show -n Microsoft.Kubernetes -o table az provider show -n Microsoft.KubernetesConfiguration -o table az provider show -n Microsoft.ExtendedLocation -o table注册完成后,
RegistrationState这些命名空间的状态会更改为Registered。
创建资源组
运行以下命令,为已启用Azure Arc的 Kubernetes 群集创建资源组。 在此示例中,资源组名为 AzureArcTest,并在 ChinaEast2 区域中创建。
az group create --name AzureArcTest --location ChinaEast2 --output table
输出:
Location Name
---------- ------------
chinaeast2 AzureArcTest
连接现有的 Kubernetes 群集
运行以下命令以连接到群集。 此命令将Azure Arc代理部署到群集,并将 Helm v3.6.3 安装到部署计算机的 .azure 文件夹中。 此 Helm 3 安装仅用于Azure Arc,并且不会删除或更改计算机上任何以前安装的 Helm 版本。
在此示例中,群集的名称为 AzureArcTest1。
az connectedk8s connect --name AzureArcTest1 --resource-group AzureArcTest
输出:
Helm release deployment succeeded
{
"aadProfile": {
"clientAppId": "",
"serverAppId": "",
"tenantId": ""
},
"agentPublicKeyCertificate": "xxxxxxxxxxxxxxxxxxx",
"agentVersion": null,
"connectivityStatus": "Connecting",
"distribution": "gke",
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/AzureArcTest/providers/Microsoft.Kubernetes/connectedClusters/AzureArcTest1",
"identity": {
"principalId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"type": "SystemAssigned"
},
"infrastructure": "gcp",
"kubernetesVersion": null,
"lastConnectivityTime": null,
"location": "chinaeast2",
"managedIdentityCertificateExpirationTime": null,
"name": "AzureArcTest1",
"offering": null,
"provisioningState": "Succeeded",
"resourceGroup": "AzureArcTest",
"tags": {},
"totalCoreCount": null,
"totalNodeCount": null,
"type": "Microsoft.Kubernetes/connectedClusters"
}
提示
如果未在上述命令中指定 location 参数,则会在资源组所在的同一位置创建启用Azure Arc的 Kubernetes 资源。 若要在不同的位置创建启用了Azure Arc的 Kubernetes 资源,请在运行 --location <region> 命令时指定 -l <region> 或 az connectedk8s connect。
重要
如果部署因超时错误而失败,请参阅 故障排除指南 ,获取解决问题的帮助。
使用出站代理服务器进行连接
如果您的群集受到出站代理服务器的保护,请将请求通过出站代理服务器路由。
在部署计算机上,设置Azure CLI使用出站代理服务器所需的环境变量:
export HTTP_PROXY=<proxy-server-ip-address>:<port> export HTTPS_PROXY=<proxy-server-ip-address>:<port> export NO_PROXY=<cluster-apiserver-ip-address>:<port>在 Kubernetes 群集上,运行指定了
--proxy-https和--proxy-http参数的连接命令。 如果代理服务器同时设置了 HTTP 和 HTTPS,请确保对 HTTP 代理使用--proxy-http,对 HTTPS 代理使用--proxy-https。 如果代理服务器仅使用 HTTP,则可以将该值用于这两个参数。az connectedk8s connect --name <cluster-name> --resource-group <resource-group> --proxy-https https://<proxy-server-ip-address>:<port> --proxy-http http://<proxy-server-ip-address>:<port> --proxy-skip-range <excludedIP>,<excludedCIDR> --proxy-cert <path-to-cert-file>注意
- 某些网络请求(例如涉及群集内服务到服务通信的网络请求)需要与通过代理服务器路由的流量分离,以便进行出站通信。
--proxy-skip-range使用参数以逗号分隔的方式指定 CIDR 范围和终结点,以便从代理到这些终结点的任何通信都不会通过出站代理进行。 至少将群集中的服务的 CIDR 范围指定为此参数的值。 例如,假设kubectl get svc -A返回一个服务列表,其中所有服务在10.0.0.0/16范围内都有 ClusterIP 值。 则要为--proxy-skip-range指定的值为10.0.0.0/16,kubernetes.default.svc,.svc.cluster.local,.svc。 - 大多数出站代理环境需要
--proxy-http,--proxy-https以及--proxy-skip-range。--proxy-cert仅当需要将代理期望的受信任证书注入到代理 Pod 的受信任证书存储中时,才需要此参数。 - 必须将出站代理配置为允许 Websocket 连接。
对于出站代理服务器,如果仅提供受信任的证书,您只需运行命令
az connectedk8s connect并指定--proxy-cert参数即可:az connectedk8s connect --name <cluster-name> --resource-group <resource-group> --proxy-cert <path-to-cert-file>如果有多个受信任的证书,请将证书链(叶证书、中间证书、根证书)合并为一个文件,并在参数
--proxy-cert中传入。提示
-
--custom-ca-cert是--proxy-cert的别名。 可互换使用任一参数。 如果在同一命令中传递这两个参数,则以最后传递的参数为准。
- 某些网络请求(例如涉及群集内服务到服务通信的网络请求)需要与通过代理服务器路由的流量分离,以便进行出站通信。
验证群集连接
运行以下命令,验证群集是否已连接到Azure:
az connectedk8s list --resource-group AzureArcTest --output table
输出:
Name Location ResourceGroup
------------- ---------- ---------------
AzureArcTest1 chinaeast2 AzureArcTest
如果连接未成功,请参阅诊断 Azure Arc 启用的 Kubernetes 群集连接问题,以了解故障排除步骤。
注意
载入群集后,群集元数据(例如群集版本和节点数)最多可能需要十分钟才能显示在Azure门户中已启用Azure Arc Kubernetes 资源的概述页上。
查看 Kubernetes 的Azure Arc代理
Azure Arc启用的 Kubernetes 将多个代理部署到 azure-arc 命名空间中。
使用以下命令查看这些部署和 Pod:
kubectl get deployments,pods -n azure-arc验证所有 Pod 是否处于
Running状态。输出:
NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/cluster-metadata-operator 1/1 1 1 13d deployment.apps/clusterconnect-agent 1/1 1 1 13d deployment.apps/clusteridentityoperator 1/1 1 1 13d deployment.apps/config-agent 1/1 1 1 13d deployment.apps/controller-manager 1/1 1 1 13d deployment.apps/extension-manager 1/1 1 1 13d deployment.apps/flux-logs-agent 1/1 1 1 13d deployment.apps/kube-aad-proxy 1/1 1 1 13d deployment.apps/metrics-agent 1/1 1 1 13d deployment.apps/resource-sync-agent 1/1 1 1 13d NAME READY STATUS RESTARTS AGE pod/cluster-metadata-operator-9568b899c-2stjn 2/2 Running 0 13d pod/clusterconnect-agent-576758886d-vggmv 3/3 Running 0 13d pod/clusteridentityoperator-6f59466c87-mm96j 2/2 Running 0 13d pod/config-agent-7cbd6cb89f-9fdnt 2/2 Running 0 13d pod/controller-manager-df6d56db5-kxmfj 2/2 Running 0 13d pod/extension-manager-58c94c5b89-c6q72 2/2 Running 0 13d pod/flux-logs-agent-6db9687fcb-rmxww 1/1 Running 0 13d pod/kube-aad-proxy-67b87b9f55-bthqv 2/2 Running 0 13d pod/metrics-agent-575c565fd9-k5j2t 2/2 Running 0 13d pod/resource-sync-agent-6bbd8bcd86-x5bk5 2/2 Running 0 13d
有关这些代理的详细信息,请参阅已启用 Azure Arc 的 Kubernetes 代理概述。
清理资源
若要删除已启用Azure Arc的 Kubernetes 资源以及群集上运行的任何关联的配置资源和代理,请使用以下命令:
az connectedk8s delete --name AzureArcTest1 --resource-group AzureArcTest
如果删除过程失败,请使用以下命令强制删除。 添加 -y 以绕过确认提示:
az connectedk8s delete -n AzureArcTest1 -g AzureArcTest --force
如果由于以前创建的资源未完全删除而创建新群集部署时遇到问题,请使用此命令。
注意
如果在Azure门户中删除启用了Azure Arc的 Kubernetes 资源,则会删除关联的配置资源,但不会删除群集上运行的代理。 因此,建议使用 az connectedk8s delete 删除已启用Azure Arc的 Kubernetes 资源。
后续步骤
- 了解如何使用 GitOps with Flux v2 部署配置。
- 排查常见 Azure Arc 启用的 Kubernetes 问题。
- 使用 Azure Arc Jumpstart 体验启用 Azure Arc 的 Kubernetes 自动化场景。
- 按照 Azure Arc 启用的 Kubernetes 的安全手册中的指南,帮助保护群集。