mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-24 20:24:09 +00:00
Merge pull request #83010 from clarklee92/use-log-functions-of-e2e/autoscaling
Use log functions of core framework on test/e2e/autoscaling
This commit is contained in:
commit
e31f1ba53e
@ -40,7 +40,6 @@ go_library(
|
|||||||
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
|
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
|
||||||
"//test/e2e/common:go_default_library",
|
"//test/e2e/common:go_default_library",
|
||||||
"//test/e2e/framework:go_default_library",
|
"//test/e2e/framework:go_default_library",
|
||||||
"//test/e2e/framework/log:go_default_library",
|
|
||||||
"//test/e2e/framework/node:go_default_library",
|
"//test/e2e/framework/node:go_default_library",
|
||||||
"//test/e2e/framework/pod:go_default_library",
|
"//test/e2e/framework/pod:go_default_library",
|
||||||
"//test/e2e/framework/pv:go_default_library",
|
"//test/e2e/framework/pv:go_default_library",
|
||||||
|
@ -43,7 +43,6 @@ import (
|
|||||||
clientset "k8s.io/client-go/kubernetes"
|
clientset "k8s.io/client-go/kubernetes"
|
||||||
api "k8s.io/kubernetes/pkg/apis/core"
|
api "k8s.io/kubernetes/pkg/apis/core"
|
||||||
"k8s.io/kubernetes/test/e2e/framework"
|
"k8s.io/kubernetes/test/e2e/framework"
|
||||||
e2elog "k8s.io/kubernetes/test/e2e/framework/log"
|
|
||||||
e2enode "k8s.io/kubernetes/test/e2e/framework/node"
|
e2enode "k8s.io/kubernetes/test/e2e/framework/node"
|
||||||
e2epv "k8s.io/kubernetes/test/e2e/framework/pv"
|
e2epv "k8s.io/kubernetes/test/e2e/framework/pv"
|
||||||
"k8s.io/kubernetes/test/e2e/scheduling"
|
"k8s.io/kubernetes/test/e2e/scheduling"
|
||||||
@ -211,7 +210,7 @@ var _ = SIGDescribe("Cluster size autoscaling [Slow]", func() {
|
|||||||
ginkgo.It(fmt.Sprintf("Should scale up GPU pool from 0 [GpuType:%s] [Feature:ClusterSizeAutoscalingGpu]", gpuType), func() {
|
ginkgo.It(fmt.Sprintf("Should scale up GPU pool from 0 [GpuType:%s] [Feature:ClusterSizeAutoscalingGpu]", gpuType), func() {
|
||||||
framework.SkipUnlessProviderIs("gke")
|
framework.SkipUnlessProviderIs("gke")
|
||||||
if gpuType == "" {
|
if gpuType == "" {
|
||||||
e2elog.Failf("TEST_GPU_TYPE not defined")
|
framework.Failf("TEST_GPU_TYPE not defined")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -238,7 +237,7 @@ var _ = SIGDescribe("Cluster size autoscaling [Slow]", func() {
|
|||||||
ginkgo.It(fmt.Sprintf("Should scale up GPU pool from 1 [GpuType:%s] [Feature:ClusterSizeAutoscalingGpu]", gpuType), func() {
|
ginkgo.It(fmt.Sprintf("Should scale up GPU pool from 1 [GpuType:%s] [Feature:ClusterSizeAutoscalingGpu]", gpuType), func() {
|
||||||
framework.SkipUnlessProviderIs("gke")
|
framework.SkipUnlessProviderIs("gke")
|
||||||
if gpuType == "" {
|
if gpuType == "" {
|
||||||
e2elog.Failf("TEST_GPU_TYPE not defined")
|
framework.Failf("TEST_GPU_TYPE not defined")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -268,7 +267,7 @@ var _ = SIGDescribe("Cluster size autoscaling [Slow]", func() {
|
|||||||
ginkgo.It(fmt.Sprintf("Should not scale GPU pool up if pod does not require GPUs [GpuType:%s] [Feature:ClusterSizeAutoscalingGpu]", gpuType), func() {
|
ginkgo.It(fmt.Sprintf("Should not scale GPU pool up if pod does not require GPUs [GpuType:%s] [Feature:ClusterSizeAutoscalingGpu]", gpuType), func() {
|
||||||
framework.SkipUnlessProviderIs("gke")
|
framework.SkipUnlessProviderIs("gke")
|
||||||
if gpuType == "" {
|
if gpuType == "" {
|
||||||
e2elog.Failf("TEST_GPU_TYPE not defined")
|
framework.Failf("TEST_GPU_TYPE not defined")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -297,7 +296,7 @@ var _ = SIGDescribe("Cluster size autoscaling [Slow]", func() {
|
|||||||
ginkgo.It(fmt.Sprintf("Should scale down GPU pool from 1 [GpuType:%s] [Feature:ClusterSizeAutoscalingGpu]", gpuType), func() {
|
ginkgo.It(fmt.Sprintf("Should scale down GPU pool from 1 [GpuType:%s] [Feature:ClusterSizeAutoscalingGpu]", gpuType), func() {
|
||||||
framework.SkipUnlessProviderIs("gke")
|
framework.SkipUnlessProviderIs("gke")
|
||||||
if gpuType == "" {
|
if gpuType == "" {
|
||||||
e2elog.Failf("TEST_GPU_TYPE not defined")
|
framework.Failf("TEST_GPU_TYPE not defined")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -499,7 +498,7 @@ var _ = SIGDescribe("Cluster size autoscaling [Slow]", func() {
|
|||||||
defer func() {
|
defer func() {
|
||||||
errs := e2epv.PVPVCCleanup(c, f.Namespace.Name, pv, pvc)
|
errs := e2epv.PVPVCCleanup(c, f.Namespace.Name, pv, pvc)
|
||||||
if len(errs) > 0 {
|
if len(errs) > 0 {
|
||||||
e2elog.Failf("failed to delete PVC and/or PV. Errors: %v", utilerrors.NewAggregate(errs))
|
framework.Failf("failed to delete PVC and/or PV. Errors: %v", utilerrors.NewAggregate(errs))
|
||||||
}
|
}
|
||||||
pv, pvc = nil, nil
|
pv, pvc = nil, nil
|
||||||
if diskName != "" {
|
if diskName != "" {
|
||||||
@ -921,10 +920,10 @@ var _ = SIGDescribe("Cluster size autoscaling [Slow]", func() {
|
|||||||
defer framework.DeleteRCAndWaitForGC(f.ClientSet, f.Namespace.Name, "memory-reservation")
|
defer framework.DeleteRCAndWaitForGC(f.ClientSet, f.Namespace.Name, "memory-reservation")
|
||||||
time.Sleep(scaleUpTimeout)
|
time.Sleep(scaleUpTimeout)
|
||||||
currentNodes := framework.GetReadySchedulableNodesOrDie(f.ClientSet)
|
currentNodes := framework.GetReadySchedulableNodesOrDie(f.ClientSet)
|
||||||
e2elog.Logf("Currently available nodes: %v, nodes available at the start of test: %v, disabled nodes: %v", len(currentNodes.Items), len(nodes.Items), nodesToBreakCount)
|
framework.Logf("Currently available nodes: %v, nodes available at the start of test: %v, disabled nodes: %v", len(currentNodes.Items), len(nodes.Items), nodesToBreakCount)
|
||||||
framework.ExpectEqual(len(currentNodes.Items), len(nodes.Items)-nodesToBreakCount)
|
framework.ExpectEqual(len(currentNodes.Items), len(nodes.Items)-nodesToBreakCount)
|
||||||
status, err := getClusterwideStatus(c)
|
status, err := getClusterwideStatus(c)
|
||||||
e2elog.Logf("Clusterwide status: %v", status)
|
framework.Logf("Clusterwide status: %v", status)
|
||||||
framework.ExpectNoError(err)
|
framework.ExpectNoError(err)
|
||||||
framework.ExpectEqual(status, "Unhealthy")
|
framework.ExpectEqual(status, "Unhealthy")
|
||||||
}
|
}
|
||||||
@ -1232,7 +1231,7 @@ func getPoolNodes(f *framework.Framework, poolName string) []*v1.Node {
|
|||||||
nodes := make([]*v1.Node, 0, 1)
|
nodes := make([]*v1.Node, 0, 1)
|
||||||
nodeList, err := e2enode.GetReadyNodesIncludingTainted(f.ClientSet)
|
nodeList, err := e2enode.GetReadyNodesIncludingTainted(f.ClientSet)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
e2elog.Logf("Unexpected error occurred: %v", err)
|
framework.Logf("Unexpected error occurred: %v", err)
|
||||||
}
|
}
|
||||||
// TODO: write a wrapper for ExpectNoErrorWithOffset()
|
// TODO: write a wrapper for ExpectNoErrorWithOffset()
|
||||||
framework.ExpectNoErrorWithOffset(0, err)
|
framework.ExpectNoErrorWithOffset(0, err)
|
||||||
@ -1309,7 +1308,7 @@ func reserveMemory(f *framework.Framework, id string, replicas, megabytes int, e
|
|||||||
return framework.DeleteRCAndWaitForGC(f.ClientSet, f.Namespace.Name, id)
|
return framework.DeleteRCAndWaitForGC(f.ClientSet, f.Namespace.Name, id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
e2elog.Failf("Failed to reserve memory within timeout")
|
framework.Failf("Failed to reserve memory within timeout")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1880,7 +1879,7 @@ func addKubeSystemPdbs(f *framework.Framework) (func(), error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if finalErr != nil {
|
if finalErr != nil {
|
||||||
e2elog.Failf("Error during PodDisruptionBudget cleanup: %v", finalErr)
|
framework.Failf("Error during PodDisruptionBudget cleanup: %v", finalErr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,7 +30,6 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/util/wait"
|
"k8s.io/apimachinery/pkg/util/wait"
|
||||||
clientset "k8s.io/client-go/kubernetes"
|
clientset "k8s.io/client-go/kubernetes"
|
||||||
"k8s.io/kubernetes/test/e2e/framework"
|
"k8s.io/kubernetes/test/e2e/framework"
|
||||||
e2elog "k8s.io/kubernetes/test/e2e/framework/log"
|
|
||||||
"k8s.io/kubernetes/test/e2e/instrumentation/monitoring"
|
"k8s.io/kubernetes/test/e2e/instrumentation/monitoring"
|
||||||
|
|
||||||
"github.com/onsi/ginkgo"
|
"github.com/onsi/ginkgo"
|
||||||
@ -240,35 +239,35 @@ func (tc *CustomMetricTestCase) Run() {
|
|||||||
// and uncomment following lines:
|
// and uncomment following lines:
|
||||||
/*
|
/*
|
||||||
ts, err := google.DefaultTokenSource(oauth2.NoContext)
|
ts, err := google.DefaultTokenSource(oauth2.NoContext)
|
||||||
e2elog.Logf("Couldn't get application default credentials, %v", err)
|
framework.Logf("Couldn't get application default credentials, %v", err)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
e2elog.Failf("Error accessing application default credentials, %v", err)
|
framework.Failf("Error accessing application default credentials, %v", err)
|
||||||
}
|
}
|
||||||
client := oauth2.NewClient(oauth2.NoContext, ts)
|
client := oauth2.NewClient(oauth2.NoContext, ts)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
gcmService, err := gcm.New(client)
|
gcmService, err := gcm.New(client)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
e2elog.Failf("Failed to create gcm service, %v", err)
|
framework.Failf("Failed to create gcm service, %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set up a cluster: create a custom metric and set up k8s-sd adapter
|
// Set up a cluster: create a custom metric and set up k8s-sd adapter
|
||||||
err = monitoring.CreateDescriptors(gcmService, projectID)
|
err = monitoring.CreateDescriptors(gcmService, projectID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
e2elog.Failf("Failed to create metric descriptor: %v", err)
|
framework.Failf("Failed to create metric descriptor: %v", err)
|
||||||
}
|
}
|
||||||
defer monitoring.CleanupDescriptors(gcmService, projectID)
|
defer monitoring.CleanupDescriptors(gcmService, projectID)
|
||||||
|
|
||||||
err = monitoring.CreateAdapter(monitoring.AdapterDefault)
|
err = monitoring.CreateAdapter(monitoring.AdapterDefault)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
e2elog.Failf("Failed to set up: %v", err)
|
framework.Failf("Failed to set up: %v", err)
|
||||||
}
|
}
|
||||||
defer monitoring.CleanupAdapter(monitoring.AdapterDefault)
|
defer monitoring.CleanupAdapter(monitoring.AdapterDefault)
|
||||||
|
|
||||||
// Run application that exports the metric
|
// Run application that exports the metric
|
||||||
err = createDeploymentToScale(tc.framework, tc.kubeClient, tc.deployment, tc.pod)
|
err = createDeploymentToScale(tc.framework, tc.kubeClient, tc.deployment, tc.pod)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
e2elog.Failf("Failed to create stackdriver-exporter pod: %v", err)
|
framework.Failf("Failed to create stackdriver-exporter pod: %v", err)
|
||||||
}
|
}
|
||||||
defer cleanupDeploymentsToScale(tc.framework, tc.kubeClient, tc.deployment, tc.pod)
|
defer cleanupDeploymentsToScale(tc.framework, tc.kubeClient, tc.deployment, tc.pod)
|
||||||
|
|
||||||
@ -278,7 +277,7 @@ func (tc *CustomMetricTestCase) Run() {
|
|||||||
// Autoscale the deployment
|
// Autoscale the deployment
|
||||||
_, err = tc.kubeClient.AutoscalingV2beta1().HorizontalPodAutoscalers(tc.framework.Namespace.ObjectMeta.Name).Create(tc.hpa)
|
_, err = tc.kubeClient.AutoscalingV2beta1().HorizontalPodAutoscalers(tc.framework.Namespace.ObjectMeta.Name).Create(tc.hpa)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
e2elog.Failf("Failed to create HPA: %v", err)
|
framework.Failf("Failed to create HPA: %v", err)
|
||||||
}
|
}
|
||||||
defer tc.kubeClient.AutoscalingV2beta1().HorizontalPodAutoscalers(tc.framework.Namespace.ObjectMeta.Name).Delete(tc.hpa.ObjectMeta.Name, &metav1.DeleteOptions{})
|
defer tc.kubeClient.AutoscalingV2beta1().HorizontalPodAutoscalers(tc.framework.Namespace.ObjectMeta.Name).Delete(tc.hpa.ObjectMeta.Name, &metav1.DeleteOptions{})
|
||||||
|
|
||||||
@ -442,13 +441,13 @@ func waitForReplicas(deploymentName, namespace string, cs clientset.Interface, t
|
|||||||
err := wait.PollImmediate(interval, timeout, func() (bool, error) {
|
err := wait.PollImmediate(interval, timeout, func() (bool, error) {
|
||||||
deployment, err := cs.AppsV1().Deployments(namespace).Get(deploymentName, metav1.GetOptions{})
|
deployment, err := cs.AppsV1().Deployments(namespace).Get(deploymentName, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
e2elog.Failf("Failed to get replication controller %s: %v", deployment, err)
|
framework.Failf("Failed to get replication controller %s: %v", deployment, err)
|
||||||
}
|
}
|
||||||
replicas := int(deployment.Status.ReadyReplicas)
|
replicas := int(deployment.Status.ReadyReplicas)
|
||||||
e2elog.Logf("waiting for %d replicas (current: %d)", desiredReplicas, replicas)
|
framework.Logf("waiting for %d replicas (current: %d)", desiredReplicas, replicas)
|
||||||
return replicas == desiredReplicas, nil // Expected number of replicas found. Exit.
|
return replicas == desiredReplicas, nil // Expected number of replicas found. Exit.
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
e2elog.Failf("Timeout waiting %v for %v replicas", timeout, desiredReplicas)
|
framework.Failf("Timeout waiting %v for %v replicas", timeout, desiredReplicas)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,6 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/util/wait"
|
"k8s.io/apimachinery/pkg/util/wait"
|
||||||
clientset "k8s.io/client-go/kubernetes"
|
clientset "k8s.io/client-go/kubernetes"
|
||||||
"k8s.io/kubernetes/test/e2e/framework"
|
"k8s.io/kubernetes/test/e2e/framework"
|
||||||
e2elog "k8s.io/kubernetes/test/e2e/framework/log"
|
|
||||||
e2enode "k8s.io/kubernetes/test/e2e/framework/node"
|
e2enode "k8s.io/kubernetes/test/e2e/framework/node"
|
||||||
e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
|
e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
|
||||||
|
|
||||||
@ -258,7 +257,7 @@ func getScheduableCores(nodes []v1.Node) int64 {
|
|||||||
|
|
||||||
scInt64, scOk := sc.AsInt64()
|
scInt64, scOk := sc.AsInt64()
|
||||||
if !scOk {
|
if !scOk {
|
||||||
e2elog.Logf("Unable to compute integer values of schedulable cores in the cluster")
|
framework.Logf("Unable to compute integer values of schedulable cores in the cluster")
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
return scInt64
|
return scInt64
|
||||||
@ -276,7 +275,7 @@ func deleteDNSScalingConfigMap(c clientset.Interface) error {
|
|||||||
if err := c.CoreV1().ConfigMaps(metav1.NamespaceSystem).Delete(DNSAutoscalerLabelName, nil); err != nil {
|
if err := c.CoreV1().ConfigMaps(metav1.NamespaceSystem).Delete(DNSAutoscalerLabelName, nil); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
e2elog.Logf("DNS autoscaling ConfigMap deleted.")
|
framework.Logf("DNS autoscaling ConfigMap deleted.")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -303,7 +302,7 @@ func updateDNSScalingConfigMap(c clientset.Interface, configMap *v1.ConfigMap) e
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
e2elog.Logf("DNS autoscaling ConfigMap updated.")
|
framework.Logf("DNS autoscaling ConfigMap updated.")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -337,14 +336,14 @@ func deleteDNSAutoscalerPod(c clientset.Interface) error {
|
|||||||
if err := c.CoreV1().Pods(metav1.NamespaceSystem).Delete(podName, nil); err != nil {
|
if err := c.CoreV1().Pods(metav1.NamespaceSystem).Delete(podName, nil); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
e2elog.Logf("DNS autoscaling pod %v deleted.", podName)
|
framework.Logf("DNS autoscaling pod %v deleted.", podName)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func waitForDNSReplicasSatisfied(c clientset.Interface, getExpected getExpectReplicasFunc, timeout time.Duration) (err error) {
|
func waitForDNSReplicasSatisfied(c clientset.Interface, getExpected getExpectReplicasFunc, timeout time.Duration) (err error) {
|
||||||
var current int
|
var current int
|
||||||
var expected int
|
var expected int
|
||||||
e2elog.Logf("Waiting up to %v for kube-dns to reach expected replicas", timeout)
|
framework.Logf("Waiting up to %v for kube-dns to reach expected replicas", timeout)
|
||||||
condition := func() (bool, error) {
|
condition := func() (bool, error) {
|
||||||
current, err = getDNSReplicas(c)
|
current, err = getDNSReplicas(c)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -352,7 +351,7 @@ func waitForDNSReplicasSatisfied(c clientset.Interface, getExpected getExpectRep
|
|||||||
}
|
}
|
||||||
expected = getExpected(c)
|
expected = getExpected(c)
|
||||||
if current != expected {
|
if current != expected {
|
||||||
e2elog.Logf("Replicas not as expected: got %v, expected %v", current, expected)
|
framework.Logf("Replicas not as expected: got %v, expected %v", current, expected)
|
||||||
return false, nil
|
return false, nil
|
||||||
}
|
}
|
||||||
return true, nil
|
return true, nil
|
||||||
@ -361,12 +360,12 @@ func waitForDNSReplicasSatisfied(c clientset.Interface, getExpected getExpectRep
|
|||||||
if err = wait.Poll(2*time.Second, timeout, condition); err != nil {
|
if err = wait.Poll(2*time.Second, timeout, condition); err != nil {
|
||||||
return fmt.Errorf("err waiting for DNS replicas to satisfy %v, got %v: %v", expected, current, err)
|
return fmt.Errorf("err waiting for DNS replicas to satisfy %v, got %v: %v", expected, current, err)
|
||||||
}
|
}
|
||||||
e2elog.Logf("kube-dns reaches expected replicas: %v", expected)
|
framework.Logf("kube-dns reaches expected replicas: %v", expected)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func waitForDNSConfigMapCreated(c clientset.Interface, timeout time.Duration) (configMap *v1.ConfigMap, err error) {
|
func waitForDNSConfigMapCreated(c clientset.Interface, timeout time.Duration) (configMap *v1.ConfigMap, err error) {
|
||||||
e2elog.Logf("Waiting up to %v for DNS autoscaling ConfigMap got re-created", timeout)
|
framework.Logf("Waiting up to %v for DNS autoscaling ConfigMap got re-created", timeout)
|
||||||
condition := func() (bool, error) {
|
condition := func() (bool, error) {
|
||||||
configMap, err = fetchDNSScalingConfigMap(c)
|
configMap, err = fetchDNSScalingConfigMap(c)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
Loading…
Reference in New Issue
Block a user