定义规范化服务
注意:Anthos Service Mesh 1.6.8 及更高版本会自动支持规范化服务。
规范服务是一组实现相同服务和 API 的工作负载。对于受支持的工作负载类型,Anthos Service Mesh 会根据 Kubernetes API 服务器中的现有信息自动创建规范服务资源。本页面介绍哪些标签自动定义规范化服务,以及如何手动调整服务的边界。
目前支持的工作负载实例类型包括:
- Kubernetes Pod(包括通过 Kubernetes Deployment、Kube Run Service 等)
- 虚拟机实例
规范化服务的定义
Anthos Service Mesh 通过读取与每个工作负载实例关联的 Kubernetes 配置资源的 service.istio.io/canonical-name
标签来确定规范化服务成员资格:
- 对于 Pod,标签位于 Kubernetes Pod 资源中
- 对于虚拟机,标签位于 Istio WorkloadEntry 资源中
规范化服务与其关联的工作负载实例具有相同的 Kubernetes 命名空间,并且不能跨越命名空间。
自动添加标签规则
Anthos Service Mesh 会将您的工作负载自动分组到规范化服务中,您无需执行任何操作。
您只需执行以下操作即可:
- 调整用户/读取者清晰度的标签
- 替换默认行为。
在 Kubernetes Pod 中自动添加标签
规范化服务侧重于 Kubernetes app.kubernetes.io/name
和 app
标签。请注意,前一个标签优先。
如果您在工作负载上使用这两个标签中的任意一个,则无需执行进一步操作。
在虚拟机中自动添加标签
要在您的虚拟机上构建规范化服务,您必须在 Kubernetes API 服务器中配置 WorkloadEntry 资源,从而将虚拟机添加到服务网格。
手动添加标签
如需手动应用或替换规范化服务标签,请将 service.istio.io/canonical-name
标签应用到 Pod 或 WorkloadEntry 配置。
在 Kubernetes Pod 中手动添加标签
如需使用 Deployment 一次部署多个 Pod,请在 PodTemplateSpec 上设置 service.istio.io/canonical-name
标签:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
namespace: my-namespace
spec:
replicas: 3
template:
metadata:
labels:
service.istio.io/canonical-name: my-service
spec:
containers:
...
如需为单个 Pod 的规范化服务添加标签,请将 service.istio.io/canonical-name
标签添加到 Pod 配置的 labels
部分:
apiVersion: v1
kind: Pod
metadata:
name: my-test-pod
namespace: my-namespace
labels:
service.istio.io/canonical-name: my-service
spec:
...
手动为虚拟机添加标签
如需为单个虚拟机/WorkloadEntry 的规范化服务添加标签,请将 service.istio.io/canonical-name
标签添加到 WorkloadEntry 配置的“标签”部分:
apiVersion: networking.istio.io/v1alpha3
kind: WorkloadEntry
metadata:
name: my-vm-123
namespace: my-namespace
labels:
service.istio.io/canonical-name: my-service
spec:
...