你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用 Azure CLI 安装 Open Service Mesh (OSM) 加载项
本文介绍如何在 Azure Kubernetes 服务 (AKS) 群集上安装 Open Service Mesh (OSM) 加载项。 OSM 加载项在群集上安装 OSM 网格。 OSM 网格是一个服务网格,可为应用程序提供流量管理、策略强制实施和遥测收集。 有关 OSM 网格的详细信息,请参阅 Open Service Mesh。
注意
云原生计算基金会 (CNCF) 的 Open Service Mesh (OSM) 停用后,我们建议识别 OSM 配置并将其迁移到等效的 Istio 配置。 有关从 OSM 迁移到 Istio 的信息,请参阅将 Open Service Mesh (OSM) 配置迁移到 Istio 的指南。
重要
根据群集运行的 Kubernetes 版本,OSM 加载项会安装不同版本的 OSM。
Kubernetes 版本 | 安装的 OSM 版本 |
---|---|
1.24.0 或更高版本 | 1.2.5 |
介于 1.23.5 和 1.24.0 之间 | 1.1.3 |
低于 1.23.5 | 1.0.0 |
如果相应的 AKS 版本已结束生命周期,则较旧版本的 OSM 可能无法安装或获得主动支持。 有关 AKS 版本支持窗口的信息,可以查看 AKS Kubernetes 发布日历。
先决条件
- Azure 订阅。 如果没有 Azure 订阅,可以创建一个免费帐户。
- 已安装 Azure CLI。
在群集上安装 OSM 加载项
如果还没有 Azure 资源组,请使用
az group create
命令创建一个 Azure 资源组。az group create --name myResourceGroup --location eastus
使用
az aks create
命令创建安装了 OSM 加载项的新 AKS 群集,并为--enable-addons
参数指定open-service-mesh
。az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --enable-addons open-service-mesh \ --generate-ssh-keys
重要
如果现有群集上已有 OSM 网格,则不能在该群集上启用 OSM 加载项。 在启用 OSM 加载项之前,请卸载群集上的任何现有 OSM 网格。
在现有群集上安装时,请使用 az aks enable-addons
命令。 请参阅以下代码示例:
az aks enable-addons \
--resource-group myResourceGroup \
--name myAKSCluster \
--addons open-service-mesh
获取群集的凭据
使用
az aks get-credentials
命令获取 AKS 群集的凭据。az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
验证群集上是否安装了 OSM 加载项
使用
az aks show
命令验证 OSM 加载项是否已安装在群集上,并为--query
参数指定'addonProfiles.openServiceMesh.enabled'
。 在输出的addonProfiles
下面,openServiceMesh
的enabled
值应显示为true
。az aks show --resource-group myResourceGroup --name myAKSCluster --query 'addonProfiles.openServiceMesh.enabled'
验证 OSM 网格是否正在群集上运行
使用
kubectl get deployment
命令验证群集上运行的 OSM 网格的版本、状态和配置,并显示 osm-controller 部署的映像版本。kubectl get deployment -n kube-system osm-controller -o=jsonpath='{$.spec.template.spec.containers[:1].image}'
以下示例输出显示 0.11.1 版 OSM 网格:
mcr.microsoft.com/oss/openservicemesh/osm-controller:v0.11.1
使用下列
kubectl
命令验证群集上运行的 OSM 组件的状态,以显示app.kubernetes.io/name=openservicemesh.io
部署、pod 和服务的状态。kubectl get deployments -n kube-system --selector app.kubernetes.io/name=openservicemesh.io kubectl get pods -n kube-system --selector app.kubernetes.io/name=openservicemesh.io kubectl get services -n kube-system --selector app.kubernetes.io/name=openservicemesh.io
重要
如果任何 pod 的状态不是
Running
(如Pending
),则群集可能没有足够的资源运行 OSM。 在群集上继续使用 OSM 之前,请查看群集的调整大小,例如节点数和虚拟机的 SKU。使用
kubectl get meshconfig
命令验证 OSM 网格的配置。kubectl get meshconfig osm-mesh-config -n kube-system -o yaml
以下示例输出显示了 OSM 网格的配置:
apiVersion: config.openservicemesh.io/v1alpha1 kind: MeshConfig metadata: creationTimestamp: "0000-00-00A00:00:00A" generation: 1 name: osm-mesh-config namespace: kube-system resourceVersion: "2494" uid: 6c4d67f3-c241-4aeb-bf4f-b029b08faa31 spec: certificate: serviceCertValidityDuration: 24h featureFlags: enableEgressPolicy: true enableMulticlusterMode: false enableWASMStats: true observability: enableDebugServer: true osmLogLevel: info tracing: address: jaeger.osm-system.svc.cluster.local enable: false endpoint: /api/v2/spans port: 9411 sidecar: configResyncInterval: 0s enablePrivilegedInitContainer: false envoyImage: mcr.microsoft.com/oss/envoyproxy/envoy:v1.18.3 initContainerImage: mcr.microsoft.com/oss/openservicemesh/init:v0.9.1 logLevel: error maxDataPlaneConnections: 0 resources: {} traffic: enableEgress: true enablePermissiveTrafficPolicyMode: true inboundExternalAuthorization: enable: false failureModeAllow: false statPrefix: inboundExtAuthz timeout: 1s useHTTPSIngress: false
示例输出显示了
enablePermissiveTrafficPolicyMode: true
,这意味着 OSM 启用了允许流量策略模式。 在你的 OSM 网格中启用此模式:- 忽略 SMI 流量策略执行。
- OSM 将自动发现作为服务网格一部分的服务。
- OSM 在每个 Envoy 代理挎斗上创建流量策略规则,以便能够与这些服务通信。
删除群集
不再需要群集时,可以使用
az group delete
命令将其删除,此操作会删除资源组、群集和所有相关资源。az group delete --name myResourceGroup --yes --no-wait
注意
或者,可以从群集中卸载 OSM 加载项和相关资源。 有关详细信息,请参阅从 AKS 群集卸载 Open Service Mesh 加载项。
后续步骤
本文介绍了如何在 AKS 群集上安装 OSM 加载项,并验证它是否已安装且正在运行。 使用群集上安装的 OSM 加载项,你可以部署示例应用程序或载入现有应用程序,以使用你的 OSM 网格。