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

Configurable parameters for the test

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:

  • The eG manager license should allow the detailed diagnosis capability
  • Both the normal and abnormal frequencies configured for the detailed diagnosis measures should not be 0.
Measurements made by the test

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:

Measure Value Numeric Value
Yes 1
No 0

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.