stx-kubernetes sriov resources suddenly disappears
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
StarlingX |
Triaged
|
Low
|
Steven Webster |
Bug Description
Brief Description
We are using STX 4.0.1 to install our Flexran based 5G solution in AIO-SX mode . We had created VFs on the N3000 device and some of the NIC interfaces. These resources were reflected in the Kuberenets allocatable resources. During the course of using the system, the allocatable resources for N3000 and one of the NIC interface crad started coming up as 0. The following is a part of kubectl describe nodes output. The affected resources are intel.com/
We already tried lock/unlock, delete and re-create the resources, but none of these help to recover the resources
[root@controller-0 sysadmin(
###
### StarlingX
### Release 20.06
###
OS="centos"
SW_VERSION="20.06"
BUILD_TARGET="Host Installer"
BUILD_TYPE="Formal"
BUILD_ID=
JOB="STX_
<email address hidden>"
BUILD_NUMBER="22"
BUILD_HOST=
BUILD_DATE=
FLOCK_OS="centos"
FLOCK_JOB=
<email address hidden>"
FLOCK_BUILD_
FLOCK_BUILD_
FLOCK_BUILD_
Capacity:
cpu: 96
ephemeral-
hugepages-1Gi: 46Gi
hugepages-2Mi: 0
intel.
intel.
intel.
intel.
intel.
intel.
memory: 97436728Ki
pods: 110
Allocatable:
cpu: 92
ephemeral-
hugepages-1Gi: 46Gi
hugepages-2Mi: 0
intel.
intel.
intel.
intel.
intel.
intel.
It seems like everything is "OK" upto sriov device plugin because the sriov device plugin pod logs do show that the correct number of resources are getting updated towards kubernetes
Here are some of the CLI outputs:
[root@controller-0 sysadmin(
+------
| Property | Value |
+------
| name | pci_0000_1d_00_0 |
| address | 0000:1d:00.0 |
| class id | 120000 |
| vendor id | 8086 |
| device id | 0d8f |
| class name | Processing accelerators |
| vendor name | Intel Corporation |
| device name | Device 0d8f |
| numa_node | 0 |
| enabled | True |
| sriov_totalvfs | 8 |
| sriov_numvfs | 8 |
| sriov_vfs_
| sriov_vf_pdevice_id | 0d90 |
| extra_info | |
| created_at | 2021-03-
| updated_at | 2021-03-
| root_key | None |
| revoked_key_ids | None |
| boot_page | None |
| bitstream_id | None |
| bmc_build_version | None |
| bmc_fw_version | None |
| driver | igb_uio |
| sriov_vf_driver | igb_uio |
+------
[root@controller-0 sysadmin(
+------
| Property | Value |
+------
| ifname | sriovfh1 |
| iftype | ethernet |
| ports | [u'enp177s0f3'] |
| imac | 40:a6:b7:34:e4:a3 |
| imtu | 9216 |
| ifclass | pci-sriov |
| ptp_role | none |
| aemode | None |
| schedpolicy | None |
| txhashpolicy | None |
| uuid | 6f30a690-
| ihost_uuid | 8075e0db-
| vlan_id | None |
| uses | [] |
| used_by | [] |
| created_at | |
| updated_at | |
| sriov_numvfs | 16 |
| sriov_vf_driver | vfio |
| accelerated | [True] |
+------
[root@controller-0 sysadmin(
+------
| hostname | uuid | ifname | datanetwork_name |
+------
| controller-0 | 63a44e7b-
| controller-0 | 6aff29d7-
| controller-0 | 76a2da50-
| controller-0 | e155e1d0-
| controller-0 | e569db46-
+------
[root@controller-0 sysadmin(
+------
| hostname | uuid | ifname | datanetwork_name |
+------
| controller-0 | 63a44e7b-
| controller-0 | 6aff29d7-
| controller-0 | 76a2da50-
| controller-0 | e155e1d0-
| controller-0 | e569db46-
+------
[root@controller-0 sysadmin(
+------
| Property | Value |
+------
| hostname | controller-0 |
| uuid | 63a44e7b-
| ifname | sriovfh1 |
| datanetwork_name | datanet-c |
+------
[root@controller-0 sysadmin(
+------
| Property | Value |
+------
| hostname | controller-0 |
| uuid | e155e1d0-
| ifname | sriovfh1 |
| datanetwork_name | datanet-u |
+------
[root@controller-0 sysadmin(
sriov device plugin logs:
=======
controller-
"
I0303 13:47:07.275600 138581 manager.go:106] unmarshalled ResourceList: [{ResourcePrefix: ResourceName:
I0303 13:47:07.275709 138581 manager.go:193] validating resource name "intel.
I0303 13:47:07.450400 138581 manager.go:116] Creating new ResourcePool: intel_fpga_fec
I0303 13:47:07.450446 138581 manager.go:145] New resource server is created for intel_fpga_fec ResourcePool
I0303 13:47:07.453772 138581 server.go:191] starting intel_fpga_fec device plugin endpoint at: intel.com_
I0303 13:47:07.454032 138581 server.go:217] intel_fpga_fec device plugin endpoint started serving
I0303 13:47:07.640208 138581 server.go:106] Plugin: intel.com_
I0303 13:47:07.640225 138581 server.go:131] ListAndWatch(
I0303 13:47:07.640342 138581 server.go:139] ListAndWatch(
controller-
controller-
controller-
controller-
controller-
"
I0303 13:47:07.275600 138581 manager.go:106] unmarshalled ResourceList: [{ResourcePrefix: ResourceName:
I0303 13:47:07.275645 138581 manager.go:193] validating resource name "intel.
I0303 13:47:07.449979 138581 manager.go:116] Creating new ResourcePool: pci_sriov_
I0303 13:47:07.450122 138581 manager.go:145] New resource server is created for pci_sriov_
I0303 13:47:07.450478 138581 server.go:191] starting pci_sriov_
I0303 13:47:07.451088 138581 server.go:217] pci_sriov_
I0303 13:47:07.639929 138581 server.go:131] ListAndWatch(
I0303 13:47:07.640068 138581 server.go:106] Plugin: intel.com_
I0303 13:47:07.639996 138581 server.go:139] ListAndWatch(
controller-
"
I0303 13:47:07.275600 138581 manager.go:106] unmarshalled ResourceList: [{ResourcePrefix: ResourceName:
I0303 13:47:07.275700 138581 manager.go:193] validating resource name "intel.
I0303 13:47:07.450306 138581 manager.go:116] Creating new ResourcePool: pci_sriov_
I0303 13:47:07.450388 138581 manager.go:145] New resource server is created for pci_sriov_
I0303 13:47:07.453443 138581 server.go:191] starting pci_sriov_
I0303 13:47:07.453750 138581 server.go:217] pci_sriov_
I0303 13:47:07.639929 138581 server.go:131] ListAndWatch(
I0303 13:47:07.639945 138581 server.go:139] ListAndWatch(
I0303 13:47:07.640791 138581 server.go:106] Plugin: intel.com_
Severity:
Critical - This is a show stopper and blocks the deployment of Flexran
Steps to Reproduce:
1> created 8 VFs on FEC device with igb_uio driver and 16 VFs on a 10G NIC with vfio driver
2> system lock and unlock the host
3> checked the resource of FEC device from k8s
Allocatable:
intel.com/
intel.com/
intel.com/
4> system lock and unlock the host multiple times during regular usage
5> check k8s allocatable resources becomes 0 and then never recovers, even after multipl host lock/unlock
Allocatable:
intel.com/
intel.com/
intel.com/
6> sriov daemonset pod logs seem to indicate the correct processing of the abover resource set definiton and registration to Kubelet
Expected Behavior:
All FPGA resources and SRIOV resources properly populated in the output of "kubectl describe nodes controller-0"
Actual Behavior:
Resources are not seen as expected
Reproducibility:
Intermittent
System Configuration
Simplex (AIO)
Branch/Pull Time/Commit
StarlingX4.0 Official ISO from http://
Same issue observed even with the ISO build on 26-Feb-2021 03:40 http://
Timestamp/Logs
--------------
Logs are attached. Issue occurred on 03-03-2021
The collect log has been captured after we tried several work arounds of removing the VF association & recreating them (with a lock/unlock). Hence the config.json that is present in the collect log may not reflect the same resources at that point of time.
Test Activity
Evaluation
Workaround
None
description: | updated |
description: | updated |
tags: | added: stx.networking |
Changed in starlingx: | |
assignee: | nobody → Steven Webster (swebster-wr) |
In terms of SR-IOV I agree that things look ok (apart from the resources not being seen by kublet). It's a bit strange to have the sriovfh1 on two datanetworks with the same driver, but there is nothing stopping this...
In any case,
The final SR-IOV binds in the puppet worker run:
2021-03- 03T15:32: 58.739 Debug: 2021-03-03 15:32:58 +0000 Exec[sriov- bind-device: 0000:1d: 01.0](provider= posix): Executing '/usr/share/ starlingx/ scripts/ dpdk-devbind. py --bind=igb_uio 0000:1d:01.0 03T15:32: 58.744 Debug: 2021-03-03 15:32:58 +0000 Executing: '/usr/share/ starlingx/ scripts/ dpdk-devbind. py --bind=igb_uio 0000:1d:01.0
2021-03-
And we can see the sriov device plugin started after the final bind, which is a good thing:
./var/extra/ containerizatio n.info: 2021-03- 03T15:33: 03Z kube-sriov- device- plugin- amd64-888tg Pod Stopping container kube-sriovdp Killing Normal containerizatio n.info: %!s(<nil> ) kube-sriov- device- plugin- amd64-cnqqq Pod Successfully assigned kube-system/ kube-sriov- device- plugin- amd64-cnqqq to controller-0 Scheduled Normal containerizatio n.info: 2021-03- 03T15:33: 09Z kube-sriov- device- plugin- amd64 DaemonSet Created pod: kube-sriov- device- plugin- amd64-cnqqq SuccessfulCreate Normal containerizatio n.info: 2021-03- 03T15:33: 10Z kube-sriov- device- plugin- amd64-cnqqq Pod Started container kube-sriovdp Started Normal containerizatio n.info: 2021-03- 03T15:33: 10Z kube-sriov- device- plugin- amd64-cnqqq Pod Container image "registry. local:9001/ docker. io/starlingx/ k8s-plugins- sriov-network- device: stx.4.0- v3.2-16- g4e0302ae" already present on machine Pulled Normal
./var/extra/
./var/extra/
./var/extra/
./var/extra/
Examining daemon.log for the kubelet logs:
2021-03- 03T15:33: 10.815 controller-0 kubelet[133031]: info E0303 15:33:10.815867 133031 kubelet_ node_status. go:92] Unable to register node "controller-0" with API server: Node "controller-0" is invalid: [status. capacity. hugepages- 2Mi: Invalid value: resource. Quantity{ i:resource. int64Amount{ value:536870912 , scale:0}, d:resource. infDecAmount{ Dec:(*inf. Dec)(nil) }, s:"", Format:"BinarySI"}: may not have pre-allocated hugepages for multiple page sizes, status. capacity. intel.com/ pci_sriov_ net_datanetbh1: Invalid value: resource. Quantity{ i:resource. int64Amount{ value:8, scale:0}, d:resource. infDecAmount{ Dec:(*inf. Dec)(nil) }, s:"8", Format: "DecimalSI" }: may not have pre-allocated hugepages for multiple page sizes, status. capacity. intel.com/ pci_sriov_ net_datanetmh1: Invalid value: resource. Quantity{ i:resource. int64Amount{ value:8, scale:0}, d:resource. infDecAmount{ Dec:(*inf. Dec)(nil) }, s:"8", Format: "DecimalSI" }: may not have pre-allocated hugepages for multiple page sizes, status. capacity. memory: Invalid value: resource. Quantity{ i:resource. int64Amount{ value:997752094 72, scale:0}, d:resource. infDecAmount{ Dec:(*inf. Dec)(nil) }, s:"", Format:"BinarySI"}: may not have pre-allocated hugepages for multiple page sizes, status. allocatable. hugepages- 2Mi: Invalid value: resource. Quantity{ i:resource. int64Amount{ value:536870912 , scale:0}, d:resource. infDecAmount{ Dec:(*inf. Dec)(nil) }, s:"", Format:"BinarySI"}: may not have pre-allocated hugepages for multiple page sizes, ...