Controller Manager Go Engine Test
The Kubernetes Controller Manager, implemented in Go, is responsible for managing controller runtimes (like Docker or containerd) and ensuring efficient operation of containers on nodes. It integrates with the kubelet to handle container creation, deletion, monitoring, and resource allocation (CPU, memory). The Go language provides performance, concurrency, and scalability, enabling the Container Manager to efficiently manage container lifecycles. It communicates with container runtimes via the Container Runtime Interface (CRI), ensuring smooth orchestration and compatibility in a Kubernetes cluster environment.
Monitoring the Go engine in Kubernetes components like the Controller Manager ensures efficient resource usage, concurrency, and runtime performance. High memory or CPU consumption, goroutine leaks, or garbage collection delays can impact container management. Proactive monitoring helps identify bottlenecks, optimize performance, and maintain cluster stability and responsiveness under varying workloads.
The Controller Manager Go Engine Test continuously monitors the Go Engine , and reports the metrics Garbge collection cycles, Meromy suize, GC utilization etc. It also reveals the virtual memory size and how many go routines exist at the moment. These metrics allow the administrator to take informed decision on performance of Go engine and take preventive actions if required.
Target of the test : A Kubernetes Master Node
Agent deploying the test : A remote agent
Outputs of the test : One set of results for the target Kubernetes Master node being monitored
Parameter |
Description |
---|---|
Test Period |
How often should the test be executed. |
Host |
The IP address of the host for which this test is to be configured. |
Port |
Specify the port at which the specified Host listens. By default, this is 6443. |
Timeout |
Specify the duration (in seconds) beyond which the test will timeout in the Timeout text box. The default value is 10 seconds. |
DD Frequency |
Refers to the frequency with which detailed diagnosis measures are to be generated for this test. The default is 3:1. This indicates that, by default, detailed measures will be generated every third time this test runs, and also every time the test detects a problem. You can modify this frequency, if you so desire. Also, if you intend to disable the detailed diagnosis capability for this test, you can do so by specifying none against DD frequency. |
Metric URL |
Each of the Kubernetes system components expose monitoring metrics through /metrics endpoint of the HTTP server. For components that don't expose endpoint by default, refer official Kubernetes distribution documentation site. Specify the metric URL textbox. |
Detailed Diagnosis |
To make diagnosis more efficient and accurate, the eG Enterprise embeds an optional detailed diagnostic capability. With this capability, the eG agents can be configured to run detailed, more elaborate tests as and when specific problems are detected. To enable the detailed diagnosis capability of this test for a particular server, choose the On option. To disable the capability, click on the Off option. The option to selectively enable/disable the detailed diagnosis capability will be available only if the following conditions are fulfilled:
|
Measurement |
Description |
Measurement Unit |
Interpretation |
||||||
---|---|---|---|---|---|---|---|---|---|
Garbage collection cycles |
Indicates the number of system cycles when system automatically cleans up unused or orphaned resources. |
Number |
Too many Garbage collection cycles can lead to system resources being diverted. |
||||||
Total pause duration of garbage collection cycles |
Indicates the time in milliseconds when garbage collection cycles are paused. |
Milliseconds |
Garbage collection in Kubernetes helps maintain cluster health and resource efficiency over time. |
||||||
Average pause duration of garbage collection cycles |
Indicates the average time in milliseconds when garbage collection cycles are paused across all GC cycles. |
Milliseconds |
|
||||||
GC time utilization |
Indicates the total GC time utilized by Garbage collector. |
Percentage |
Too much Garbage collection time utilized can lead to system resources being diverted. |
||||||
Resident memory size |
Indicates the total size of resident memory required for Go Engine. |
GB |
|
||||||
Virtual memory size |
Indicates the total amount of virtual memory allocated to a process by the operating system. |
GB |
You can check a process's virtual memory usage with different tools depending on your operating system: |
||||||
Goroutines that currently exist |
Indicates the number of goroutines that currently exist in a Go program can vary depending on the program's structure, runtime logic, and activity. |
Number |
To find out the exact number of goroutines at a given moment, you can use the runtime package in Go. |
||||||
OS threads created |
Indicates the number of OS threads created and managed by Go runtime scheduler. |
Number |
OS threads are created and managed by the Go runtime scheduler, which maps goroutines to OS threads dynamically. While the number of goroutines can be very large, the number of OS threads is usually smaller and grows only as needed. |
||||||
Go environment details available |
Indicates if the number of Go environment details are available or not. |
|
The values that this measure reports and their corresponding numeric values are detailed in the table below:
Note: By default, this test reports the Measure Values listed in the table above to indicate if Go environment details available of Kubelet service on the target node. In the graph of this measure however, the state is indicated using the numeric equivalents only. |