Note: Each Istio enabled VMI must feature the sidecar.istio.io/inject annotation instructing KubeVirt to perform necessary network configuration.
Verification
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
virt-launcher-vmi-istio-ncx7r 3/3 Running 0 7s
$ kubectl get pods virt-launcher-vmi-istio-ncx7r -o jsonpath='{.spec.containers[*].name}'
compute volumecontainerdisk istio-proxy
$ istioctl proxy-status
NAME CDS LDS EDS RDS ISTIOD VERSION
...
virt-launcher-vmi-istio-ncx7r.default SYNCED SYNCED SYNCED SYNCED istiod-7c4d8c7757-hshj5 1.10.0
Troubleshooting
Istio sidecar is not deployed
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
virt-launcher-vmi-istio-jnw6p 2/2 Running 0 37s
$ kubectl get pods virt-launcher-vmi-istio-jnw6p -o jsonpath='{.spec.containers[*].name}'
compute volumecontainerdisk
Istio sidecar is not ready
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
virt-launcher-vmi-istio-lg5gp 2/3 Running 0 90s
$ kubectl describe pod virt-launcher-vmi-istio-lg5gp
...
Warning Unhealthy 2d8h (x3 over 2d8h) kubelet Readiness probe failed: Get "http://10.244.186.222:15021/healthz/ready": dial tcp 10.244.186.222:15021: connect: no route to host
Warning Unhealthy 2d8h (x4 over 2d8h) kubelet Readiness probe failed: Get "http://10.244.186.222:15021/healthz/ready": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
Resolution: Make sure the sidecar.istio.io/inject: "true" annotation is defined in the created VMI and that masquerade binding is used for pod network interface.
Virt-launcher pod for VMI is stuck at initialization phase
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
virt-launcher-vmi-istio-44mws 0/3 Init:0/3 0 29s
$ kubectl describe pod virt-launcher-vmi-istio-44mws
...
Multus: [default/virt-launcher-vmi-istio-44mws]: error loading k8s delegates k8s args: TryLoadPodDelegates: error in getting k8s network for pod: GetNetworkDelegates: failed getting the delegate: getKubernetesDelegate: cannot find a network-attachment-definition (istio-cni) in namespace (default): network-attachment-definitions.k8s.cni.cncf.io "istio-cni" not found
Verify istio-proxy sidecar is deployed and able to synchronize with Istio control plane using istioctl proxy-status command. See Istio documentation section for more information about proxy-status subcommand.
Resolution: Make sure the istio-injection=enabled is added to the target namespace. If the issue persists, consult .
Resolution: Make sure the istio-cni NetworkAttachmentDefinition (provided in the section) is created in the target namespace.