本文介绍如何在 Azure Kubernetes 服务 (AKS) 群集上安装 Open Service Mesh (OSM) 加载项。 OSM 加载项在群集上安装 OSM 网格。 OSM 网格是一个服务网格,可为应用程序提供流量管理、策略强制实施和遥测收集。 有关 OSM 网格的详细信息,请参阅 Open Service Mesh。
重要
根据群集运行的 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 chinaeast2使用
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.azk8s.cn/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.azk8s.cn/oss/envoyproxy/envoy:v1.18.3 initContainerImage: mcr.azk8s.cn/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 网格。