8.9. 将虚拟机连接到服务网格
OpenShift Virtualization 现在与 OpenShift Service Mesh 集成。您可以使用 IPv4 监控、视觉化和控制在默认 pod 网络上运行虚拟机工作负载的 pod 之间的流量。
8.9.1. 将虚拟机添加到服务网格中
要将虚拟机 (VM) 工作负载添加到服务网格中,请在虚拟机配置文件中启用自动 sidecar 注入,方法是将 sidecar.istio.io/inject
注解设置为 true
。然后,将虚拟机公开为服务,以便在网格中查看应用程序。
重要
为了避免端口冲突,请不要使用 Istio sidecar 代理使用的端口。它们包括 15000、15001、15006、15008、15020、15021 和 15090。
先决条件
- 已安装 Service Mesh Operator。
- 已创建 Service Mesh control plane。
- 将 VM 项目添加到 Service Mesh member roll。
流程
编辑虚拟机配置文件以添加
sidecar.istio.io/inject: "true"
注解:配置文件示例
apiVersion: kubevirt.io/v1 kind: VirtualMachine metadata: labels: kubevirt.io/vm: vm-istio name: vm-istio spec: runStrategy: Always template: metadata: labels: kubevirt.io/vm: vm-istio app: vm-istio 1 annotations: sidecar.istio.io/inject: "true" 2 spec: domain: devices: interfaces: - name: default masquerade: {} 3 disks: - disk: bus: virtio name: containerdisk - disk: bus: virtio name: cloudinitdisk resources: requests: memory: 1024M networks: - name: default pod: {} terminationGracePeriodSeconds: 180 volumes: - containerDisk: image: registry:5000/kubevirt/fedora-cloud-container-disk-demo:devel name: containerdisk
应用 VM 配置:
$ oc apply -f <vm_name>.yaml 1
- 1
- 虚拟机 YAML 文件的名称。
创建一个
Service
对象,将虚拟机公开给服务网格。apiVersion: v1 kind: Service metadata: name: vm-istio spec: selector: app: vm-istio 1 ports: - port: 8080 name: http protocol: TCP
- 1
- 服务选择器,决定服务的目标 pod 集合。此属性对应于虚拟机配置文件中的
spec.metadata.labels
字段。在上例中,名为vm-istio
的Service
对象在任何带有标签app=vm-istio
的 pod 上都以 TCP 端口 8080 为目标。
创建服务:
$ oc create -f <service_name>.yaml 1
- 1
- 服务 YAML 文件的名称。