mirror of
https://github.com/kubeshark/kubeshark.git
synced 2026-05-07 09:47:19 +00:00
* Rename `mizu` to `kubeshark` * Rename `up9inc` to `kubeshark` * Change the logo, title, motto and the main color * Replace the favicon * Update the docs link * Change the copyright text in C files * Remove a comment * Rewrite the `README.md` and update the logo and screenshots used in it * Add a `TODO` * Fix the grammar * Fix the bottom text in the filtering guide * Change the Docker Hub username of cross-compilation intermediate images * Add an install script * Fix `docker/login-action` in the CI * Delete `build-custom-branch.yml` GitHub workflow * Update `README.md` * Remove `install.sh` * Change the motto back to "Traffic viewer for Kubernetes"
96 lines
2.5 KiB
Go
96 lines
2.5 KiB
Go
package kubernetes
|
|
|
|
import (
|
|
"regexp"
|
|
|
|
"github.com/kubeshark/kubeshark/shared"
|
|
core "k8s.io/api/core/v1"
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
)
|
|
|
|
func GetNodeHostToTappedPodsMap(tappedPods []core.Pod) shared.NodeToPodsMap {
|
|
nodeToTappedPodMap := make(shared.NodeToPodsMap)
|
|
for _, pod := range tappedPods {
|
|
minimizedPod := getMinimizedPod(pod)
|
|
|
|
existingList := nodeToTappedPodMap[pod.Spec.NodeName]
|
|
if existingList == nil {
|
|
nodeToTappedPodMap[pod.Spec.NodeName] = []core.Pod{minimizedPod}
|
|
} else {
|
|
nodeToTappedPodMap[pod.Spec.NodeName] = append(nodeToTappedPodMap[pod.Spec.NodeName], minimizedPod)
|
|
}
|
|
}
|
|
return nodeToTappedPodMap
|
|
}
|
|
|
|
func getMinimizedPod(fullPod core.Pod) core.Pod {
|
|
return core.Pod{
|
|
ObjectMeta: metav1.ObjectMeta{
|
|
Name: fullPod.Name,
|
|
Namespace: fullPod.Namespace,
|
|
},
|
|
Status: core.PodStatus{
|
|
PodIP: fullPod.Status.PodIP,
|
|
ContainerStatuses: getMinimizedContainerStatuses(fullPod),
|
|
},
|
|
}
|
|
}
|
|
|
|
func getMinimizedContainerStatuses(fullPod core.Pod) []core.ContainerStatus {
|
|
result := make([]core.ContainerStatus, len(fullPod.Status.ContainerStatuses))
|
|
|
|
for i, container := range fullPod.Status.ContainerStatuses {
|
|
result[i] = core.ContainerStatus{
|
|
ContainerID: container.ContainerID,
|
|
}
|
|
}
|
|
|
|
return result
|
|
}
|
|
|
|
func excludeKubesharkPods(pods []core.Pod) []core.Pod {
|
|
kubesharkPrefixRegex := regexp.MustCompile("^" + KubesharkResourcesPrefix)
|
|
|
|
nonKubesharkPods := make([]core.Pod, 0)
|
|
for _, pod := range pods {
|
|
if !kubesharkPrefixRegex.MatchString(pod.Name) {
|
|
nonKubesharkPods = append(nonKubesharkPods, pod)
|
|
}
|
|
}
|
|
|
|
return nonKubesharkPods
|
|
}
|
|
|
|
func getPodArrayDiff(oldPods []core.Pod, newPods []core.Pod) (added []core.Pod, removed []core.Pod) {
|
|
added = getMissingPods(newPods, oldPods)
|
|
removed = getMissingPods(oldPods, newPods)
|
|
|
|
return added, removed
|
|
}
|
|
|
|
//returns pods present in pods1 array and missing in pods2 array
|
|
func getMissingPods(pods1 []core.Pod, pods2 []core.Pod) []core.Pod {
|
|
missingPods := make([]core.Pod, 0)
|
|
for _, pod1 := range pods1 {
|
|
var found = false
|
|
for _, pod2 := range pods2 {
|
|
if pod1.UID == pod2.UID {
|
|
found = true
|
|
break
|
|
}
|
|
}
|
|
if !found {
|
|
missingPods = append(missingPods, pod1)
|
|
}
|
|
}
|
|
return missingPods
|
|
}
|
|
|
|
func GetPodInfosForPods(pods []core.Pod) []*shared.PodInfo {
|
|
podInfos := make([]*shared.PodInfo, 0)
|
|
for _, pod := range pods {
|
|
podInfos = append(podInfos, &shared.PodInfo{Name: pod.Name, Namespace: pod.Namespace, NodeName: pod.Spec.NodeName})
|
|
}
|
|
return podInfos
|
|
}
|