Modified: for 12.1.1

In this section:

Overview

The Ribbon CNF Solution which comprises the SBC CNe, PSX CNe and RAMP real-time communication products requires some specific settings/configurations on the K8s cluster worker Nodes for the proper functioning and to meet the expected KPIs. The user must complete or enable these settings/configurations on the cluster before onboarding the Ribbon CNF Solution components. 

Ribbon provides a Cluster Readiness Checker Tool to run on the allocated cluster (Bare-metal or VM). The tool conducts a comprehensive assessment of the cluster's settings and configurations, comparing them against the expected criteria for onboarding the Ribbon CNF Solution and gives a "Readiness Report" of the current cluster settings/configurations to compare with the expected criteria to decide whether the cluster is ready for onboarding of the Ribbon CNF Solution.

CPU and Memory Requirements

The Cluster Readiness Checker Tool requires the following CPU and RAM configurations to operate.

  • 4 vCPU
  • 1 GiB of RAM

Limitations

The following checks are not included in this tool because they cannot be run from a container. You must check these items directly on the Worker Node. 

  1. Check BIOS settings
  2. Check whether KSM is enabled 
  3. Check whether CPU tuning profile is 'throughput-performance'.

Prerequisites

To ensure the results meet the expected Key Performance Indicators (KPIs), you must apply specific settings and configurations to the K8s cluster worker nodes before onboarding the Ribbon CNF Solution components. Refer to the "Readme.md" file (located in the cluster-readiness-checker-12.1.0-latest.tgz file that is downloaded in the procedure below) for instructions on checking dependencies, running the tool, understanding its tasks, and reading the generated report.

How to Install and Run the Cluster Readiness Checker Tool

Run the tool from the Jump server allocated for the cluster. 


To run the CNF Cluster Readiness Checker Tool:

  1. Download the cluster-readiness-checker-12.1.2-latest.tgz from the artifactory and untar it into the Jump server.
    1. Refer to the "Readme.md" file for instructions on checking dependencies, running the tool, understanding its tasks, and reading the generated report.
  2. Run the script using one of the options below:
    1. Run the Python script ReadinessChecker.py with the Helm deployment name as the argument.
       python3 ReadinessChecker.py. Helm_Deployement_Name
    2. Bash:
      1. Grant 'execute' permission to the script: chmod +x ReadinessChecker.py
      2. Run the script with the desired pod name: ./ReadinessChecker.py <helm_deployement_name>

The script accomplishes the following actions:

  • Obtains the cluster and nodes details.
  • Launches the Cluster Readiness Checker pod.
  • Checks the PVC creation.
  • Copies the pod.log file from the pod to the local machine.
  • Generates the ReadinessCheckReport.txt and ReadinessCheck.log on the Jump server where the ReadinessCheck.py script is located.

Tool Operation

Summary

The primary component of the Readiness Checker Tool is a Python script that performs the following tasks:

  • Collects software and CPU version from the K8s cluster and Worker Nodes.
  • Launches a Daemonset of the Readiness Checker POD in all Nodes.
  • Checks the RWX, RWO and RWX PVC Quota Launch creation.
  • Copies the pod.log file from the pod to the local machine.
  • Generates the ReadinessCheckReport.txt and ReadinessCheck.log where the ReadinessCheck.py is located.

Tasks

The Readiness Checker Pod in each Worker Node accomplishes following tasks:

  1. The Readiness Checker POD in each Worker Node collects CPU, network, storage details etc.
  2. Each pod writes the data to the pod's /var/log/pod.log path.

Example Reports


Result: Passed
Cluster Readiness Check Report
=================================
=================================
Date: 2024-03-11 14:24:20


Cluster level details
=======================

Number of nodes in the Cluster : 6
Kubectl Version: v1.26.12+9ed7eae
OpenShift Client Version : 4.9.0 
OpenShift Server Version : 4.13.29
Helm Version : v3.7.1+g1d11fcb
FluxCD Version: 2.2.2
Argo Rollout Version: latest

RWX PVC Creation Check: Passed
RWO PVC Creation Check: Passed
RWX PVC Quota Launch Check : Passed
Multus CNI Plugin : Present

NODE Worker Node Level Details 
==================================

	Node : worker-1.blr-ocp3.lab.rbbn.com
	-------------------------------------
	Could able to launch Test Pod : Yes

	Software Versions:
	-----------------
	Operating System = Linux CoreOS 413.92.202401100947-0
	OS FLAVOUR = Red Hat Enterprise
	Kernel Version = 5.14.0-284.48.1.el9_2.x86_64
	
	SR-IOV enabled: Yes
	hugepages-1Gi available : Yes
	
	CPU:
	----
	Model name: Intel(R) Xeon(R) Gold 6230R CPU @ 2.10GHz
	CPU op-mode(s): 32-bit, 64-bit
	Architecture:  x86_64
	Byte Order: Little Endian
	Core(s) per socket: 26
	Socket(s): 2
	NUMA node(s): 2
	Vendor ID: GenuineIntel
	CPU MHz: 2999.979
	
	Testing ephemeral storage write performance (in sec)
	-----------------------------------------------------
	Results: 21.987  11.461  10.443  
	Min: 10.443    Max: 21.987    Avg: 14.63
	Current IOPS on ephemeral storage : 14.63
	
	Testing external volume write performance (in sec)
	---------------------------------------------------
	Results: 5.198  4.991  5.130  
	Min: 4.991    Max: 5.198    Avg: 5.11
	Current IOPS on block storage : 5.11
	
	Disk I/O testing using dd commands.
	-----------------------------------
	Disk checking for Ephemeral Storage : Writing to output file /var/log/myfile.img of block size 1M of input blocks to copy count=1024.
	Output : 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 6.23932 s, 172 MB/s
	
	Disk checking for EmptyDir : Writing to output file /emptydir/myfile.img of block size 1M of input blocks to copy count=1024.
	Output : 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 2.18121 s, 492 MB/s
	
	Disk checking for PVC : Writing to output file /mnt/diskcheck/myfile.img of block size 1M of input blocks to copy count=1024.
	Output : 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 5.99925 s, 179 MB/s
	
	Allotted cpu: 4
	Provisioned cpu: 4
	
	CPU Manager Policy : static
	Topology_policy: single-numa-node
	
	NIC_Make : Intel Corporation Ethernet 
	NIC_Version : E810-XXV-2 [8086:0003]
	Kernel Driver : vfio-pci
	
	NIC_Make : Intel Corporation Ethernet 
	NIC_Version : E810-XXV-2 [8086:0003]
	Kernel Driver : vfio-pci
	
	PVC Read and Write Check: Passed
	
	Kernel Parameters
	--------------------
	kernel.sched_rt_runtime_us = -1
	fs.file-max = 800000
	net.ipv4.conf.default.disable_xfrm = 0
	net.ipv4.conf.all.disable_xfrm = 0
	net.ipv4.conf.default.disable_policy = 0
	net.ipv4.conf.all.disable_policy = 0
	vm.dirty_writeback_centisecs = 20
	vm.dirty_expire_centisecs = 1000
	vm.dirty_background_bytes = 2097152
	vm.dirty_bytes = 4194304
	net.core.xfrm_larval_drop = 1
	net.ipv4.tcp_max_syn_backlog = 4096
	net.ipv4.tcp_max_tw_buckets = 262144
	net.ipv4.conf.all.send_redirects = 1
	net.ipv4.conf.default.send_redirects = 1
	net.ipv4.conf.all.accept_redirects = 0
	net.ipv6.conf.all.accept_redirects = 1
	net.ipv4.conf.default.accept_redirects = 1
	net.ipv6.conf.default.accept_redirects = 1
	net.ipv4.conf.default.secure_redirects = 1
	net.ipv4.conf.all.accept_source_route = 0
	net.ipv4.conf.default.accept_source_route = 0
	net.ipv6.conf.all.accept_source_route = 0
	net.ipv4.conf.all.log_martians = 0
	net.ipv4.conf.default.log_martians = 0
	net.ipv4.icmp_echo_ignore_broadcasts = 1
	net.ipv4.icmp_ignore_bogus_error_responses = 1
	net.ipv4.tcp_syncookies = 1
	net.ipv4.conf.default.rp_filter = 1
	net.ipv4.conf.all.rp_filter = 0
	net.ipv4.tcp_pacing_ss_ratio = 200
	kernel.sysrq = 0
	net.ipv4.ip_forward = 1
	net.ipv4.ip_local_reserved_ports =
	kernel.shmmax = 18446744073692774399
	net.ipv4.ip_local_port_range = 32768	60999
	net.ipv4.tcp_syncookies = 1
	kernel.pid_max = 4194304
	fs.inotify.max_user_instances = 8192


Role Verification	
-------------------------------

For pods
=========================================
'pods' 'get' operation success
'pods' 'list' operation success
'pods' 'patch' operation success
'pods' 'delete' operation success

For endpoints
=========================================
'endpoints' 'get' operation success
'endpoints' 'list' operation success
'endpoints' 'patch' operation success

For deployments.apps
=========================================
'deployments.apps' 'get' operation success
'deployments.apps' 'list' operation success
'deployments.apps' 'patch' operation success

For services
=========================================
'services' 'get' operation success
'services' 'list' operation success

For statefulsets.apps
=========================================
'statefulsets.apps' 'get' operation success
'statefulsets.apps' 'list' operation success

For pods.metrics.k8s.io
=========================================
'pods.metrics.k8s.io' 'get' operation success
'pods.metrics.k8s.io' 'list' operation success

For roles.rbac.authorization.k8s.io
=========================================
'roles.rbac.authorization.k8s.io' 'get' operation success
'roles.rbac.authorization.k8s.io' 'list' operation success

For deployments.apps/scale
=========================================
'deployments.apps/scale' 'get' operation success
'deployments.apps/scale' 'patch' operation success
'deployments.apps/scale' 'update' operation success

For statefulsets.apps/scale
=========================================
'statefulsets.apps/scale' 'get' operation success
'statefulsets.apps/scale' 'patch' operation success
'statefulsets.apps/scale' 'update' operation success

For pods/log
=========================================
'pods/log' 'get' operation success


Index Calculation result for 6 Pods out of 6 Pods
---------------------------------------------------------
Average of Index Calculation
----------------------------
passthrough_index :  1.04
crypto_index :  0.94
transcode_index :  0.94
signalling_index :  0.99

Minimum of Index Calculation
----------------------------
passthrough_index : 1.03
crypto_index : 0.94
transcode_index : 0.93
signalling_index : 0.97

Maximum of Index Calculation
----------------------------
passthrough_index : 1.07
crypto_index : 0.95
transcode_index : 0.95
signalling_index : 1.0

Result: Failed
Cluster Readiness Check Report
=================================
=================================
Date: 2024-03-11 14:31:50


Cluster level details
=======================

Number of nodes in the Cluster : 6
Kubectl Version: v1.26.12+9ed7eae
OpenShift Client Version : 4.9.0 
OpenShift Server Version : 4.13.29
Helm Version : v3.7.1+g1d11fcb
FluxCD Version: 2.2.2
Argo Rollout Version: latest

RWX PVC Creation Check: Passed
RWO PVC Creation Check: Passed
RWX PVC Quota Launch Check : Passed
Multus CNI Plugin : Present

NODE Worker Node Level Details 
==================================

	Node : worker-1.blr-ocp3.lab.rbbn.com
	-------------------------------------
	Could able to launch Test Pod : No

	Software Versions:
	-----------------
	Operating System = Linux CoreOS 413.92.202401100947-0
	OS FLAVOUR = Red Hat Enterprise
	Kernel Version = 5.14.0-284.48.1.el9_2.x86_64
	
	SR-IOV enabled: Yes
	hugepages-1Gi available : Yes
	
	CPU:
	----
	Model name: NA
	CPU op-mode(s): NA
	Architecture:  NA
	Byte Order: NA
	Core(s) per socket: NA
	Socket(s): NA
	NUMA node(s): NA
	Vendor ID: NA
	CPU MHz: NA

	Testing ephemeral storage write performance (in sec)
	-----------------------------------------------------
	Results: NA  
	Min: NA    Max: NA    Avg: NA
	Current IOPS on ephemeral storage : NA

	Testing external volume write performance (in sec)
	---------------------------------------------------
	Results: NA  
	Min: NA    Max: NA    Avg: NA
	Current IOPS on ephemeral storage : NA

	Disk I/O testing using dd commands.
	-----------------------------------
	Disk checking for Ephemeral Storage : Writing to output file /var/log/myfile.img of block size 1M of input blocks to copy count=1024.
	Output : NA
	
	Disk checking for EmptyDir : Writing to output file /emptydir/myfile.img of block size 1M of input blocks to copy count=1024.
	Output : NA
	
	Disk checking for PVC : Writing to output file /mnt/diskcheck/myfile.img of block size 1M of input blocks to copy count=1024.
	Output : NA

	Allotted cpu: NA
	Provisioned cpu: NA

	CPU Manager Policy : NA
	Topology_policy: NA

	NIC_Make : NA
	NIC_Version : NA
	Kernel Driver : NA

	NIC_Make : NA
	NIC_Version : NA
	Kernel Driver : NA

	PVC Read and Write Check: NA

	Kernel Parameters
	----------------
	kernel.sched_rt_runtime_us = NA
	fs.file-max = NA
	net.ipv4.conf.default.disable_xfrm = NA
	net.ipv4.conf.all.disable_xfrm = NA
	net.ipv4.conf.default.disable_policy = NA
	net.ipv4.conf.all.disable_policy = NA
	vm.dirty_writeback_centisecs = NA
	vm.dirty_expire_centisecs = NA
	vm.dirty_background_bytes = NA
	vm.dirty_bytes = NA
	net.core.xfrm_larval_drop = NA
	net.ipv4.tcp_max_syn_backlog = NA
	net.ipv4.tcp_max_tw_buckets = NA
	net.ipv4.conf.all.send_redirects = NA
	net.ipv4.conf.default.send_redirects = NA
	net.ipv4.conf.all.accept_redirects = NA
	net.ipv6.conf.all.accept_redirects = NA
	net.ipv4.conf.default.accept_redirects = NA
	net.ipv6.conf.default.accept_redirects = NA
	net.ipv4.conf.default.secure_redirects = NA
	net.ipv4.conf.all.accept_source_route = NA
	net.ipv4.conf.default.accept_source_route = NA
	net.ipv6.conf.all.accept_source_route = NA
	net.ipv4.conf.all.log_martians = NA
	net.ipv4.conf.default.log_martians = NA
	net.ipv4.icmp_echo_ignore_broadcasts = NA
	net.ipv4.icmp_ignore_bogus_error_responses = NA
	net.ipv4.tcp_syncookies = NA
	net.ipv4.conf.default.rp_filter = NA
	net.ipv4.conf.all.rp_filter = NA
	net.ipv4.tcp_pacing_ss_ratio = NA
	kernel.sysrq = NA
	net.ipv4.ip_forward = NA
	net.ipv4.ip_local_reserved_ports = NA
	kernel.shmmax = NA
	net.ipv4.ip_local_port_range = NA
	net.ipv4.tcp_syncookies = NA
	kernel.pid_max = NA
	fs.inotify.max_user_instances = NA



Role Verification	
-------------------------------
POD start failed. Hence could not execute Role check.


Index Calculation result for 0 Pods out of 0 Pods
---------------------------------------------------------
Average of Index Calculation
----------------------------
passthrough_index : NA
crypto_index : NA
transcode_index : NA
signalling_index : NA

Minimum of Index Calculation
----------------------------
passthrough_index : NA
crypto_index : NA
transcode_index : NA
signalling_index : NA

Maximum of Index Calculation
----------------------------
passthrough_index : NA
crypto_index : NA
transcode_index : NA
signalling_index : NA