Cloud Native Operations. CPU and Memory Resources ManagementSummaryThis article describes CPU and Memory Resource Management functionality of Cloud Native Operations application (CNO application in the rest of the document). Kubernetes controls containers resources upon a pod scheduling. The main resource control criterias are: - A container should have enough resources to run - A container resources are limited and cannot exceed the maximum amount. The resources are controlled by CNO application are memory and CPU. Resources specification Resources specification includes request and limit: - Request defines the resource amount the container is guaranteed to get. - Limit defines the max resource amount that a container may use. Resources units CPU resources are defined in millicores. For example: If a container needs two full cores to run, the value “2000m” should be used, or if a container needs ¼ (0.25) of a core, the value “250m” should be used Memory resources are defined using the following units:- Kibibyte. 1Ki = 2¹⁰ = 1,024 bytes - Mebibyte. 1Mi = 2²⁰ = 1,048,576 bytes- Gibibyte. 1Gi = 2³⁰ = 1,073,741,824 bytes - Tebibyte. 1Ti = 2⁴⁰ = 1,099,511,627,776 bytes- Pebibyte. 1Pi = 2⁵⁰ = 1,125,899,906,842,624 bytes CNO application. Resource table (sn_cno_resources) The following picture presents CNO Resource table with default values. The table contains resource values for the following configurations: - The "Small" configuration is used when there is no Metric Intelligence application - The "Large" configuration is used when there is active Metric Intelligence applicationThe deployment script detects whether Metric Intelligence is running and applies values accordantly Working with the table Only users with role sn_k8s.cno_admin or admin can access the table and edit the values.User is allowed to modify Request, Limit and Unit fields., but a user cannot add or delete rows of the table.There are business rules that prevent a user from entering invalid values or invalid actions.The modified values will be applied to the future deployment. Important Notes 1. The values are defined by CNO Resources Table are applied during deployment, so if values are modified after application is deployed, then changed values will be applied to the future deployment. 2. If the request values exceed the resources provided by the node, a Pod will not start. For example, if you have a cluster of dual-core machines, a Pod with a CPU request of 2.5 cores will never be scheduled 3. It is not recommended to reduce the default values of Limits that are defined in CNO Resources table 4. Use the command line interface "kubectl describe" command to check the values applied kubectl describe pod <pod name> -n <namespace>