deployments-k8s icon indicating copy to clipboard operation
deployments-k8s copied to clipboard

[help]question about nsm support sriov

Open zhm-algo opened this issue 2 years ago • 3 comments

  1. In Kubernetes, any Pod can add a Network Service using an annotation: annotations: networkservicemesh.io: "kernel://my-networkservice-1/nsm-1" if we want nsm to support sriov, is there any change for the annotation.

  2. when we try the sriov deployment in example directory, we have to prepare the sriov config first. what kind of resource will be created from the sriov config file. (hint, SriovNetworkNodePolicy or SriovNetwork)

  3. when we try the SriovKernel2Noop usecase in example directory, we met some errors, how to solve it. root@ubuntu-be8216485a:~/nsm_sriov_test# kubectl logs -f nsc-kernel-7ff8f5dcc7-g5ffq -n ns-hlnx5 ... Aug 2 00:41:16.645 [FATA] [cmd:[/bin/app]] rpc error: code = PermissionDenied desc = no sufficient privileges

root@ubuntu-be8216485a:~/nsm_sriov_test# kubectl logs ponger-7675f85679-cglrb -n ns-hlnx5 ip: can't find device 'eno4' ip: can't find device 'eno4' ip: can't find device 'eno4'

  1. can nsm support mem_if or vhost?

zhm-algo avatar Aug 02 '22 02:08 zhm-algo

/cc @glazychev-art @edwarnicke

denis-tingaikin avatar Aug 03 '22 13:08 denis-tingaikin

In Kubernetes, any Pod can add a Network Service using an annotation: annotations: networkservicemesh.io: "kernel://my-networkservice-1/nsm-1"

If you're intrested in kernel mechanims then here as I can see need to add a sriovToken label. See at kernel sriov use-case example https://github.com/networkservicemesh/deployments-k8s/tree/main/examples/use-cases/SriovKernel2Noop

when we try the sriov deployment in example directory, we have to prepare the sriov config first. what kind of resource will be created from the sriov config file. (hint, SriovNetworkNodePolicy or SriovNetwork)

We're testing this on the packet cluster. I think this configuration of the cluster could be interested for you https://github.com/networkservicemesh/integration-k8s-packet/blob/main/.github/workflows/ci.yaml#L72

when we try the SriovKernel2Noop usecase in example directory, we met some errors, how to solve it. root@ubuntu-be8216485a:~/nsm_sriov_test# kubectl logs -f nsc-kernel-7ff8f5dcc7-g5ffq -n ns-hlnx5

This is intresting. Could you dump logs from your clusterr and attach them?

can nsm support mem_if or vhost?

Yes, but it is supporting by another forwarder (vpp). See at memif/vxlan examples https://github.com/networkservicemesh/deployments-k8s/tree/main/examples/basic

denis-tingaikin avatar Aug 04 '22 13:08 denis-tingaikin

  1. I deploy sriov example, it succeeded (https://github.com/networkservicemesh/deployments-k8s/tree/main/examples/sriov)

root@ubuntu-be8216485a:~/nsm_sriov_test# kubectl get po -n nsm-system NAME READY STATUS RESTARTS AGE forwarder-vpp-dd5wr 1/1 Running 0 32m nsmgr-v7mvb 2/2 Running 0 32m registry-k8s-76fd9d68c5-d4ghs 1/1 Running 0 32m

  1. I deploy "Test SR-IOV kernel connection" (https://github.com/networkservicemesh/deployments-k8s/tree/main/examples/use-cases/SriovKernel2Noop) the status is shown below

root@ubuntu-be8216485a:~/nsm_sriov_test# kubectl get po -n ns-8s8v6 NAME READY STATUS RESTARTS AGE nsc-kernel-5f65c5b4-hmqk4 1/1 Running 0 7m56s nse-kernel-75ccfd5c9f-8z24t 1/1 Running 0 7m56s ponger-7675f85679-mwzk2 1/1 Running 6 (2m59s ago) 7m56s

while the pod of ponger is error, and the error log is as below

root@ubuntu-be8216485a:~/nsm_sriov_test# kubectl logs ponger-7675f85679-mwzk2 -n ns-8s8v6 ip: can't find device 'eno4' ip: can't find device 'eno4' ip: can't find device 'eno4' ip: ioctl 0x8913 failed: No such device ip: can't find device 'eno4' ip: can't find device 'eno4' ip: can't find device 'eno4' ip: can't find device 'eno4'

  1. the pod of nsc-kernel and nse-kernel is deployed successfully, but how to confirm that the pod is using sriov vf interface.

zhm-algo avatar Aug 09 '22 07:08 zhm-algo