mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 11:50:44 +00:00
Merge pull request #106471 from jsturtevant/flake-memory-limits
Use client set to get nodes configuration
This commit is contained in:
commit
b657f62826
@ -18,17 +18,21 @@ package windows
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
kubeletconfigv1beta1 "k8s.io/kubelet/config/v1beta1"
|
||||||
|
kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config"
|
||||||
|
kubeletconfigscheme "k8s.io/kubernetes/pkg/kubelet/apis/config/scheme"
|
||||||
|
|
||||||
v1 "k8s.io/api/core/v1"
|
v1 "k8s.io/api/core/v1"
|
||||||
"k8s.io/apimachinery/pkg/api/resource"
|
"k8s.io/apimachinery/pkg/api/resource"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/labels"
|
"k8s.io/apimachinery/pkg/labels"
|
||||||
"k8s.io/apimachinery/pkg/util/uuid"
|
"k8s.io/apimachinery/pkg/util/uuid"
|
||||||
"k8s.io/kubernetes/test/e2e/framework"
|
"k8s.io/kubernetes/test/e2e/framework"
|
||||||
e2ekubelet "k8s.io/kubernetes/test/e2e/framework/kubelet"
|
|
||||||
e2eskipper "k8s.io/kubernetes/test/e2e/framework/skipper"
|
e2eskipper "k8s.io/kubernetes/test/e2e/framework/skipper"
|
||||||
imageutils "k8s.io/kubernetes/test/utils/image"
|
imageutils "k8s.io/kubernetes/test/utils/image"
|
||||||
|
|
||||||
@ -184,12 +188,14 @@ func getNodeMemory(f *framework.Framework) nodeMemory {
|
|||||||
framework.ExpectNotEqual(nodeList.Size(), 0)
|
framework.ExpectNotEqual(nodeList.Size(), 0)
|
||||||
|
|
||||||
ginkgo.By("Getting memory details from node status and kubelet config")
|
ginkgo.By("Getting memory details from node status and kubelet config")
|
||||||
|
|
||||||
status := nodeList.Items[0].Status
|
status := nodeList.Items[0].Status
|
||||||
|
|
||||||
nodeName := nodeList.Items[0].ObjectMeta.Name
|
nodeName := nodeList.Items[0].ObjectMeta.Name
|
||||||
|
|
||||||
kubeletConfig, err := e2ekubelet.GetCurrentKubeletConfig(nodeName, f.Namespace.Name, true)
|
framework.Logf("Getting configuration details for node %s", nodeName)
|
||||||
|
request := f.ClientSet.CoreV1().RESTClient().Get().Resource("nodes").Name(nodeName).SubResource("proxy").Suffix("configz")
|
||||||
|
rawbytes, err := request.DoRaw(context.Background())
|
||||||
|
framework.ExpectNoError(err)
|
||||||
|
kubeletConfig, err := decodeConfigz(rawbytes)
|
||||||
framework.ExpectNoError(err)
|
framework.ExpectNoError(err)
|
||||||
|
|
||||||
systemReserve, err := resource.ParseQuantity(kubeletConfig.SystemReserved["memory"])
|
systemReserve, err := resource.ParseQuantity(kubeletConfig.SystemReserved["memory"])
|
||||||
@ -242,3 +248,32 @@ func getTotalAllocatableMemory(f *framework.Framework) *resource.Quantity {
|
|||||||
|
|
||||||
return totalAllocatable
|
return totalAllocatable
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// modified from https://github.com/kubernetes/kubernetes/blob/master/test/e2e/framework/kubelet/config.go#L110
|
||||||
|
// the proxy version was causing and non proxy used a value that isn't set by e2e
|
||||||
|
func decodeConfigz(contentsBytes []byte) (*kubeletconfig.KubeletConfiguration, error) {
|
||||||
|
// This hack because /configz reports the following structure:
|
||||||
|
// {"kubeletconfig": {the JSON representation of kubeletconfigv1beta1.KubeletConfiguration}}
|
||||||
|
type configzWrapper struct {
|
||||||
|
ComponentConfig kubeletconfigv1beta1.KubeletConfiguration `json:"kubeletconfig"`
|
||||||
|
}
|
||||||
|
|
||||||
|
configz := configzWrapper{}
|
||||||
|
kubeCfg := kubeletconfig.KubeletConfiguration{}
|
||||||
|
|
||||||
|
err := json.Unmarshal(contentsBytes, &configz)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
scheme, _, err := kubeletconfigscheme.NewSchemeAndCodecs()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
err = scheme.Convert(&configz.ComponentConfig, &kubeCfg, nil)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return &kubeCfg, nil
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user