API Server Go Engine Test
The Kubernetes API Server is built using the Go programming language and serves as the central control plane component. It exposes the Kubernetes API, handles RESTful HTTP requests, and communicates with the cluster's state stored in Etcd. It processes requests to create, update, and delete resources like Pods, Services, and Deployments, ensuring consistent state management, validation, and authorization, making it the entry point for cluster management.
Monitoring the Kubernetes API Server Go Engine is crucial for ensuring cluster health, performance, and security. It handles all client requests, including CRUD operations, and manages communication with etcd. Monitoring helps detect issues like high latency, errors, or unauthorized access, ensuring the control plane remains responsive and functional.
The API Server 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. |