Kubernetes Analysis
Kubernetes analysis presents challenges due to the multiple elements involved :
- Clusters
- Namespaces
- Services
- Pods
- Containers
Gyeeta does not directly interact with the Kubernetes API server. Instead, Gyeeta extracts the information non-intrusively as explained below :
Pods
Gyeeta extracts the Pod Information from Process Environment. This is not failsafe as processes may overwrite their environment variables.
Gyeeta stores the Pod Name in the Service or Process tagname
field (Tag Name is the corresponding descriptive name).
To enable Kubernetes Pod Analysis, the monitored host partha
config file should have is_kubernetes
field set to true.
If not specified, is_kubernetes
is assumed to be true.
Service IP/Port
Gyeeta stores the Kubernetes Service IP/Port within the svcip1
and svcport1
fields (Virtual IP Address 1 and
Virtual Port 1 being the corresponding descriptive names). Gyeeta extracts this information from the Network Flows
seen.
This implies, that if no network connections are seen for a service, its svcip1
and svcport1
fields will be empty.
Namespaces
The Kubernetes Namespace name will be part of the Service Domain Names. For example, if a service, say mysvc is part of Kubernetes Namespace sockshop, the service DNS entry could be mysvc.sockshop.svc.cluster.local.
This implies that to get the namespace for a Service, the svcdns
field (Service Domain Name descriptive name) needs to be checked.
Also, the Process Info will not have any svcdns
field and so Kubernetes namespace of a Client process cannot be known in Gyeeta directly,
unless the Client Process itself is also a Service.
Gyeeta will capture DNS entries only if was used by a Client application. If all clients directly use the IP instead of the domain, the Service Domain will remain empty.
Containers
Gyeeta monitors all containers as well as their corresponding cgroups. Currently, Gyeeta does not expose the cgroup statistics directly, but uses them internaly.
CPU and Memory Limits
Gyeeta shows the Kubernetes CPU Limits and Memory Limits as a percentage of max allowed within the Process State or Process Info statistics. Gyeeta will display whether the process is a CPU Throttled Process or a Memory Limited Process depending on whether Limits are set or not.
Gyeeta will also show the current Process cgroup CPU and Memory Utilization as a percentage value based on the Max CPU / Memory Allowed.
Gyeeta will also report the CPU Delays experienced by the process. If the process is a CPU Throttled process (CPU Limits specified) and if CPU Delays are being experienced by the process, it could imply either CPU throttling because of cgroup limits or overall system CPU contention or the process is taking up all CPU cores.