From fd7299ebeb67454b13ed9930bf423e95af25f119 Mon Sep 17 00:00:00 2001 From: calvin Date: Wed, 9 Aug 2023 13:00:57 +0800 Subject: [PATCH 01/16] karmada operator: fixed karmada label beinging overwritten Signed-off-by: calvin --- operator/pkg/controller/karmada/controller.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/operator/pkg/controller/karmada/controller.go b/operator/pkg/controller/karmada/controller.go index 3cab3f43b9fb..22a5a7f24585 100644 --- a/operator/pkg/controller/karmada/controller.go +++ b/operator/pkg/controller/karmada/controller.go @@ -111,7 +111,8 @@ func (ctrl *Controller) ensureKarmada(ctx context.Context, karmada *operatorv1al // registering our finalizer. updated := controllerutil.AddFinalizer(karmada, ControllerFinalizerName) if _, isExist := karmada.Labels[DisableCascadingDeletionLabel]; !isExist { - karmada.SetLabels(labels.Set{DisableCascadingDeletionLabel: "false"}) + labelMap := labels.Merge(karmada.GetLabels(), labels.Set{DisableCascadingDeletionLabel: "false"}) + karmada.SetLabels(labelMap) updated = true } From fe0febbf1fbde0e86cebdf50c686b580d08ac8ce Mon Sep 17 00:00:00 2001 From: zongqingli Date: Wed, 9 Aug 2023 16:47:27 +0800 Subject: [PATCH 02/16] fix federated-hpa plain metric calc Signed-off-by: zach593 --- pkg/controllers/federatedhpa/replica_calculator.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/controllers/federatedhpa/replica_calculator.go b/pkg/controllers/federatedhpa/replica_calculator.go index b0af74fdedf8..020c6bd712ef 100644 --- a/pkg/controllers/federatedhpa/replica_calculator.go +++ b/pkg/controllers/federatedhpa/replica_calculator.go @@ -189,7 +189,7 @@ func (c *ReplicaCalculator) calcPlainMetricReplicas(metrics metricsclient.PodMet for podName := range missingPods { metrics[podName] = metricsclient.PodMetric{Value: targetUsage} } - } else { + } else if usageRatio > 1.0 { // on a scale-up, treat missing pods as using 0% of the resource request for podName := range missingPods { metrics[podName] = metricsclient.PodMetric{Value: 0} From c1d82ba21898f1d4e04aa23f462ea6383b5aed6f Mon Sep 17 00:00:00 2001 From: Vacant2333 Date: Thu, 10 Aug 2023 11:30:33 +0800 Subject: [PATCH 03/16] add e2e coverage analisis Signed-off-by: Vacant2333 --- test/e2e/aggregatedapi_test.go | 30 +++++++++---------- test/e2e/coverage_docs/E2E_coverage.md | 1 - test/e2e/coverage_docs/aggregatedapi_test.md | 8 +++++ .../coverage_docs/cronfederatedhpa_test.md | 8 +++++ test/e2e/coverage_docs/namespace_test.md | 10 +++---- test/e2e/coverage_docs/resource_test.md | 22 +++++++------- .../coverage_docs/seamless_migration_test.md | 7 +++++ .../coverage_docs/spread_by_region_test.md | 6 ++++ test/e2e/cronfederatedhpa_test.go | 4 +-- test/e2e/spread_by_region_test.go | 5 +--- 10 files changed, 63 insertions(+), 38 deletions(-) create mode 100644 test/e2e/coverage_docs/aggregatedapi_test.md create mode 100644 test/e2e/coverage_docs/cronfederatedhpa_test.md create mode 100644 test/e2e/coverage_docs/seamless_migration_test.md create mode 100644 test/e2e/coverage_docs/spread_by_region_test.md diff --git a/test/e2e/aggregatedapi_test.go b/test/e2e/aggregatedapi_test.go index 70501324bf50..3780bbff50d8 100644 --- a/test/e2e/aggregatedapi_test.go +++ b/test/e2e/aggregatedapi_test.go @@ -166,7 +166,7 @@ var _ = framework.SerialDescribe("Aggregated Kubernetes API Endpoint testing", f gomega.Expect(err).ShouldNot(gomega.HaveOccurred()) }) - ginkgo.When("Serviceaccount(tom) access the member1 cluster", func() { + ginkgo.When(fmt.Sprintf("Serviceaccount(tom) access the %s cluster", member1), func() { var clusterClient kubernetes.Interface ginkgo.BeforeEach(func() { @@ -175,10 +175,10 @@ var _ = framework.SerialDescribe("Aggregated Kubernetes API Endpoint testing", f }) ginkgo.BeforeEach(func() { - klog.Infof("Create ServiceAccount(%s) in the cluster(%s)", klog.KObj(tomServiceAccount).String(), member1) + klog.Infof("Create ServiceAccount(%s) in the %s cluster", klog.KObj(tomServiceAccount).String(), member1) framework.CreateServiceAccount(clusterClient, tomServiceAccount) ginkgo.DeferCleanup(func() { - klog.Infof("Delete ServiceAccount(%s) in the cluster(%s)", klog.KObj(tomServiceAccount).String(), member1) + klog.Infof("Delete ServiceAccount(%s) in the %s cluster", klog.KObj(tomServiceAccount).String(), member1) framework.RemoveServiceAccount(clusterClient, tomServiceAccount.Namespace, tomServiceAccount.Name) }) }) @@ -191,8 +191,8 @@ var _ = framework.SerialDescribe("Aggregated Kubernetes API Endpoint testing", f framework.RemoveClusterRoleBinding(clusterClient, tomClusterRoleBindingOnMember.Name) }) - ginkgo.It("tom access the member cluster", func() { - ginkgo.By("access the cluster `/api` path with right", func() { + ginkgo.It("tom access the member1 cluster api with and without right", func() { + ginkgo.By(fmt.Sprintf("access the %s cluster `/api` path with right", member1), func() { gomega.Eventually(func(g gomega.Gomega) (int, error) { code, err := helper.DoRequest(fmt.Sprintf(karmadaHost+clusterProxy+"api", member1), tomToken) g.Expect(err).ShouldNot(gomega.HaveOccurred()) @@ -200,18 +200,18 @@ var _ = framework.SerialDescribe("Aggregated Kubernetes API Endpoint testing", f }, pollTimeout, pollInterval).Should(gomega.Equal(http.StatusOK)) }) - ginkgo.By("access the cluster /api/v1/nodes path without right", func() { + ginkgo.By(fmt.Sprintf("access the %s cluster `/api/v1/nodes` path without right", member1), func() { code, err := helper.DoRequest(fmt.Sprintf(karmadaHost+clusterProxy+"api/v1/nodes", member1), tomToken) gomega.Expect(err).ShouldNot(gomega.HaveOccurred()) gomega.Expect(code).Should(gomega.Equal(http.StatusForbidden)) }) - ginkgo.By("create rbac in the member1 cluster", func() { + ginkgo.By(fmt.Sprintf("create rbac in the %s cluster", member1), func() { framework.CreateClusterRole(clusterClient, tomClusterRoleOnMember) framework.CreateClusterRoleBinding(clusterClient, tomClusterRoleBindingOnMember) }) - ginkgo.By("access the member1 /api/v1/nodes path with right", func() { + ginkgo.By(fmt.Sprintf("access the %s cluster `/api/v1/nodes` path with right", member1), func() { gomega.Eventually(func(g gomega.Gomega) (int, error) { code, err := helper.DoRequest(fmt.Sprintf(karmadaHost+clusterProxy+"api/v1/nodes", member1), tomToken) g.Expect(err).ShouldNot(gomega.HaveOccurred()) @@ -221,9 +221,9 @@ var _ = framework.SerialDescribe("Aggregated Kubernetes API Endpoint testing", f }) }) - ginkgo.When("Serviceaccount(tom) access the member2 cluster", func() { - ginkgo.It("tom access the member cluster without right", func() { - ginkgo.By("access the cluster `/api` path without right", func() { + ginkgo.When(fmt.Sprintf("Serviceaccount(tom) access the %s cluster", member2), func() { + ginkgo.It("tom access the member2 cluster without right", func() { + ginkgo.By(fmt.Sprintf("access the %s cluster `/api` path without right", member2), func() { code, err := helper.DoRequest(fmt.Sprintf(karmadaHost+clusterProxy, member2), tomToken) gomega.Expect(err).ShouldNot(gomega.HaveOccurred()) gomega.Expect(code).Should(gomega.Equal(http.StatusForbidden)) @@ -257,8 +257,8 @@ var _ = framework.SerialDescribe("Aggregated Kubernetes API Endpoint testing", f framework.RemoveClusterRoleBinding(clusterClient, tomClusterRoleBindingOnMember.Name) }) - ginkgo.It("tom access the member cluster", func() { - ginkgo.By("access the cluster `/api` path with right", func() { + ginkgo.It("tom access the specified cluster with/without right", func() { + ginkgo.By(fmt.Sprintf("access the %s cluster `/api` path with right", clusterName), func() { gomega.Eventually(func(g gomega.Gomega) (int, error) { code, err := helper.DoRequest(fmt.Sprintf(karmadaHost+clusterProxy+"api", clusterName), tomToken) g.Expect(err).ShouldNot(gomega.HaveOccurred()) @@ -266,7 +266,7 @@ var _ = framework.SerialDescribe("Aggregated Kubernetes API Endpoint testing", f }, pollTimeout, pollInterval).Should(gomega.Equal(http.StatusOK)) }) - ginkgo.By("access the cluster /api/v1/nodes path without right", func() { + ginkgo.By(fmt.Sprintf("access the %s cluster `/api/v1/nodes` path without right", clusterName), func() { code, err := helper.DoRequest(fmt.Sprintf(karmadaHost+clusterProxy+"api/v1/nodes", clusterName), tomToken) gomega.Expect(err).ShouldNot(gomega.HaveOccurred()) gomega.Expect(code).Should(gomega.Equal(http.StatusForbidden)) @@ -277,7 +277,7 @@ var _ = framework.SerialDescribe("Aggregated Kubernetes API Endpoint testing", f framework.CreateClusterRoleBinding(clusterClient, tomClusterRoleBindingOnMember) }) - ginkgo.By(fmt.Sprintf("access the %s /api/v1/nodes path with right", clusterName), func() { + ginkgo.By(fmt.Sprintf("access the %s cluster `/api/v1/nodes` path with right", clusterName), func() { gomega.Eventually(func(g gomega.Gomega) (int, error) { code, err := helper.DoRequest(fmt.Sprintf(karmadaHost+clusterProxy+"api/v1/nodes", clusterName), tomToken) g.Expect(err).ShouldNot(gomega.HaveOccurred()) diff --git a/test/e2e/coverage_docs/E2E_coverage.md b/test/e2e/coverage_docs/E2E_coverage.md index a7fdabe250f7..27332080fe4b 100644 --- a/test/e2e/coverage_docs/E2E_coverage.md +++ b/test/e2e/coverage_docs/E2E_coverage.md @@ -1,4 +1,3 @@ ### E2E coverage of features Features: https://karmada.io/docs/key-features/features/ - diff --git a/test/e2e/coverage_docs/aggregatedapi_test.md b/test/e2e/coverage_docs/aggregatedapi_test.md new file mode 100644 index 000000000000..c7bde55fcbbf --- /dev/null +++ b/test/e2e/coverage_docs/aggregatedapi_test.md @@ -0,0 +1,8 @@ +### aggregatedapi e2e test coverage analysis + +#### Serviceaccount Access to (member1/member2/specified) cluster api with or without Permissions +| Test Case | E2E Describe Text | Comments | +|-----------------------------------------------------------------------------------------------|-----------------------------------------------------------|----------------------------------------------------------------------------------------------------------------| +| Serviceaccount Access to the member1 cluster's `/api` and `api/v1/nodes` with/without right | tom access the member1 cluster api with and without right | [Aggregated Kubernetes API Endpoint](https://karmada.io/zh/docs/userguide/globalview/aggregated-api-endpoint/) | +| Serviceaccount Access to the member2 cluster's `/api` without right | tom access the member2 cluster without right | | +| Serviceaccount Access to the specified cluster's `/api` and `api/v1/nodes` with/without right | tom access the specified cluster with/without right | | diff --git a/test/e2e/coverage_docs/cronfederatedhpa_test.md b/test/e2e/coverage_docs/cronfederatedhpa_test.md new file mode 100644 index 000000000000..f40359143671 --- /dev/null +++ b/test/e2e/coverage_docs/cronfederatedhpa_test.md @@ -0,0 +1,8 @@ +### cron federated hpa e2e test coverage analysis + +| Test Case | E2E Describe Text | Comments | +|-----------------------------------------------------------------------------------------------------------|---------------------------------------------------------|--------------------------------------------------------------------------------| +| Test the scaling of FederatedHPA by creating a CronFederatedHPA rule | Test scale FederatedHPA | [FederatedHPA](https://karmada.io/zh/docs/userguide/autoscaling/federatedhpa/) | +| Test the scaling of a Deployment by creating a CronFederatedHPA rule | Test scale Deployment | | +| Test the suspend rule in CronFederatedHPA by creating a rule that is supposed to be suspended | Test suspend rule in CronFederatedHPA | | +| Test the unsuspend rule, then suspend it in CronFederatedHPA by manipulating the rule's suspension status | Test unsuspend rule then suspend it in CronFederatedHPA | | diff --git a/test/e2e/coverage_docs/namespace_test.md b/test/e2e/coverage_docs/namespace_test.md index 5e945a234c17..0dc56e97b0e9 100644 --- a/test/e2e/coverage_docs/namespace_test.md +++ b/test/e2e/coverage_docs/namespace_test.md @@ -1,7 +1,7 @@ ### namespace e2e test coverage analysis -| Test Case | E2E Describe Text | Comments | -|------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------| -| Create a namespace that needs to be automatically synchronized across all member clusters. | create a namespace in karmada-apiserver || -| Delete a namespace, and all member clusters need to automatically synchronize the deletion. | delete a namespace from karmada-apiserver || -| When a new cluster joins, the namespaces on the Karmada control plane (excluding reserved namespaces) need to be synchronized to that cluster. | joining new cluster | [Namespace Management](https://karmada.io/docs/next/userguide/bestpractices/namespace-management/#default-namespace-propagation) | +| Test Case | E2E Describe Text | Comments | +|-----------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------| +| Create a namespace that needs to be automatically synchronized across all member clusters | create a namespace in karmada-apiserver || +| Delete a namespace, and all member clusters need to automatically synchronize the deletion | delete a namespace from karmada-apiserver || +| When a new cluster joins, the namespaces on the Karmada control plane (excluding reserved namespaces) need to be synchronized to that cluster | joining new cluster | [Namespace Management](https://karmada.io/docs/next/userguide/bestpractices/namespace-management/#default-namespace-propagation) | diff --git a/test/e2e/coverage_docs/resource_test.md b/test/e2e/coverage_docs/resource_test.md index 568a80453c57..5c69ac8d2323 100644 --- a/test/e2e/coverage_docs/resource_test.md +++ b/test/e2e/coverage_docs/resource_test.md @@ -1,13 +1,13 @@ ### resource e2e test coverage analysis -| Test Case | E2E Describe Text | Comments | -|---------------------------------------------------------------------------------------------------------------------------------|---------------------------------|----------| -| DeploymentStatus collection testing: Test the status collection of Deployment resources. | DeploymentStatus collection | | -| ServiceStatus collection testing: Test the status collection of Service resources. | ServiceStatus collection | | -| NodePort Service collection testing: Test the status collection of NodePort type Service resources. | NodePort Service collection | | -| IngressStatus collection testing: Test the status collection of Ingress resources. | IngressStatus collection | | -| JobStatus collection testing: Test the status collection of Job resources. | JobStatus collection | | -| DaemonSetStatus collection testing: Test the status collection of DaemonSet resources. | DaemonSetStatus collection | | -| StatefulSetStatus collection testing: Test the status collection of StatefulSet resources. | StatefulSetStatus collection | | -| PodDisruptionBudget collection testing: Test the status collection of PodDisruptionBudget resources. | PodDisruptionBudget collection | | -| Workload status synchronization testing: Test the synchronization of workload status when a cluster fails and recovers quickly. | Workload status synchronization | | +| Test Case | E2E Describe Text | Comments | +|--------------------------------------------------------------------------------------------------------------------------------|---------------------------------|----------| +| DeploymentStatus collection testing: Test the status collection of Deployment resources | DeploymentStatus collection | | +| ServiceStatus collection testing: Test the status collection of Service resources | ServiceStatus collection | | +| NodePort Service collection testing: Test the status collection of NodePort type Service resources | NodePort Service collection | | +| IngressStatus collection testing: Test the status collection of Ingress resources | IngressStatus collection | | +| JobStatus collection testing: Test the status collection of Job resources | JobStatus collection | | +| DaemonSetStatus collection testing: Test the status collection of DaemonSet resources | DaemonSetStatus collection | | +| StatefulSetStatus collection testing: Test the status collection of StatefulSet resources | StatefulSetStatus collection | | +| PodDisruptionBudget collection testing: Test the status collection of PodDisruptionBudget resources | PodDisruptionBudget collection | | +| Workload status synchronization testing: Test the synchronization of workload status when a cluster fails and recovers quickly | Workload status synchronization | | diff --git a/test/e2e/coverage_docs/seamless_migration_test.md b/test/e2e/coverage_docs/seamless_migration_test.md new file mode 100644 index 000000000000..333e6e5e64bd --- /dev/null +++ b/test/e2e/coverage_docs/seamless_migration_test.md @@ -0,0 +1,7 @@ +### seamless migration e2e test coverage analysis + +| Test Case | E2E Describe Text | Comments | +|-----------------------------------|------------------------------------------------------|---------------------------------------------------------------------------------------| +| Verify migrate Deployment | Test migrate namespaced resource: Deployment | [Migrate](https://karmada.io/zh/docs/administrator/migration/promote-legacy-workload) | +| Verify migrate ClusterRole | Test migrate cluster resources: ClusterRole | | +| Verify migrate Service (NodePort) | Test migrate namespaced resource: Service (NodePort) | | diff --git a/test/e2e/coverage_docs/spread_by_region_test.md b/test/e2e/coverage_docs/spread_by_region_test.md new file mode 100644 index 000000000000..c69901e8780c --- /dev/null +++ b/test/e2e/coverage_docs/spread_by_region_test.md @@ -0,0 +1,6 @@ +### spread by region e2e test coverage analysis + +| Test Case | E2E Describe Text | Comments | +|---------------------------------------------------------------|-----------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------| +| Verifying the deployment spread across multiple regions | multiple region deployment testing(check whether deployment is scheduled to multiple regions) | [Multi region HA support](https://karmada.io/zh/docs/userguide/scheduling/resource-propagating/#multi-region-ha-support) | +| Updating the propagation policy and verifying its constraints | multiple region deployment testing(update propagation policy to propagate to one region) | | diff --git a/test/e2e/cronfederatedhpa_test.go b/test/e2e/cronfederatedhpa_test.go index 3af2d3f78d28..6819ea3ea079 100644 --- a/test/e2e/cronfederatedhpa_test.go +++ b/test/e2e/cronfederatedhpa_test.go @@ -99,7 +99,7 @@ var _ = ginkgo.Describe("[CronFederatedHPA] CronFederatedHPA testing", func() { framework.RemoveCronFederatedHPA(karmadaClient, testNamespace, cronFHPAName) }) - ginkgo.It("Scale FederatedHPA testing", func() { + ginkgo.It("Test scale FederatedHPA testing", func() { framework.WaitDeploymentReplicasFitWith(framework.ClusterNames(), testNamespace, deploymentName, int(*fhpa.Spec.MinReplicas)) // Create CronFederatedHPA to scale FederatedHPA @@ -111,7 +111,7 @@ var _ = ginkgo.Describe("[CronFederatedHPA] CronFederatedHPA testing", func() { }) // case 2. Scale deployment. - ginkgo.Context("Scale Deployment", func() { + ginkgo.Context("Test scale Deployment", func() { targetReplicas := pointer.Int32(4) ginkgo.BeforeEach(func() { diff --git a/test/e2e/spread_by_region_test.go b/test/e2e/spread_by_region_test.go index 1c82bf104bcf..48b9093ee9f4 100644 --- a/test/e2e/spread_by_region_test.go +++ b/test/e2e/spread_by_region_test.go @@ -132,10 +132,7 @@ var _ = framework.SerialDescribe("spread-by-region testing", func() { targetClusterNames = append(targetClusterNames, cluster.Name) } - if len(targetClusterNames) != updatedRegionGroups { - return false, nil - } - return true, nil + return len(targetClusterNames) == updatedRegionGroups, nil }, pollTimeout, pollInterval).Should(gomega.Equal(true)) }) }) From 4924872f43d88db236c1db462898643ebb28b192 Mon Sep 17 00:00:00 2001 From: Parth Nanda Date: Fri, 11 Aug 2023 16:54:10 +0530 Subject: [PATCH 04/16] changed sigs.k8s.io/cluster-api v1.5.0-rc.0 to v1.5.0 Signed-off-by: Parth Nanda --- go.mod | 2 +- go.sum | 4 ++-- vendor/modules.txt | 4 ++-- .../cluster-api/api/v1beta1/machineset_webhook.go | 6 +++--- .../{internal/labels => util/labels/format}/helpers.go | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) rename vendor/sigs.k8s.io/cluster-api/{internal/labels => util/labels/format}/helpers.go (93%) diff --git a/go.mod b/go.mod index 182a00043024..ba2099556609 100644 --- a/go.mod +++ b/go.mod @@ -47,7 +47,7 @@ require ( k8s.io/metrics v0.27.3 k8s.io/utils v0.0.0-20230406110748-d93618cff8a2 layeh.com/gopher-json v0.0.0-20201124131017-552bb3c4c3bf - sigs.k8s.io/cluster-api v1.5.0-rc.0 + sigs.k8s.io/cluster-api v1.5.0 sigs.k8s.io/controller-runtime v0.15.0 sigs.k8s.io/custom-metrics-apiserver v1.27.0 sigs.k8s.io/kind v0.20.0 diff --git a/go.sum b/go.sum index cfed01ffb3ea..951083e0fbb9 100644 --- a/go.sum +++ b/go.sum @@ -1493,8 +1493,8 @@ rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.7/go.mod h1:PHgbrJT7lCHcxMU+mDHEm+nx46H4zuuHZkDP6icnhu0= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.1.2 h1:trsWhjU5jZrx6UvFu4WzQDrN7Pga4a7Qg+zcfcj64PA= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.1.2/go.mod h1:+qG7ISXqCDVVcyO8hLn12AKVYYUjM7ftlqsqmrhMZE0= -sigs.k8s.io/cluster-api v1.5.0-rc.0 h1:401QD3wyprHTz8KXQwjq3Qci5OdmmCOH/t7bGt62kWo= -sigs.k8s.io/cluster-api v1.5.0-rc.0/go.mod h1:ZSEP01t8oT6104gB4ljsOwwp5uJcI8SWy8IFp2HUvrc= +sigs.k8s.io/cluster-api v1.5.0 h1:pwXvzScbAwnrB7EWHTApzW+VQfrj2OSrWAQDC9+bcbU= +sigs.k8s.io/cluster-api v1.5.0/go.mod h1:ZSEP01t8oT6104gB4ljsOwwp5uJcI8SWy8IFp2HUvrc= sigs.k8s.io/controller-runtime v0.6.1/go.mod h1:XRYBPdbf5XJu9kpS84VJiZ7h/u1hF3gEORz0efEja7A= sigs.k8s.io/controller-runtime v0.15.0 h1:ML+5Adt3qZnMSYxZ7gAverBLNPSMQEibtzAgp0UPojU= sigs.k8s.io/controller-runtime v0.15.0/go.mod h1:7ngYvp1MLT+9GeZ+6lH3LOlcHkp/+tzA/fmHa4iq9kk= diff --git a/vendor/modules.txt b/vendor/modules.txt index 5fa3169266e8..c3162a511aed 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1674,14 +1674,14 @@ sigs.k8s.io/apiserver-network-proxy/konnectivity-client/pkg/client sigs.k8s.io/apiserver-network-proxy/konnectivity-client/pkg/client/metrics sigs.k8s.io/apiserver-network-proxy/konnectivity-client/pkg/common/metrics sigs.k8s.io/apiserver-network-proxy/konnectivity-client/proto/client -# sigs.k8s.io/cluster-api v1.5.0-rc.0 +# sigs.k8s.io/cluster-api v1.5.0 ## explicit; go 1.20 sigs.k8s.io/cluster-api/api/v1beta1 sigs.k8s.io/cluster-api/bootstrap/kubeadm/api/v1beta1 sigs.k8s.io/cluster-api/errors sigs.k8s.io/cluster-api/feature -sigs.k8s.io/cluster-api/internal/labels sigs.k8s.io/cluster-api/util/certs +sigs.k8s.io/cluster-api/util/labels/format sigs.k8s.io/cluster-api/util/secret sigs.k8s.io/cluster-api/util/version # sigs.k8s.io/controller-runtime v0.15.0 diff --git a/vendor/sigs.k8s.io/cluster-api/api/v1beta1/machineset_webhook.go b/vendor/sigs.k8s.io/cluster-api/api/v1beta1/machineset_webhook.go index a800efbab860..560ef68af59c 100644 --- a/vendor/sigs.k8s.io/cluster-api/api/v1beta1/machineset_webhook.go +++ b/vendor/sigs.k8s.io/cluster-api/api/v1beta1/machineset_webhook.go @@ -32,7 +32,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/webhook/admission" "sigs.k8s.io/cluster-api/feature" - capilabels "sigs.k8s.io/cluster-api/internal/labels" + "sigs.k8s.io/cluster-api/util/labels/format" "sigs.k8s.io/cluster-api/util/version" ) @@ -70,8 +70,8 @@ func (m *MachineSet) Default() { if len(m.Spec.Selector.MatchLabels) == 0 && len(m.Spec.Selector.MatchExpressions) == 0 { // Note: MustFormatValue is used here as the value of this label will be a hash if the MachineSet name is longer than 63 characters. - m.Spec.Selector.MatchLabels[MachineSetNameLabel] = capilabels.MustFormatValue(m.Name) - m.Spec.Template.Labels[MachineSetNameLabel] = capilabels.MustFormatValue(m.Name) + m.Spec.Selector.MatchLabels[MachineSetNameLabel] = format.MustFormatValue(m.Name) + m.Spec.Template.Labels[MachineSetNameLabel] = format.MustFormatValue(m.Name) } if m.Spec.Template.Spec.Version != nil && !strings.HasPrefix(*m.Spec.Template.Spec.Version, "v") { diff --git a/vendor/sigs.k8s.io/cluster-api/internal/labels/helpers.go b/vendor/sigs.k8s.io/cluster-api/util/labels/format/helpers.go similarity index 93% rename from vendor/sigs.k8s.io/cluster-api/internal/labels/helpers.go rename to vendor/sigs.k8s.io/cluster-api/util/labels/format/helpers.go index 24f85cbbeadf..500f4225f6a9 100644 --- a/vendor/sigs.k8s.io/cluster-api/internal/labels/helpers.go +++ b/vendor/sigs.k8s.io/cluster-api/util/labels/format/helpers.go @@ -14,8 +14,8 @@ See the License for the specific language governing permissions and limitations under the License. */ -// Package labels contains functions to validate and compare values used in Kubernetes labels. -package labels +// Package format contains functions to format and compare formatted values used in Kubernetes labels. +package format import ( "encoding/base64" From d4eeb9e4500aae9d16919232340e017e2b3b4c68 Mon Sep 17 00:00:00 2001 From: Lan Liang Date: Mon, 14 Aug 2023 08:58:21 +0000 Subject: [PATCH 05/16] update k8s compatibility for CI of cli Signed-off-by: Lan Liang --- .github/workflows/cli.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cli.yaml b/.github/workflows/cli.yaml index 291b3585e005..c21036c356b2 100644 --- a/.github/workflows/cli.yaml +++ b/.github/workflows/cli.yaml @@ -17,7 +17,7 @@ jobs: # Here support the latest three minor releases of Kubernetes, this can be considered to be roughly # the same as the End of Life of the Kubernetes release: https://kubernetes.io/releases/ # Please remember to update the CI Schedule Workflow when we add a new version. - k8s: [ v1.24.2, v1.25.0, v1.26.0 ] + k8s: [ v1.25.0, v1.26.0, v1.27.3 ] steps: - name: checkout code uses: actions/checkout@v3 @@ -31,7 +31,7 @@ jobs: go-version: 1.20.6 - uses: engineerd/setup-kind@v0.5.0 with: - version: "v0.17.0" + version: "v0.20.0" - name: run karmadactl init test run: | export CLUSTER_VERSION=kindest/node:${{ matrix.k8s }} From 0cf3c070aad8990d84019b903dc39e2810c08e51 Mon Sep 17 00:00:00 2001 From: changzhen Date: Mon, 7 Aug 2023 20:08:21 +0800 Subject: [PATCH 06/16] judge with the label on the resources returned by karmadactl get command to determine whether resource is managed by Karmada Signed-off-by: changzhen --- pkg/karmadactl/get/get.go | 118 +++++++++++--------------------------- 1 file changed, 33 insertions(+), 85 deletions(-) diff --git a/pkg/karmadactl/get/get.go b/pkg/karmadactl/get/get.go index 3b4ffd775bc7..7dc746358b19 100644 --- a/pkg/karmadactl/get/get.go +++ b/pkg/karmadactl/get/get.go @@ -17,7 +17,6 @@ import ( "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" metav1beta1 "k8s.io/apimachinery/pkg/apis/meta/v1beta1" "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/runtime/schema" utilerrors "k8s.io/apimachinery/pkg/util/errors" "k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/watch" @@ -26,19 +25,19 @@ import ( "k8s.io/cli-runtime/pkg/resource" "k8s.io/client-go/rest" watchtools "k8s.io/client-go/tools/watch" + "k8s.io/klog/v2" "k8s.io/kubectl/pkg/cmd/get" cmdutil "k8s.io/kubectl/pkg/cmd/util" "k8s.io/kubectl/pkg/util/interrupt" "k8s.io/kubectl/pkg/util/templates" utilpointer "k8s.io/utils/pointer" - workv1alpha2 "github.com/karmada-io/karmada/pkg/apis/work/v1alpha2" karmadaclientset "github.com/karmada-io/karmada/pkg/generated/clientset/versioned" "github.com/karmada-io/karmada/pkg/karmadactl/options" "github.com/karmada-io/karmada/pkg/karmadactl/util" + karmadautil "github.com/karmada-io/karmada/pkg/util" "github.com/karmada-io/karmada/pkg/util/gclient" "github.com/karmada-io/karmada/pkg/util/helper" - "github.com/karmada-io/karmada/pkg/util/names" ) const ( @@ -285,14 +284,6 @@ type WatchObj struct { r *resource.Result } -// RBInfo resourcebinding info and print info -var RBInfo map[string]*OtherPrint - -// OtherPrint applied is used in the display column -type OtherPrint struct { - Applied interface{} -} - // Run performs the get operation. func (g *CommandGetOptions) Run(f util.Factory, cmd *cobra.Command, args []string) error { mux := sync.Mutex{} @@ -311,12 +302,6 @@ func (g *CommandGetOptions) Run(f util.Factory, cmd *cobra.Command, args []strin g.ServerPrint = false } - RBInfo = make(map[string]*OtherPrint) - - if err := g.getRBInKarmada(); err != nil { - return err - } - if len(g.Clusters) == 0 { clusterList, err := g.karmadaClient.ClusterV1alpha1().Clusters().List(context.TODO(), metav1.ListOptions{}) if err != nil { @@ -548,16 +533,25 @@ func (g *CommandGetOptions) reconstructionRow(objs []Obj, table *metav1.Table) ( return nil, nil, err } for rowIdx := range table.Rows { - var tempRow metav1.TableRow - rbKey := getRBKey(mapping.GroupVersionKind, table.Rows[rowIdx], objs[ix].Cluster) + var cells []interface{} + cells = append(cells, table.Rows[rowIdx].Cells[0]) + cells = append(cells, objs[ix].Cluster) + cells = append(cells, table.Rows[rowIdx].Cells[1:]...) + table.Rows[rowIdx].Cells = cells + + unObj := &unstructured.Unstructured{} + err := unObj.UnmarshalJSON(table.Rows[rowIdx].Object.Raw) + if err != nil { + klog.Errorf("Failed to unmarshal unObj, error is: %v", err) + continue + } - tempRow.Cells = append(append(tempRow.Cells, table.Rows[rowIdx].Cells[0], objs[ix].Cluster), table.Rows[rowIdx].Cells[1:]...) - if _, ok := RBInfo[rbKey]; ok { - tempRow.Cells = append(tempRow.Cells, "Y") + v, exist := unObj.GetLabels()[karmadautil.ManagedByKarmadaLabel] + if exist && v == karmadautil.ManagedByKarmadaLabelValue { + table.Rows[rowIdx].Cells = append(table.Rows[rowIdx].Cells, "Y") } else { - tempRow.Cells = append(tempRow.Cells, "N") + table.Rows[rowIdx].Cells = append(table.Rows[rowIdx].Cells, "N") } - table.Rows[rowIdx].Cells = tempRow.Cells } allTableRows = append(allTableRows, table.Rows...) } @@ -578,20 +572,26 @@ func (g *CommandGetOptions) reconstructObj(obj runtime.Object, mapping *meta.RES } for rowIdx := range table.Rows { - var tempRow metav1.TableRow - rbKey := getRBKey(mapping.GroupVersionKind, table.Rows[rowIdx], cluster) - + var cells []interface{} if g.OutputWatchEvents { - tempRow.Cells = append(append(tempRow.Cells, event, table.Rows[rowIdx].Cells[0], cluster), table.Rows[rowIdx].Cells[1:]...) + cells = append(append(cells, event, table.Rows[rowIdx].Cells[0], cluster), table.Rows[rowIdx].Cells[1:]...) } else { - tempRow.Cells = append(append(tempRow.Cells, table.Rows[rowIdx].Cells[0], cluster), table.Rows[rowIdx].Cells[1:]...) + cells = append(append(cells, table.Rows[rowIdx].Cells[0], cluster), table.Rows[rowIdx].Cells[1:]...) } - if _, ok := RBInfo[rbKey]; ok { - tempRow.Cells = append(tempRow.Cells, "Y") + table.Rows[rowIdx].Cells = cells + + unObj := &unstructured.Unstructured{} + err := unObj.UnmarshalJSON(table.Rows[rowIdx].Object.Raw) + if err != nil { + klog.Errorf("Failed to unmarshal unObj, error is: %v", err) + continue + } + v, exist := unObj.GetLabels()[karmadautil.ManagedByKarmadaLabel] + if exist && v == karmadautil.ManagedByKarmadaLabelValue { + table.Rows[rowIdx].Cells = append(table.Rows[rowIdx].Cells, "Y") } else { - tempRow.Cells = append(tempRow.Cells, "N") + table.Rows[rowIdx].Cells = append(table.Rows[rowIdx].Cells, "N") } - table.Rows[rowIdx].Cells = tempRow.Cells } allTableRows = append(allTableRows, table.Rows...) @@ -896,58 +896,6 @@ func (g *CommandGetOptions) transformRequests(req *rest.Request) { }, ",")) } -func (g *CommandGetOptions) getRBInKarmada() error { - var rbList *workv1alpha2.ResourceBindingList - var crbList *workv1alpha2.ClusterResourceBindingList - var err error - - if !g.AllNamespaces { - rbList, err = g.karmadaClient.WorkV1alpha2().ResourceBindings(*options.DefaultConfigFlags.Namespace).List(context.TODO(), metav1.ListOptions{}) - } else { - rbList, err = g.karmadaClient.WorkV1alpha2().ResourceBindings(metav1.NamespaceAll).List(context.TODO(), metav1.ListOptions{}) - } - if err != nil { - return err - } - - if crbList, err = g.karmadaClient.WorkV1alpha2().ClusterResourceBindings().List(context.TODO(), metav1.ListOptions{}); err != nil { - return err - } - - for idx := range rbList.Items { - rbKey := rbList.Items[idx].GetName() - val := rbList.Items[idx].Status.AggregatedStatus - for i := range val { - if val[i].Applied && val[i].ClusterName != "" { - newRBKey := fmt.Sprintf("%s-%s", val[i].ClusterName, rbKey) - RBInfo[newRBKey] = &OtherPrint{ - Applied: val[i].Applied, - } - } - } - } - for idx := range crbList.Items { - rbKey := crbList.Items[idx].GetName() - val := crbList.Items[idx].Status.AggregatedStatus - for i := range val { - if val[i].Applied && val[i].ClusterName != "" { - newRBKey := fmt.Sprintf("%s-%s", val[i].ClusterName, rbKey) - RBInfo[newRBKey] = &OtherPrint{ - Applied: val[i].Applied, - } - } - } - } - return nil -} - -func getRBKey(gvk schema.GroupVersionKind, row metav1.TableRow, cluster string) string { - resourceName, _ := row.Cells[0].(string) - rbKey := names.GenerateBindingName(gvk.Kind, resourceName) - - return fmt.Sprintf("%s-%s", cluster, rbKey) -} - func multipleGVKsRequested(objs []Obj) bool { if len(objs) < 2 { return false From f4963084a2a8c2c389cf762ce8cac3086a200d2d Mon Sep 17 00:00:00 2001 From: "rajan.sharma" Date: Tue, 15 Aug 2023 01:03:25 +0530 Subject: [PATCH 07/16] upgraded alpine base image Signed-off-by: rajan.sharma --- cluster/images/Dockerfile | 2 +- cluster/images/buildx.Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cluster/images/Dockerfile b/cluster/images/Dockerfile index 6d198aceeded..98708d8ea77b 100644 --- a/cluster/images/Dockerfile +++ b/cluster/images/Dockerfile @@ -1,4 +1,4 @@ -FROM alpine:3.18.2 +FROM alpine:3.18.3 ARG BINARY diff --git a/cluster/images/buildx.Dockerfile b/cluster/images/buildx.Dockerfile index a1e1223a5261..1f2f132fc675 100644 --- a/cluster/images/buildx.Dockerfile +++ b/cluster/images/buildx.Dockerfile @@ -1,4 +1,4 @@ -FROM alpine:3.18.2 +FROM alpine:3.18.3 ARG BINARY ARG TARGETPLATFORM From 62482f437cd95ce7fbbbb6be5f628800d2ca3382 Mon Sep 17 00:00:00 2001 From: chaunceyjiang Date: Sun, 28 May 2023 12:13:16 +0800 Subject: [PATCH 08/16] feat: introducing a karmada top command Signed-off-by: chaunceyjiang --- pkg/karmadactl/karmadactl.go | 2 + pkg/karmadactl/top/metrics_printer.go | 207 +++++++++++++ pkg/karmadactl/top/metrics_sorter.go | 73 +++++ pkg/karmadactl/top/top.go | 58 ++++ pkg/karmadactl/top/top_pods.go | 274 ++++++++++++++++++ .../pkg/metricsutil/metrics_printer.go | 236 +++++++++++++++ .../pkg/metricsutil/metrics_resource_adder.go | 45 +++ .../kubectl/pkg/metricsutil/metrics_sorter.go | 130 +++++++++ .../client/clientset/versioned/clientset.go | 133 +++++++++ .../versioned/typed/metrics/v1alpha1/doc.go | 20 ++ .../metrics/v1alpha1/generated_expansion.go | 23 ++ .../typed/metrics/v1alpha1/metrics_client.go | 112 +++++++ .../typed/metrics/v1alpha1/nodemetrics.go | 98 +++++++ .../typed/metrics/v1alpha1/podmetrics.go | 103 +++++++ vendor/modules.txt | 3 + 15 files changed, 1517 insertions(+) create mode 100644 pkg/karmadactl/top/metrics_printer.go create mode 100644 pkg/karmadactl/top/metrics_sorter.go create mode 100644 pkg/karmadactl/top/top.go create mode 100644 pkg/karmadactl/top/top_pods.go create mode 100644 vendor/k8s.io/kubectl/pkg/metricsutil/metrics_printer.go create mode 100644 vendor/k8s.io/kubectl/pkg/metricsutil/metrics_resource_adder.go create mode 100644 vendor/k8s.io/kubectl/pkg/metricsutil/metrics_sorter.go create mode 100644 vendor/k8s.io/metrics/pkg/client/clientset/versioned/clientset.go create mode 100644 vendor/k8s.io/metrics/pkg/client/clientset/versioned/typed/metrics/v1alpha1/doc.go create mode 100644 vendor/k8s.io/metrics/pkg/client/clientset/versioned/typed/metrics/v1alpha1/generated_expansion.go create mode 100644 vendor/k8s.io/metrics/pkg/client/clientset/versioned/typed/metrics/v1alpha1/metrics_client.go create mode 100644 vendor/k8s.io/metrics/pkg/client/clientset/versioned/typed/metrics/v1alpha1/nodemetrics.go create mode 100644 vendor/k8s.io/metrics/pkg/client/clientset/versioned/typed/metrics/v1alpha1/podmetrics.go diff --git a/pkg/karmadactl/karmadactl.go b/pkg/karmadactl/karmadactl.go index cf246a3b2d91..7373ceb11370 100644 --- a/pkg/karmadactl/karmadactl.go +++ b/pkg/karmadactl/karmadactl.go @@ -28,6 +28,7 @@ import ( "github.com/karmada-io/karmada/pkg/karmadactl/register" "github.com/karmada-io/karmada/pkg/karmadactl/taint" "github.com/karmada-io/karmada/pkg/karmadactl/token" + "github.com/karmada-io/karmada/pkg/karmadactl/top" "github.com/karmada-io/karmada/pkg/karmadactl/unjoin" "github.com/karmada-io/karmada/pkg/karmadactl/util" "github.com/karmada-io/karmada/pkg/version/sharedcommand" @@ -106,6 +107,7 @@ func NewKarmadaCtlCommand(cmdUse, parentCommand string) *cobra.Command { Commands: []*cobra.Command{ apply.NewCmdApply(f, parentCommand, ioStreams), promote.NewCmdPromote(f, parentCommand), + top.NewCmdTop(f, parentCommand, ioStreams), }, }, } diff --git a/pkg/karmadactl/top/metrics_printer.go b/pkg/karmadactl/top/metrics_printer.go new file mode 100644 index 000000000000..cd088b0e0882 --- /dev/null +++ b/pkg/karmadactl/top/metrics_printer.go @@ -0,0 +1,207 @@ +package top + +import ( + "fmt" + "io" + "sort" + + corev1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/api/resource" + "k8s.io/cli-runtime/pkg/printers" + "k8s.io/kubectl/pkg/metricsutil" + metricsapi "k8s.io/metrics/pkg/apis/metrics" + + autoscalingv1alpha1 "github.com/karmada-io/karmada/pkg/apis/autoscaling/v1alpha1" +) + +var ( + MeasuredResources = []corev1.ResourceName{ + corev1.ResourceCPU, + corev1.ResourceMemory, + } + PodColumns = []string{"NAME", "CLUSTER", "CPU(cores)", "MEMORY(bytes)"} + NamespaceColumn = "NAMESPACE" + PodColumn = "POD" +) + +type ResourceMetricsInfo struct { + Cluster string + Name string + Metrics corev1.ResourceList + Available corev1.ResourceList +} + +type TopCmdPrinter struct { + out io.Writer +} + +func NewTopCmdPrinter(out io.Writer) *TopCmdPrinter { + return &TopCmdPrinter{out: out} +} + +func (printer *TopCmdPrinter) PrintPodMetrics(metrics []metricsapi.PodMetrics, printContainers, withNamespace, noHeaders bool, sortBy string, sum bool) error { + if len(metrics) == 0 { + return nil + } + w := printers.GetNewTabWriter(printer.out) + defer w.Flush() + + columnWidth := len(PodColumns) + if !noHeaders { + if withNamespace { + printValue(w, NamespaceColumn) + columnWidth++ + } + if printContainers { + printValue(w, PodColumn) + columnWidth++ + } + printColumnNames(w, PodColumns) + } + + sort.Sort(NewPodMetricsSorter(metrics, withNamespace, sortBy)) + + for i := range metrics { + if printContainers { + sort.Sort(metricsutil.NewContainerMetricsSorter(metrics[i].Containers, sortBy)) + printSinglePodContainerMetrics(w, &metrics[i], withNamespace) + } else { + printSinglePodMetrics(w, &metrics[i], withNamespace) + } + } + + if sum { + adder := NewResourceAdder(MeasuredResources) + for i := range metrics { + adder.AddPodMetrics(&metrics[i]) + } + printPodResourcesSum(w, adder.total, columnWidth) + } + + return nil +} + +func printColumnNames(out io.Writer, names []string) { + for _, name := range names { + printValue(out, name) + } + fmt.Fprint(out, "\n") +} + +func printSinglePodMetrics(out io.Writer, m *metricsapi.PodMetrics, withNamespace bool) { + podMetrics := getPodMetrics(m) + if withNamespace { + printValue(out, m.Namespace) + } + printMetricsLine(out, &ResourceMetricsInfo{ + Name: m.Name, + Cluster: m.Annotations[autoscalingv1alpha1.QuerySourceAnnotationKey], + Metrics: podMetrics, + Available: corev1.ResourceList{}, + }) +} + +func printSinglePodContainerMetrics(out io.Writer, m *metricsapi.PodMetrics, withNamespace bool) { + for _, c := range m.Containers { + if withNamespace { + printValue(out, m.Namespace) + } + printValue(out, m.Name) + printMetricsLine(out, &ResourceMetricsInfo{ + Name: c.Name, + Cluster: m.Annotations[autoscalingv1alpha1.QuerySourceAnnotationKey], + Metrics: c.Usage, + Available: corev1.ResourceList{}, + }) + } +} + +func getPodMetrics(m *metricsapi.PodMetrics) corev1.ResourceList { + podMetrics := make(corev1.ResourceList) + for _, res := range MeasuredResources { + podMetrics[res], _ = resource.ParseQuantity("0") + } + + for _, c := range m.Containers { + for _, res := range MeasuredResources { + quantity := podMetrics[res] + quantity.Add(c.Usage[res]) + podMetrics[res] = quantity + } + } + return podMetrics +} + +func printMetricsLine(out io.Writer, metrics *ResourceMetricsInfo) { + printValue(out, metrics.Name) + printValue(out, metrics.Cluster) + printAllResourceUsages(out, metrics) + fmt.Fprint(out, "\n") +} + +func printValue(out io.Writer, value interface{}) { + fmt.Fprintf(out, "%v\t", value) +} + +func printAllResourceUsages(out io.Writer, metrics *ResourceMetricsInfo) { + for _, res := range MeasuredResources { + quantity := metrics.Metrics[res] + printSingleResourceUsage(out, res, quantity) + fmt.Fprint(out, "\t") + if available, found := metrics.Available[res]; found { + fraction := float64(quantity.MilliValue()) / float64(available.MilliValue()) * 100 + fmt.Fprintf(out, "%d%%\t", int64(fraction)) + } + } +} + +func printSingleResourceUsage(out io.Writer, resourceType corev1.ResourceName, quantity resource.Quantity) { + switch resourceType { + case corev1.ResourceCPU: + fmt.Fprintf(out, "%vm", quantity.MilliValue()) + case corev1.ResourceMemory: + fmt.Fprintf(out, "%vMi", quantity.Value()/(1024*1024)) + default: + fmt.Fprintf(out, "%v", quantity.Value()) + } +} + +func printPodResourcesSum(out io.Writer, total corev1.ResourceList, columnWidth int) { + for i := 0; i < columnWidth-2; i++ { + printValue(out, "") + } + printValue(out, "________") + printValue(out, "________") + fmt.Fprintf(out, "\n") + for i := 0; i < columnWidth-4; i++ { + printValue(out, "") + } + printMetricsLine(out, &ResourceMetricsInfo{ + Name: "", + Metrics: total, + Available: corev1.ResourceList{}, + }) +} + +type ResourceAdder struct { + resources []corev1.ResourceName + total corev1.ResourceList +} + +func NewResourceAdder(resources []corev1.ResourceName) *ResourceAdder { + return &ResourceAdder{ + resources: resources, + total: make(corev1.ResourceList), + } +} + +// AddPodMetrics adds each pod metric to the total +func (adder *ResourceAdder) AddPodMetrics(m *metricsapi.PodMetrics) { + for _, c := range m.Containers { + for _, res := range adder.resources { + total := adder.total[res] + total.Add(c.Usage[res]) + adder.total[res] = total + } + } +} diff --git a/pkg/karmadactl/top/metrics_sorter.go b/pkg/karmadactl/top/metrics_sorter.go new file mode 100644 index 000000000000..4437da3632dc --- /dev/null +++ b/pkg/karmadactl/top/metrics_sorter.go @@ -0,0 +1,73 @@ +/* +Copyright 2021 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package top + +import ( + corev1 "k8s.io/api/core/v1" + metricsapi "k8s.io/metrics/pkg/apis/metrics" + + autoscalingv1alpha1 "github.com/karmada-io/karmada/pkg/apis/autoscaling/v1alpha1" +) + +type PodMetricsSorter struct { + metrics []metricsapi.PodMetrics + sortBy string + withNamespace bool + podMetrics []corev1.ResourceList +} + +func (p *PodMetricsSorter) Len() int { + return len(p.metrics) +} + +func (p *PodMetricsSorter) Swap(i, j int) { + p.metrics[i], p.metrics[j] = p.metrics[j], p.metrics[i] + p.podMetrics[i], p.podMetrics[j] = p.podMetrics[j], p.podMetrics[i] +} + +func (p *PodMetricsSorter) Less(i, j int) bool { + switch p.sortBy { + case "cpu": + return p.podMetrics[i].Cpu().MilliValue() > p.podMetrics[j].Cpu().MilliValue() + case "memory": + return p.podMetrics[i].Memory().Value() > p.podMetrics[j].Memory().Value() + default: + if p.metrics[i].Annotations[autoscalingv1alpha1.QuerySourceAnnotationKey] != p.metrics[j].Annotations[autoscalingv1alpha1.QuerySourceAnnotationKey] { + return p.metrics[i].Annotations[autoscalingv1alpha1.QuerySourceAnnotationKey] < p.metrics[j].Annotations[autoscalingv1alpha1.QuerySourceAnnotationKey] + } + if p.withNamespace && p.metrics[i].Namespace != p.metrics[j].Namespace { + return p.metrics[i].Namespace < p.metrics[j].Namespace + } + return p.metrics[i].Name < p.metrics[j].Name + } +} + +func NewPodMetricsSorter(metrics []metricsapi.PodMetrics, withNamespace bool, sortBy string) *PodMetricsSorter { + var podMetrics = make([]corev1.ResourceList, len(metrics)) + if len(sortBy) > 0 { + for i := range metrics { + podMetrics[i] = getPodMetrics(&metrics[i]) + } + } + + return &PodMetricsSorter{ + metrics: metrics, + sortBy: sortBy, + withNamespace: withNamespace, + podMetrics: podMetrics, + } +} diff --git a/pkg/karmadactl/top/top.go b/pkg/karmadactl/top/top.go new file mode 100644 index 000000000000..2d5294627f8c --- /dev/null +++ b/pkg/karmadactl/top/top.go @@ -0,0 +1,58 @@ +package top + +import ( + "github.com/spf13/cobra" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/cli-runtime/pkg/genericclioptions" + cmdutil "k8s.io/kubectl/pkg/cmd/util" + "k8s.io/kubectl/pkg/util/templates" + metricsapi "k8s.io/metrics/pkg/apis/metrics" +) + +const ( + sortByCPU = "cpu" + sortByMemory = "memory" +) + +var ( + supportedMetricsAPIVersions = []string{ + "v1beta1", + } + topLong = templates.LongDesc(` + Display Resource (CPU/Memory) usage of member clusters. + + The top command allows you to see the resource consumption for pods of member clusters. + + This command requires karmada-metrics-adapter to be correctly configured and working on the Karmada control plane and + Metrics Server to be correctly configured and working on the member clusters.`) +) + +func NewCmdTop(f cmdutil.Factory, parentCommand string, streams genericclioptions.IOStreams) *cobra.Command { + cmd := &cobra.Command{ + Use: "top", + Short: "Display resource (CPU/memory) usage of member clusters", + Long: topLong, + Run: cmdutil.DefaultSubCommandRun(streams.ErrOut), + } + + // create subcommands + cmd.AddCommand(NewCmdTopPod(f, parentCommand, nil, streams)) + + return cmd +} + +func SupportedMetricsAPIVersionAvailable(discoveredAPIGroups *metav1.APIGroupList) bool { + for _, discoveredAPIGroup := range discoveredAPIGroups.Groups { + if discoveredAPIGroup.Name != metricsapi.GroupName { + continue + } + for _, version := range discoveredAPIGroup.Versions { + for _, supportedVersion := range supportedMetricsAPIVersions { + if version.Version == supportedVersion { + return true + } + } + } + } + return false +} diff --git a/pkg/karmadactl/top/top_pods.go b/pkg/karmadactl/top/top_pods.go new file mode 100644 index 000000000000..b0c42e5a091b --- /dev/null +++ b/pkg/karmadactl/top/top_pods.go @@ -0,0 +1,274 @@ +package top + +import ( + "context" + "errors" + "fmt" + "time" + + "github.com/spf13/cobra" + corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/fields" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/cli-runtime/pkg/genericclioptions" + "k8s.io/client-go/discovery" + corev1client "k8s.io/client-go/kubernetes/typed/core/v1" + "k8s.io/klog/v2" + cmdutil "k8s.io/kubectl/pkg/cmd/util" + "k8s.io/kubectl/pkg/util/completion" + "k8s.io/kubectl/pkg/util/i18n" + "k8s.io/kubectl/pkg/util/templates" + metricsapi "k8s.io/metrics/pkg/apis/metrics" + metricsv1beta1api "k8s.io/metrics/pkg/apis/metrics/v1beta1" + metricsclientset "k8s.io/metrics/pkg/client/clientset/versioned" + + "github.com/karmada-io/karmada/pkg/karmadactl/options" +) + +type TopPodOptions struct { + ResourceName string + Namespace string + LabelSelector string + FieldSelector string + SortBy string + AllNamespaces bool + PrintContainers bool + NoHeaders bool + UseProtocolBuffers bool + Sum bool + + PodClient corev1client.PodsGetter + Printer *TopCmdPrinter + DiscoveryClient discovery.DiscoveryInterface + MetricsClient metricsclientset.Interface + + genericclioptions.IOStreams +} + +const metricsCreationDelay = 2 * time.Minute + +var ( + topPodLong = templates.LongDesc(i18n.T(` + Display resource (CPU/memory) usage of pods. + + The 'top pod' command allows you to see the resource consumption of pods of member clusters. + + Due to the metrics pipeline delay, they may be unavailable for a few minutes + since pod creation.`)) + + topPodExample = templates.Examples(i18n.T(` + # Show metrics for all pods in the default namespace + %[1]s top pod + + # Show metrics for all pods in the given namespace + %[1]s top pod --namespace=NAMESPACE + + # Show metrics for a given pod and its containers + %[1]s top pod POD_NAME --containers + + # Show metrics for the pods defined by label name=myLabel + %[1]s top pod -l name=myLabel`)) +) + +func NewCmdTopPod(f cmdutil.Factory, parentCommand string, o *TopPodOptions, streams genericclioptions.IOStreams) *cobra.Command { + if o == nil { + o = &TopPodOptions{ + IOStreams: streams, + UseProtocolBuffers: true, + } + } + + cmd := &cobra.Command{ + Use: "pod [NAME | -l label]", + DisableFlagsInUseLine: true, + Short: i18n.T("Display resource (CPU/memory) usage of pods of member clusters"), + Long: topPodLong, + Example: fmt.Sprintf(topPodExample, parentCommand), + ValidArgsFunction: completion.ResourceNameCompletionFunc(f, "pod"), + Run: func(cmd *cobra.Command, args []string) { + cmdutil.CheckErr(o.Complete(f, cmd, args)) + cmdutil.CheckErr(o.Validate()) + cmdutil.CheckErr(o.RunTopPod()) + }, + Aliases: []string{"pods", "po"}, + } + cmdutil.AddLabelSelectorFlagVar(cmd, &o.LabelSelector) + options.AddKubeConfigFlags(cmd.Flags()) + cmd.Flags().StringVarP(options.DefaultConfigFlags.Namespace, "namespace", "n", *options.DefaultConfigFlags.Namespace, "If present, the namespace scope for this CLI request") + cmd.Flags().StringVar(&o.FieldSelector, "field-selector", o.FieldSelector, "Selector (field query) to filter on, supports '=', '==', and '!='.(e.g. --field-selector key1=value1,key2=value2). The server only supports a limited number of field queries per type.") + cmd.Flags().StringVar(&o.SortBy, "sort-by", o.SortBy, "If non-empty, sort pods list using specified field. The field can be either 'cpu' or 'memory'.") + cmd.Flags().BoolVar(&o.PrintContainers, "containers", o.PrintContainers, "If present, print usage of containers within a pod.") + cmd.Flags().BoolVarP(&o.AllNamespaces, "all-namespaces", "A", o.AllNamespaces, "If present, list the requested object(s) across all namespaces. Namespace in current context is ignored even if specified with --namespace.") + cmd.Flags().BoolVar(&o.NoHeaders, "no-headers", o.NoHeaders, "If present, print output without headers.") + cmd.Flags().BoolVar(&o.UseProtocolBuffers, "use-protocol-buffers", o.UseProtocolBuffers, "Enables using protocol-buffers to access Metrics API.") + cmd.Flags().BoolVar(&o.Sum, "sum", o.Sum, "Print the sum of the resource usage") + return cmd +} + +func (o *TopPodOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []string) error { + var err error + if len(args) == 1 { + o.ResourceName = args[0] + } else if len(args) > 1 { + return cmdutil.UsageErrorf(cmd, "%s", cmd.Use) + } + + o.Namespace, _, err = f.ToRawKubeConfigLoader().Namespace() + if err != nil { + return err + } + clientset, err := f.KubernetesClientSet() + if err != nil { + return err + } + + o.DiscoveryClient = clientset.DiscoveryClient + config, err := f.ToRESTConfig() + if err != nil { + return err + } + if o.UseProtocolBuffers { + config.ContentType = "application/vnd.kubernetes.protobuf" + } + o.MetricsClient, err = metricsclientset.NewForConfig(config) + if err != nil { + return err + } + + o.PodClient = clientset.CoreV1() + + o.Printer = NewTopCmdPrinter(o.Out) + return nil +} + +func (o *TopPodOptions) Validate() error { + if len(o.SortBy) > 0 { + if o.SortBy != sortByCPU && o.SortBy != sortByMemory { + return errors.New("--sort-by accepts only cpu or memory") + } + } + if len(o.ResourceName) > 0 && (len(o.LabelSelector) > 0 || len(o.FieldSelector) > 0) { + return errors.New("only one of NAME or selector can be provided") + } + return nil +} + +func (o *TopPodOptions) RunTopPod() error { + var err error + labelSelector := labels.Everything() + if len(o.LabelSelector) > 0 { + labelSelector, err = labels.Parse(o.LabelSelector) + if err != nil { + return err + } + } + fieldSelector := fields.Everything() + if len(o.FieldSelector) > 0 { + fieldSelector, err = fields.ParseSelector(o.FieldSelector) + if err != nil { + return err + } + } + + apiGroups, err := o.DiscoveryClient.ServerGroups() + if err != nil { + return err + } + + metricsAPIAvailable := SupportedMetricsAPIVersionAvailable(apiGroups) + + if !metricsAPIAvailable { + return errors.New("Metrics API not available") + } + metrics, err := getMetricsFromMetricsAPI(o.MetricsClient, o.Namespace, o.ResourceName, o.AllNamespaces, labelSelector, fieldSelector) + if err != nil { + return err + } + + // First we check why no metrics have been received. + if len(metrics.Items) == 0 { + // If the API server query is successful but all the pods are newly created, + // the metrics are probably not ready yet, so we return the error here in the first place. + err := verifyEmptyMetrics(o, labelSelector, fieldSelector) + if err != nil { + return err + } + + // if we had no errors, be sure we output something. + if o.AllNamespaces { + fmt.Fprintln(o.ErrOut, "No resources found") + } else { + fmt.Fprintf(o.ErrOut, "No resources found in %s namespace.\n", o.Namespace) + } + } + + return o.Printer.PrintPodMetrics(metrics.Items, o.PrintContainers, o.AllNamespaces, o.NoHeaders, o.SortBy, o.Sum) +} + +func getMetricsFromMetricsAPI(metricsClient metricsclientset.Interface, namespace, resourceName string, allNamespaces bool, labelSelector labels.Selector, fieldSelector fields.Selector) (*metricsapi.PodMetricsList, error) { + var err error + ns := metav1.NamespaceAll + if !allNamespaces { + ns = namespace + } + versionedMetrics := &metricsv1beta1api.PodMetricsList{} + if resourceName != "" { + m, err := metricsClient.MetricsV1beta1().PodMetricses(ns).Get(context.TODO(), resourceName, metav1.GetOptions{}) + if err != nil { + return nil, err + } + versionedMetrics.Items = []metricsv1beta1api.PodMetrics{*m} + } else { + versionedMetrics, err = metricsClient.MetricsV1beta1().PodMetricses(ns).List(context.TODO(), metav1.ListOptions{LabelSelector: labelSelector.String(), FieldSelector: fieldSelector.String()}) + if err != nil { + return nil, err + } + } + metrics := &metricsapi.PodMetricsList{} + err = metricsv1beta1api.Convert_v1beta1_PodMetricsList_To_metrics_PodMetricsList(versionedMetrics, metrics, nil) + if err != nil { + return nil, err + } + return metrics, nil +} + +func verifyEmptyMetrics(o *TopPodOptions, labelSelector labels.Selector, fieldSelector fields.Selector) error { + if len(o.ResourceName) > 0 { + pod, err := o.PodClient.Pods(o.Namespace).Get(context.TODO(), o.ResourceName, metav1.GetOptions{}) + if err != nil { + return err + } + if err := checkPodAge(pod); err != nil { + return err + } + } else { + pods, err := o.PodClient.Pods(o.Namespace).List(context.TODO(), metav1.ListOptions{ + LabelSelector: labelSelector.String(), + FieldSelector: fieldSelector.String(), + }) + if err != nil { + return err + } + if len(pods.Items) == 0 { + return nil + } + for i := range pods.Items { + if err := checkPodAge(&pods.Items[i]); err != nil { + return err + } + } + } + return errors.New("metrics not available yet") +} + +func checkPodAge(pod *corev1.Pod) error { + age := time.Since(pod.CreationTimestamp.Time) + if age > metricsCreationDelay { + message := fmt.Sprintf("Metrics not available for pod %s/%s, age: %s", pod.Namespace, pod.Name, age.String()) + return errors.New(message) + } else { + klog.V(2).Infof("Metrics not yet available for pod %s/%s, age: %s", pod.Namespace, pod.Name, age.String()) + return nil + } +} diff --git a/vendor/k8s.io/kubectl/pkg/metricsutil/metrics_printer.go b/vendor/k8s.io/kubectl/pkg/metricsutil/metrics_printer.go new file mode 100644 index 000000000000..17091d924910 --- /dev/null +++ b/vendor/k8s.io/kubectl/pkg/metricsutil/metrics_printer.go @@ -0,0 +1,236 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package metricsutil + +import ( + "fmt" + "io" + "sort" + + "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/api/resource" + "k8s.io/cli-runtime/pkg/printers" + metricsapi "k8s.io/metrics/pkg/apis/metrics" +) + +var ( + MeasuredResources = []v1.ResourceName{ + v1.ResourceCPU, + v1.ResourceMemory, + } + NodeColumns = []string{"NAME", "CPU(cores)", "CPU%", "MEMORY(bytes)", "MEMORY%"} + PodColumns = []string{"NAME", "CPU(cores)", "MEMORY(bytes)"} + NamespaceColumn = "NAMESPACE" + PodColumn = "POD" +) + +type ResourceMetricsInfo struct { + Name string + Metrics v1.ResourceList + Available v1.ResourceList +} + +type TopCmdPrinter struct { + out io.Writer +} + +func NewTopCmdPrinter(out io.Writer) *TopCmdPrinter { + return &TopCmdPrinter{out: out} +} + +func (printer *TopCmdPrinter) PrintNodeMetrics(metrics []metricsapi.NodeMetrics, availableResources map[string]v1.ResourceList, noHeaders bool, sortBy string) error { + if len(metrics) == 0 { + return nil + } + w := printers.GetNewTabWriter(printer.out) + defer w.Flush() + + sort.Sort(NewNodeMetricsSorter(metrics, sortBy)) + + if !noHeaders { + printColumnNames(w, NodeColumns) + } + var usage v1.ResourceList + for _, m := range metrics { + m.Usage.DeepCopyInto(&usage) + printMetricsLine(w, &ResourceMetricsInfo{ + Name: m.Name, + Metrics: usage, + Available: availableResources[m.Name], + }) + delete(availableResources, m.Name) + } + + // print lines for nodes of which the metrics is unreachable. + for nodeName := range availableResources { + printMissingMetricsNodeLine(w, nodeName) + } + return nil +} + +func (printer *TopCmdPrinter) PrintPodMetrics(metrics []metricsapi.PodMetrics, printContainers bool, withNamespace bool, noHeaders bool, sortBy string, sum bool) error { + if len(metrics) == 0 { + return nil + } + w := printers.GetNewTabWriter(printer.out) + defer w.Flush() + + columnWidth := len(PodColumns) + if !noHeaders { + if withNamespace { + printValue(w, NamespaceColumn) + columnWidth++ + } + if printContainers { + printValue(w, PodColumn) + columnWidth++ + } + printColumnNames(w, PodColumns) + } + + sort.Sort(NewPodMetricsSorter(metrics, withNamespace, sortBy)) + + for _, m := range metrics { + if printContainers { + sort.Sort(NewContainerMetricsSorter(m.Containers, sortBy)) + printSinglePodContainerMetrics(w, &m, withNamespace) + } else { + printSinglePodMetrics(w, &m, withNamespace) + } + + } + + if sum { + adder := NewResourceAdder(MeasuredResources) + for _, m := range metrics { + adder.AddPodMetrics(&m) + } + printPodResourcesSum(w, adder.total, columnWidth) + } + + return nil +} + +func printColumnNames(out io.Writer, names []string) { + for _, name := range names { + printValue(out, name) + } + fmt.Fprint(out, "\n") +} + +func printSinglePodMetrics(out io.Writer, m *metricsapi.PodMetrics, withNamespace bool) { + podMetrics := getPodMetrics(m) + if withNamespace { + printValue(out, m.Namespace) + } + printMetricsLine(out, &ResourceMetricsInfo{ + Name: m.Name, + Metrics: podMetrics, + Available: v1.ResourceList{}, + }) +} + +func printSinglePodContainerMetrics(out io.Writer, m *metricsapi.PodMetrics, withNamespace bool) { + for _, c := range m.Containers { + if withNamespace { + printValue(out, m.Namespace) + } + printValue(out, m.Name) + printMetricsLine(out, &ResourceMetricsInfo{ + Name: c.Name, + Metrics: c.Usage, + Available: v1.ResourceList{}, + }) + } +} + +func getPodMetrics(m *metricsapi.PodMetrics) v1.ResourceList { + podMetrics := make(v1.ResourceList) + for _, res := range MeasuredResources { + podMetrics[res], _ = resource.ParseQuantity("0") + } + + for _, c := range m.Containers { + for _, res := range MeasuredResources { + quantity := podMetrics[res] + quantity.Add(c.Usage[res]) + podMetrics[res] = quantity + } + } + return podMetrics +} + +func printMetricsLine(out io.Writer, metrics *ResourceMetricsInfo) { + printValue(out, metrics.Name) + printAllResourceUsages(out, metrics) + fmt.Fprint(out, "\n") +} + +func printMissingMetricsNodeLine(out io.Writer, nodeName string) { + printValue(out, nodeName) + unknownMetricsStatus := "" + for i := 0; i < len(MeasuredResources); i++ { + printValue(out, unknownMetricsStatus) + printValue(out, unknownMetricsStatus) + } + fmt.Fprint(out, "\n") +} + +func printValue(out io.Writer, value interface{}) { + fmt.Fprintf(out, "%v\t", value) +} + +func printAllResourceUsages(out io.Writer, metrics *ResourceMetricsInfo) { + for _, res := range MeasuredResources { + quantity := metrics.Metrics[res] + printSingleResourceUsage(out, res, quantity) + fmt.Fprint(out, "\t") + if available, found := metrics.Available[res]; found { + fraction := float64(quantity.MilliValue()) / float64(available.MilliValue()) * 100 + fmt.Fprintf(out, "%d%%\t", int64(fraction)) + } + } +} + +func printSingleResourceUsage(out io.Writer, resourceType v1.ResourceName, quantity resource.Quantity) { + switch resourceType { + case v1.ResourceCPU: + fmt.Fprintf(out, "%vm", quantity.MilliValue()) + case v1.ResourceMemory: + fmt.Fprintf(out, "%vMi", quantity.Value()/(1024*1024)) + default: + fmt.Fprintf(out, "%v", quantity.Value()) + } +} + +func printPodResourcesSum(out io.Writer, total v1.ResourceList, columnWidth int) { + for i := 0; i < columnWidth-2; i++ { + printValue(out, "") + } + printValue(out, "________") + printValue(out, "________") + fmt.Fprintf(out, "\n") + for i := 0; i < columnWidth-3; i++ { + printValue(out, "") + } + printMetricsLine(out, &ResourceMetricsInfo{ + Name: "", + Metrics: total, + Available: v1.ResourceList{}, + }) + +} diff --git a/vendor/k8s.io/kubectl/pkg/metricsutil/metrics_resource_adder.go b/vendor/k8s.io/kubectl/pkg/metricsutil/metrics_resource_adder.go new file mode 100644 index 000000000000..b0ee3f22e0ea --- /dev/null +++ b/vendor/k8s.io/kubectl/pkg/metricsutil/metrics_resource_adder.go @@ -0,0 +1,45 @@ +/* +Copyright 2021 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package metricsutil + +import ( + corev1 "k8s.io/api/core/v1" + metricsapi "k8s.io/metrics/pkg/apis/metrics" +) + +type ResourceAdder struct { + resources []corev1.ResourceName + total corev1.ResourceList +} + +func NewResourceAdder(resources []corev1.ResourceName) *ResourceAdder { + return &ResourceAdder{ + resources: resources, + total: make(corev1.ResourceList), + } +} + +// AddPodMetrics adds each pod metric to the total +func (adder *ResourceAdder) AddPodMetrics(m *metricsapi.PodMetrics) { + for _, c := range m.Containers { + for _, res := range adder.resources { + total := adder.total[res] + total.Add(c.Usage[res]) + adder.total[res] = total + } + } +} diff --git a/vendor/k8s.io/kubectl/pkg/metricsutil/metrics_sorter.go b/vendor/k8s.io/kubectl/pkg/metricsutil/metrics_sorter.go new file mode 100644 index 000000000000..608d35e43729 --- /dev/null +++ b/vendor/k8s.io/kubectl/pkg/metricsutil/metrics_sorter.go @@ -0,0 +1,130 @@ +/* +Copyright 2021 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package metricsutil + +import ( + "k8s.io/api/core/v1" + metricsapi "k8s.io/metrics/pkg/apis/metrics" +) + +type NodeMetricsSorter struct { + metrics []metricsapi.NodeMetrics + sortBy string +} + +func (n *NodeMetricsSorter) Len() int { + return len(n.metrics) +} + +func (n *NodeMetricsSorter) Swap(i, j int) { + n.metrics[i], n.metrics[j] = n.metrics[j], n.metrics[i] +} + +func (n *NodeMetricsSorter) Less(i, j int) bool { + switch n.sortBy { + case "cpu": + return n.metrics[i].Usage.Cpu().MilliValue() > n.metrics[j].Usage.Cpu().MilliValue() + case "memory": + return n.metrics[i].Usage.Memory().Value() > n.metrics[j].Usage.Memory().Value() + default: + return n.metrics[i].Name < n.metrics[j].Name + } +} + +func NewNodeMetricsSorter(metrics []metricsapi.NodeMetrics, sortBy string) *NodeMetricsSorter { + return &NodeMetricsSorter{ + metrics: metrics, + sortBy: sortBy, + } +} + +type PodMetricsSorter struct { + metrics []metricsapi.PodMetrics + sortBy string + withNamespace bool + podMetrics []v1.ResourceList +} + +func (p *PodMetricsSorter) Len() int { + return len(p.metrics) +} + +func (p *PodMetricsSorter) Swap(i, j int) { + p.metrics[i], p.metrics[j] = p.metrics[j], p.metrics[i] + p.podMetrics[i], p.podMetrics[j] = p.podMetrics[j], p.podMetrics[i] +} + +func (p *PodMetricsSorter) Less(i, j int) bool { + switch p.sortBy { + case "cpu": + return p.podMetrics[i].Cpu().MilliValue() > p.podMetrics[j].Cpu().MilliValue() + case "memory": + return p.podMetrics[i].Memory().Value() > p.podMetrics[j].Memory().Value() + default: + if p.withNamespace && p.metrics[i].Namespace != p.metrics[j].Namespace { + return p.metrics[i].Namespace < p.metrics[j].Namespace + } + return p.metrics[i].Name < p.metrics[j].Name + } +} + +func NewPodMetricsSorter(metrics []metricsapi.PodMetrics, withNamespace bool, sortBy string) *PodMetricsSorter { + var podMetrics = make([]v1.ResourceList, len(metrics)) + if len(sortBy) > 0 { + for i, v := range metrics { + podMetrics[i] = getPodMetrics(&v) + } + } + + return &PodMetricsSorter{ + metrics: metrics, + sortBy: sortBy, + withNamespace: withNamespace, + podMetrics: podMetrics, + } +} + +type ContainerMetricsSorter struct { + metrics []metricsapi.ContainerMetrics + sortBy string +} + +func (s *ContainerMetricsSorter) Len() int { + return len(s.metrics) +} + +func (s *ContainerMetricsSorter) Swap(i, j int) { + s.metrics[i], s.metrics[j] = s.metrics[j], s.metrics[i] +} + +func (s *ContainerMetricsSorter) Less(i, j int) bool { + switch s.sortBy { + case "cpu": + return s.metrics[i].Usage.Cpu().MilliValue() > s.metrics[j].Usage.Cpu().MilliValue() + case "memory": + return s.metrics[i].Usage.Memory().Value() > s.metrics[j].Usage.Memory().Value() + default: + return s.metrics[i].Name < s.metrics[j].Name + } +} + +func NewContainerMetricsSorter(metrics []metricsapi.ContainerMetrics, sortBy string) *ContainerMetricsSorter { + return &ContainerMetricsSorter{ + metrics: metrics, + sortBy: sortBy, + } +} diff --git a/vendor/k8s.io/metrics/pkg/client/clientset/versioned/clientset.go b/vendor/k8s.io/metrics/pkg/client/clientset/versioned/clientset.go new file mode 100644 index 000000000000..f5fba6d0c992 --- /dev/null +++ b/vendor/k8s.io/metrics/pkg/client/clientset/versioned/clientset.go @@ -0,0 +1,133 @@ +/* +Copyright The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +package versioned + +import ( + "fmt" + "net/http" + + discovery "k8s.io/client-go/discovery" + rest "k8s.io/client-go/rest" + flowcontrol "k8s.io/client-go/util/flowcontrol" + metricsv1alpha1 "k8s.io/metrics/pkg/client/clientset/versioned/typed/metrics/v1alpha1" + metricsv1beta1 "k8s.io/metrics/pkg/client/clientset/versioned/typed/metrics/v1beta1" +) + +type Interface interface { + Discovery() discovery.DiscoveryInterface + MetricsV1alpha1() metricsv1alpha1.MetricsV1alpha1Interface + MetricsV1beta1() metricsv1beta1.MetricsV1beta1Interface +} + +// Clientset contains the clients for groups. +type Clientset struct { + *discovery.DiscoveryClient + metricsV1alpha1 *metricsv1alpha1.MetricsV1alpha1Client + metricsV1beta1 *metricsv1beta1.MetricsV1beta1Client +} + +// MetricsV1alpha1 retrieves the MetricsV1alpha1Client +func (c *Clientset) MetricsV1alpha1() metricsv1alpha1.MetricsV1alpha1Interface { + return c.metricsV1alpha1 +} + +// MetricsV1beta1 retrieves the MetricsV1beta1Client +func (c *Clientset) MetricsV1beta1() metricsv1beta1.MetricsV1beta1Interface { + return c.metricsV1beta1 +} + +// Discovery retrieves the DiscoveryClient +func (c *Clientset) Discovery() discovery.DiscoveryInterface { + if c == nil { + return nil + } + return c.DiscoveryClient +} + +// NewForConfig creates a new Clientset for the given config. +// If config's RateLimiter is not set and QPS and Burst are acceptable, +// NewForConfig will generate a rate-limiter in configShallowCopy. +// NewForConfig is equivalent to NewForConfigAndClient(c, httpClient), +// where httpClient was generated with rest.HTTPClientFor(c). +func NewForConfig(c *rest.Config) (*Clientset, error) { + configShallowCopy := *c + + if configShallowCopy.UserAgent == "" { + configShallowCopy.UserAgent = rest.DefaultKubernetesUserAgent() + } + + // share the transport between all clients + httpClient, err := rest.HTTPClientFor(&configShallowCopy) + if err != nil { + return nil, err + } + + return NewForConfigAndClient(&configShallowCopy, httpClient) +} + +// NewForConfigAndClient creates a new Clientset for the given config and http client. +// Note the http client provided takes precedence over the configured transport values. +// If config's RateLimiter is not set and QPS and Burst are acceptable, +// NewForConfigAndClient will generate a rate-limiter in configShallowCopy. +func NewForConfigAndClient(c *rest.Config, httpClient *http.Client) (*Clientset, error) { + configShallowCopy := *c + if configShallowCopy.RateLimiter == nil && configShallowCopy.QPS > 0 { + if configShallowCopy.Burst <= 0 { + return nil, fmt.Errorf("burst is required to be greater than 0 when RateLimiter is not set and QPS is set to greater than 0") + } + configShallowCopy.RateLimiter = flowcontrol.NewTokenBucketRateLimiter(configShallowCopy.QPS, configShallowCopy.Burst) + } + + var cs Clientset + var err error + cs.metricsV1alpha1, err = metricsv1alpha1.NewForConfigAndClient(&configShallowCopy, httpClient) + if err != nil { + return nil, err + } + cs.metricsV1beta1, err = metricsv1beta1.NewForConfigAndClient(&configShallowCopy, httpClient) + if err != nil { + return nil, err + } + + cs.DiscoveryClient, err = discovery.NewDiscoveryClientForConfigAndClient(&configShallowCopy, httpClient) + if err != nil { + return nil, err + } + return &cs, nil +} + +// NewForConfigOrDie creates a new Clientset for the given config and +// panics if there is an error in the config. +func NewForConfigOrDie(c *rest.Config) *Clientset { + cs, err := NewForConfig(c) + if err != nil { + panic(err) + } + return cs +} + +// New creates a new Clientset for the given RESTClient. +func New(c rest.Interface) *Clientset { + var cs Clientset + cs.metricsV1alpha1 = metricsv1alpha1.New(c) + cs.metricsV1beta1 = metricsv1beta1.New(c) + + cs.DiscoveryClient = discovery.NewDiscoveryClient(c) + return &cs +} diff --git a/vendor/k8s.io/metrics/pkg/client/clientset/versioned/typed/metrics/v1alpha1/doc.go b/vendor/k8s.io/metrics/pkg/client/clientset/versioned/typed/metrics/v1alpha1/doc.go new file mode 100644 index 000000000000..df51baa4d4c1 --- /dev/null +++ b/vendor/k8s.io/metrics/pkg/client/clientset/versioned/typed/metrics/v1alpha1/doc.go @@ -0,0 +1,20 @@ +/* +Copyright The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +// This package has the automatically generated typed clients. +package v1alpha1 diff --git a/vendor/k8s.io/metrics/pkg/client/clientset/versioned/typed/metrics/v1alpha1/generated_expansion.go b/vendor/k8s.io/metrics/pkg/client/clientset/versioned/typed/metrics/v1alpha1/generated_expansion.go new file mode 100644 index 000000000000..e8fc33bbb140 --- /dev/null +++ b/vendor/k8s.io/metrics/pkg/client/clientset/versioned/typed/metrics/v1alpha1/generated_expansion.go @@ -0,0 +1,23 @@ +/* +Copyright The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +package v1alpha1 + +type NodeMetricsExpansion interface{} + +type PodMetricsExpansion interface{} diff --git a/vendor/k8s.io/metrics/pkg/client/clientset/versioned/typed/metrics/v1alpha1/metrics_client.go b/vendor/k8s.io/metrics/pkg/client/clientset/versioned/typed/metrics/v1alpha1/metrics_client.go new file mode 100644 index 000000000000..efc23042d476 --- /dev/null +++ b/vendor/k8s.io/metrics/pkg/client/clientset/versioned/typed/metrics/v1alpha1/metrics_client.go @@ -0,0 +1,112 @@ +/* +Copyright The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +package v1alpha1 + +import ( + "net/http" + + rest "k8s.io/client-go/rest" + v1alpha1 "k8s.io/metrics/pkg/apis/metrics/v1alpha1" + "k8s.io/metrics/pkg/client/clientset/versioned/scheme" +) + +type MetricsV1alpha1Interface interface { + RESTClient() rest.Interface + NodeMetricsesGetter + PodMetricsesGetter +} + +// MetricsV1alpha1Client is used to interact with features provided by the metrics.k8s.io group. +type MetricsV1alpha1Client struct { + restClient rest.Interface +} + +func (c *MetricsV1alpha1Client) NodeMetricses() NodeMetricsInterface { + return newNodeMetricses(c) +} + +func (c *MetricsV1alpha1Client) PodMetricses(namespace string) PodMetricsInterface { + return newPodMetricses(c, namespace) +} + +// NewForConfig creates a new MetricsV1alpha1Client for the given config. +// NewForConfig is equivalent to NewForConfigAndClient(c, httpClient), +// where httpClient was generated with rest.HTTPClientFor(c). +func NewForConfig(c *rest.Config) (*MetricsV1alpha1Client, error) { + config := *c + if err := setConfigDefaults(&config); err != nil { + return nil, err + } + httpClient, err := rest.HTTPClientFor(&config) + if err != nil { + return nil, err + } + return NewForConfigAndClient(&config, httpClient) +} + +// NewForConfigAndClient creates a new MetricsV1alpha1Client for the given config and http client. +// Note the http client provided takes precedence over the configured transport values. +func NewForConfigAndClient(c *rest.Config, h *http.Client) (*MetricsV1alpha1Client, error) { + config := *c + if err := setConfigDefaults(&config); err != nil { + return nil, err + } + client, err := rest.RESTClientForConfigAndClient(&config, h) + if err != nil { + return nil, err + } + return &MetricsV1alpha1Client{client}, nil +} + +// NewForConfigOrDie creates a new MetricsV1alpha1Client for the given config and +// panics if there is an error in the config. +func NewForConfigOrDie(c *rest.Config) *MetricsV1alpha1Client { + client, err := NewForConfig(c) + if err != nil { + panic(err) + } + return client +} + +// New creates a new MetricsV1alpha1Client for the given RESTClient. +func New(c rest.Interface) *MetricsV1alpha1Client { + return &MetricsV1alpha1Client{c} +} + +func setConfigDefaults(config *rest.Config) error { + gv := v1alpha1.SchemeGroupVersion + config.GroupVersion = &gv + config.APIPath = "/apis" + config.NegotiatedSerializer = scheme.Codecs.WithoutConversion() + + if config.UserAgent == "" { + config.UserAgent = rest.DefaultKubernetesUserAgent() + } + + return nil +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *MetricsV1alpha1Client) RESTClient() rest.Interface { + if c == nil { + return nil + } + return c.restClient +} diff --git a/vendor/k8s.io/metrics/pkg/client/clientset/versioned/typed/metrics/v1alpha1/nodemetrics.go b/vendor/k8s.io/metrics/pkg/client/clientset/versioned/typed/metrics/v1alpha1/nodemetrics.go new file mode 100644 index 000000000000..d79163ddb816 --- /dev/null +++ b/vendor/k8s.io/metrics/pkg/client/clientset/versioned/typed/metrics/v1alpha1/nodemetrics.go @@ -0,0 +1,98 @@ +/* +Copyright The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +package v1alpha1 + +import ( + "context" + "time" + + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + watch "k8s.io/apimachinery/pkg/watch" + rest "k8s.io/client-go/rest" + v1alpha1 "k8s.io/metrics/pkg/apis/metrics/v1alpha1" + scheme "k8s.io/metrics/pkg/client/clientset/versioned/scheme" +) + +// NodeMetricsesGetter has a method to return a NodeMetricsInterface. +// A group's client should implement this interface. +type NodeMetricsesGetter interface { + NodeMetricses() NodeMetricsInterface +} + +// NodeMetricsInterface has methods to work with NodeMetrics resources. +type NodeMetricsInterface interface { + Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha1.NodeMetrics, error) + List(ctx context.Context, opts v1.ListOptions) (*v1alpha1.NodeMetricsList, error) + Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) + NodeMetricsExpansion +} + +// nodeMetricses implements NodeMetricsInterface +type nodeMetricses struct { + client rest.Interface +} + +// newNodeMetricses returns a NodeMetricses +func newNodeMetricses(c *MetricsV1alpha1Client) *nodeMetricses { + return &nodeMetricses{ + client: c.RESTClient(), + } +} + +// Get takes name of the nodeMetrics, and returns the corresponding nodeMetrics object, and an error if there is any. +func (c *nodeMetricses) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.NodeMetrics, err error) { + result = &v1alpha1.NodeMetrics{} + err = c.client.Get(). + Resource("nodes"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(ctx). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of NodeMetricses that match those selectors. +func (c *nodeMetricses) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.NodeMetricsList, err error) { + var timeout time.Duration + if opts.TimeoutSeconds != nil { + timeout = time.Duration(*opts.TimeoutSeconds) * time.Second + } + result = &v1alpha1.NodeMetricsList{} + err = c.client.Get(). + Resource("nodes"). + VersionedParams(&opts, scheme.ParameterCodec). + Timeout(timeout). + Do(ctx). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested nodeMetricses. +func (c *nodeMetricses) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) { + var timeout time.Duration + if opts.TimeoutSeconds != nil { + timeout = time.Duration(*opts.TimeoutSeconds) * time.Second + } + opts.Watch = true + return c.client.Get(). + Resource("nodes"). + VersionedParams(&opts, scheme.ParameterCodec). + Timeout(timeout). + Watch(ctx) +} diff --git a/vendor/k8s.io/metrics/pkg/client/clientset/versioned/typed/metrics/v1alpha1/podmetrics.go b/vendor/k8s.io/metrics/pkg/client/clientset/versioned/typed/metrics/v1alpha1/podmetrics.go new file mode 100644 index 000000000000..49d57c8e887e --- /dev/null +++ b/vendor/k8s.io/metrics/pkg/client/clientset/versioned/typed/metrics/v1alpha1/podmetrics.go @@ -0,0 +1,103 @@ +/* +Copyright The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +package v1alpha1 + +import ( + "context" + "time" + + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + watch "k8s.io/apimachinery/pkg/watch" + rest "k8s.io/client-go/rest" + v1alpha1 "k8s.io/metrics/pkg/apis/metrics/v1alpha1" + scheme "k8s.io/metrics/pkg/client/clientset/versioned/scheme" +) + +// PodMetricsesGetter has a method to return a PodMetricsInterface. +// A group's client should implement this interface. +type PodMetricsesGetter interface { + PodMetricses(namespace string) PodMetricsInterface +} + +// PodMetricsInterface has methods to work with PodMetrics resources. +type PodMetricsInterface interface { + Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha1.PodMetrics, error) + List(ctx context.Context, opts v1.ListOptions) (*v1alpha1.PodMetricsList, error) + Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) + PodMetricsExpansion +} + +// podMetricses implements PodMetricsInterface +type podMetricses struct { + client rest.Interface + ns string +} + +// newPodMetricses returns a PodMetricses +func newPodMetricses(c *MetricsV1alpha1Client, namespace string) *podMetricses { + return &podMetricses{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Get takes name of the podMetrics, and returns the corresponding podMetrics object, and an error if there is any. +func (c *podMetricses) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.PodMetrics, err error) { + result = &v1alpha1.PodMetrics{} + err = c.client.Get(). + Namespace(c.ns). + Resource("pods"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(ctx). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of PodMetricses that match those selectors. +func (c *podMetricses) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.PodMetricsList, err error) { + var timeout time.Duration + if opts.TimeoutSeconds != nil { + timeout = time.Duration(*opts.TimeoutSeconds) * time.Second + } + result = &v1alpha1.PodMetricsList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("pods"). + VersionedParams(&opts, scheme.ParameterCodec). + Timeout(timeout). + Do(ctx). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested podMetricses. +func (c *podMetricses) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) { + var timeout time.Duration + if opts.TimeoutSeconds != nil { + timeout = time.Duration(*opts.TimeoutSeconds) * time.Second + } + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("pods"). + VersionedParams(&opts, scheme.ParameterCodec). + Timeout(timeout). + Watch(ctx) +} diff --git a/vendor/modules.txt b/vendor/modules.txt index c3162a511aed..ea94f5687e8f 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1608,6 +1608,7 @@ k8s.io/kubectl/pkg/cmd/util/editor/crlf k8s.io/kubectl/pkg/cmd/util/podcmd k8s.io/kubectl/pkg/cmd/wait k8s.io/kubectl/pkg/describe +k8s.io/kubectl/pkg/metricsutil k8s.io/kubectl/pkg/polymorphichelpers k8s.io/kubectl/pkg/rawhttp k8s.io/kubectl/pkg/scheme @@ -1644,7 +1645,9 @@ k8s.io/metrics/pkg/apis/metrics k8s.io/metrics/pkg/apis/metrics/install k8s.io/metrics/pkg/apis/metrics/v1alpha1 k8s.io/metrics/pkg/apis/metrics/v1beta1 +k8s.io/metrics/pkg/client/clientset/versioned k8s.io/metrics/pkg/client/clientset/versioned/scheme +k8s.io/metrics/pkg/client/clientset/versioned/typed/metrics/v1alpha1 k8s.io/metrics/pkg/client/clientset/versioned/typed/metrics/v1beta1 k8s.io/metrics/pkg/client/custom_metrics k8s.io/metrics/pkg/client/custom_metrics/scheme From ec6a83c2ad31ceca05c772e3adb054ee14850880 Mon Sep 17 00:00:00 2001 From: vie-serendipity <2733147505@qq.com> Date: Tue, 15 Aug 2023 15:15:14 +0800 Subject: [PATCH 09/16] improve overridemanager test Signed-off-by: vie-serendipity <2733147505@qq.com> --- pkg/util/overridemanager/overridemanager_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/util/overridemanager/overridemanager_test.go b/pkg/util/overridemanager/overridemanager_test.go index 6ba82f184dbe..5403a16da132 100644 --- a/pkg/util/overridemanager/overridemanager_test.go +++ b/pkg/util/overridemanager/overridemanager_test.go @@ -243,7 +243,7 @@ func TestGetMatchingOverridePolicies(t *testing.T) { { Path: "/metadata/annotations", Operator: "add", - Value: apiextensionsv1.JSON{Raw: []byte("foo: bar")}, + Value: apiextensionsv1.JSON{Raw: []byte(`"foo: bar"`)}, }, }, } @@ -252,7 +252,7 @@ func TestGetMatchingOverridePolicies(t *testing.T) { { Path: "/metadata/annotations", Operator: "add", - Value: apiextensionsv1.JSON{Raw: []byte("aaa: bbb")}, + Value: apiextensionsv1.JSON{Raw: []byte(`"aaa: bbb"`)}, }, }, } @@ -261,7 +261,7 @@ func TestGetMatchingOverridePolicies(t *testing.T) { { Path: "/metadata/annotations", Operator: "add", - Value: apiextensionsv1.JSON{Raw: []byte("hello: world")}, + Value: apiextensionsv1.JSON{Raw: []byte(`"hello: world"`)}, }, }, } From 6246da1ac28432b9155c6e81b1adef84a567da4a Mon Sep 17 00:00:00 2001 From: chaosi-zju Date: Thu, 10 Aug 2023 17:36:00 +0800 Subject: [PATCH 10/16] automatic modify image version in helm chart when releasing Signed-off-by: chaosi-zju --- charts/karmada/values.yaml | 24 ++++++++++++++++-------- hack/package-helm-chart.sh | 2 ++ 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/charts/karmada/values.yaml b/charts/karmada/values.yaml index edb086d70f71..5c71847745cc 100644 --- a/charts/karmada/values.yaml +++ b/charts/karmada/values.yaml @@ -11,6 +11,14 @@ global: ## - myRegistryKeySecretName imagePullSecrets: [] +## @karmadaImageVersion the image version of each karmada components +## "latest" is a default value for local installation. +## If update this anchors("&karmadaImageVersion"), also update hack/package-helm-chart.sh. +## See https://yaml.org/spec/1.2/spec.html#id2765878 and +## https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_advanced_syntax.html#yaml-anchors-and-aliases-sharing-variable-values +## for more details about yaml anchors and aliases. +karmadaImageVersion: &karmadaImageVersion latest + ## @param installMode "host" and "agent" are provided ## "host" means install karmada in the control-cluster ## "agent" means install agent client in the member cluster @@ -148,7 +156,7 @@ scheduler: image: registry: docker.io repository: karmada/karmada-scheduler - tag: latest + tag: *karmadaImageVersion ## Specify a imagePullPolicy ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' ## @@ -205,7 +213,7 @@ webhook: image: registry: docker.io repository: karmada/karmada-webhook - tag: latest + tag: *karmadaImageVersion ## Specify a imagePullPolicy ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' ## @@ -262,7 +270,7 @@ controllerManager: image: registry: docker.io repository: karmada/karmada-controller-manager - tag: latest + tag: *karmadaImageVersion ## Specify a imagePullPolicy ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' ## @@ -409,7 +417,7 @@ aggregatedApiServer: image: registry: docker.io repository: karmada/karmada-aggregated-apiserver - tag: latest + tag: *karmadaImageVersion ## Specify a imagePullPolicy ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' ## @@ -636,7 +644,7 @@ agent: image: registry: docker.io repository: karmada/karmada-agent - tag: latest + tag: *karmadaImageVersion ## Specify a imagePullPolicy ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' ## @@ -714,7 +722,7 @@ schedulerEstimator: image: registry: docker.io repository: karmada/karmada-scheduler-estimator - tag: latest + tag: *karmadaImageVersion ## Specify a imagePullPolicy ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' ## @@ -771,7 +779,7 @@ descheduler: image: registry: docker.io repository: karmada/karmada-descheduler - tag: latest + tag: *karmadaImageVersion ## Specify a imagePullPolicy ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' ## @@ -830,7 +838,7 @@ search: image: registry: docker.io repository: karmada/karmada-search - tag: latest + tag: *karmadaImageVersion ## Specify a imagePullPolicy ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' ## diff --git a/hack/package-helm-chart.sh b/hack/package-helm-chart.sh index 04214a180b04..ae3dbe9b2205 100755 --- a/hack/package-helm-chart.sh +++ b/hack/package-helm-chart.sh @@ -28,6 +28,8 @@ fi tar_file="" for chart in ${KARMADA_CHARTS[@]}; do + sed -i'' -e "s/\&karmadaImageVersion .*/\&karmadaImageVersion ${version}/g" ./charts/"${chart}"/values.yaml + tar_file="${chart}-chart-${version}.tgz" echo "Starting to package into a ${chart} chart archive" helm package ./charts/"${chart}" --version "${version}" -d "${output_dir}" -u From 6401c3e28a91e29e4be07ec949552748e363c8b2 Mon Sep 17 00:00:00 2001 From: Tanggui Bian Date: Thu, 17 Aug 2023 10:44:54 +0800 Subject: [PATCH 11/16] add http limit for the Slowloris attack Signed-off-by: Tanggui Bian --- cmd/descheduler/app/descheduler.go | 18 ++++++++++++++++++ .../app/scheduler-estimator.go | 18 ++++++++++++++++++ cmd/scheduler/app/scheduler.go | 18 ++++++++++++++++++ pkg/sharedcli/profileflag/profileflag.go | 18 ++++++++++++++++++ 4 files changed, 72 insertions(+) diff --git a/cmd/descheduler/app/descheduler.go b/cmd/descheduler/app/descheduler.go index d4525a45a551..ed2940942135 100644 --- a/cmd/descheduler/app/descheduler.go +++ b/cmd/descheduler/app/descheduler.go @@ -43,6 +43,22 @@ const ( // References: // - https://en.wikipedia.org/wiki/Slowloris_(computer_security) ReadHeaderTimeout = 32 * time.Second + // WriteTimeout is the amount of time allowed to write the + // request data. + // HTTP timeouts are necessary to expire inactive connections + // and failing to do so might make the application vulnerable + // to attacks like slowloris which work by sending data very slow, + // which in case of no timeout will keep the connection active + // eventually leading to a denial-of-service (DoS) attack. + WriteTimeout = 5 * time.Minute + // ReadTimeout is the amount of time allowed to read + // response data. + // HTTP timeouts are necessary to expire inactive connections + // and failing to do so might make the application vulnerable + // to attacks like slowloris which work by sending data very slow, + // which in case of no timeout will keep the connection active + // eventually leading to a denial-of-service (DoS) attack. + ReadTimeout = 5 * time.Minute ) // NewDeschedulerCommand creates a *cobra.Command object with default parameters @@ -174,6 +190,8 @@ func serveHealthzAndMetrics(address string) { Addr: address, Handler: mux, ReadHeaderTimeout: ReadHeaderTimeout, + WriteTimeout: WriteTimeout, + ReadTimeout: ReadTimeout, } if err := httpServer.ListenAndServe(); err != nil { klog.Errorf("Failed to serve healthz and metrics: %v", err) diff --git a/cmd/scheduler-estimator/app/scheduler-estimator.go b/cmd/scheduler-estimator/app/scheduler-estimator.go index 5e91a705846c..20bbefad6059 100644 --- a/cmd/scheduler-estimator/app/scheduler-estimator.go +++ b/cmd/scheduler-estimator/app/scheduler-estimator.go @@ -40,6 +40,22 @@ const ( // References: // - https://en.wikipedia.org/wiki/Slowloris_(computer_security) ReadHeaderTimeout = 32 * time.Second + // WriteTimeout is the amount of time allowed to write the + // request data. + // HTTP timeouts are necessary to expire inactive connections + // and failing to do so might make the application vulnerable + // to attacks like slowloris which work by sending data very slow, + // which in case of no timeout will keep the connection active + // eventually leading to a denial-of-service (DoS) attack. + WriteTimeout = 5 * time.Minute + // ReadTimeout is the amount of time allowed to read + // response data. + // HTTP timeouts are necessary to expire inactive connections + // and failing to do so might make the application vulnerable + // to attacks like slowloris which work by sending data very slow, + // which in case of no timeout will keep the connection active + // eventually leading to a denial-of-service (DoS) attack. + ReadTimeout = 5 * time.Minute ) // NewSchedulerEstimatorCommand creates a *cobra.Command object with default parameters @@ -121,6 +137,8 @@ func serveHealthzAndMetrics(address string) { Addr: address, Handler: mux, ReadHeaderTimeout: ReadHeaderTimeout, + WriteTimeout: WriteTimeout, + ReadTimeout: ReadTimeout, } if err := httpServer.ListenAndServe(); err != nil { klog.Errorf("Failed to serve healthz and metrics: %v", err) diff --git a/cmd/scheduler/app/scheduler.go b/cmd/scheduler/app/scheduler.go index ed1c8b58dd14..c779ee542906 100644 --- a/cmd/scheduler/app/scheduler.go +++ b/cmd/scheduler/app/scheduler.go @@ -45,6 +45,22 @@ const ( // References: // - https://en.wikipedia.org/wiki/Slowloris_(computer_security) ReadHeaderTimeout = 32 * time.Second + // WriteTimeout is the amount of time allowed to write the + // request data. + // HTTP timeouts are necessary to expire inactive connections + // and failing to do so might make the application vulnerable + // to attacks like slowloris which work by sending data very slow, + // which in case of no timeout will keep the connection active + // eventually leading to a denial-of-service (DoS) attack. + WriteTimeout = 5 * time.Minute + // ReadTimeout is the amount of time allowed to read + // response data. + // HTTP timeouts are necessary to expire inactive connections + // and failing to do so might make the application vulnerable + // to attacks like slowloris which work by sending data very slow, + // which in case of no timeout will keep the connection active + // eventually leading to a denial-of-service (DoS) attack. + ReadTimeout = 5 * time.Minute ) // Option configures a framework.Registry. @@ -207,6 +223,8 @@ func serveHealthzAndMetrics(address string) { Addr: address, Handler: mux, ReadHeaderTimeout: ReadHeaderTimeout, + WriteTimeout: WriteTimeout, + ReadTimeout: ReadTimeout, } if err := httpServer.ListenAndServe(); err != nil { klog.Errorf("Failed to serve healthz and metrics: %v", err) diff --git a/pkg/sharedcli/profileflag/profileflag.go b/pkg/sharedcli/profileflag/profileflag.go index 0a57866b5507..2e30a5fc754f 100644 --- a/pkg/sharedcli/profileflag/profileflag.go +++ b/pkg/sharedcli/profileflag/profileflag.go @@ -21,6 +21,22 @@ const ( // References: // - https://en.wikipedia.org/wiki/Slowloris_(computer_security) ReadHeaderTimeout = 32 * time.Second + // WriteTimeout is the amount of time allowed to write the + // request data. + // HTTP timeouts are necessary to expire inactive connections + // and failing to do so might make the application vulnerable + // to attacks like slowloris which work by sending data very slow, + // which in case of no timeout will keep the connection active + // eventually leading to a denial-of-service (DoS) attack. + WriteTimeout = 5 * time.Minute + // ReadTimeout is the amount of time allowed to read + // response data. + // HTTP timeouts are necessary to expire inactive connections + // and failing to do so might make the application vulnerable + // to attacks like slowloris which work by sending data very slow, + // which in case of no timeout will keep the connection active + // eventually leading to a denial-of-service (DoS) attack. + ReadTimeout = 5 * time.Minute ) // Options are options for pprof. @@ -57,6 +73,8 @@ func ListenAndServe(opts Options) { Addr: opts.ProfilingBindAddress, Handler: mux, ReadHeaderTimeout: ReadHeaderTimeout, + WriteTimeout: WriteTimeout, + ReadTimeout: ReadTimeout, } if err := httpServer.ListenAndServe(); err != nil { klog.Errorf("Failed to enable profiling: %v", err) From bd0c511753a9f20a474af1777695483bf3e80d27 Mon Sep 17 00:00:00 2001 From: Eliran Bivas Date: Thu, 17 Aug 2023 06:46:56 +0300 Subject: [PATCH 12/16] proposal for native service discovery (#3694) Signed-off-by: Eliran Bivas Co-authored-by: Eliran Bivas --- docs/proposals/service-discovery/README.md | 194 +++++++++++++++++++++ 1 file changed, 194 insertions(+) create mode 100644 docs/proposals/service-discovery/README.md diff --git a/docs/proposals/service-discovery/README.md b/docs/proposals/service-discovery/README.md new file mode 100644 index 000000000000..e51436c732c3 --- /dev/null +++ b/docs/proposals/service-discovery/README.md @@ -0,0 +1,194 @@ +--- +title: Service discovery with native Kubernetes naming and resolution +authors: +- "@bivas" +reviewers: +- "@XiShanYongYe-Chang" +- TBD +approvers: +- "@robot" +- TBD + +creation-date: 2023-06-22 + +--- + +# Service discovery with native Kubernetes naming and resolution + +## Summary + +With the current `ServiceImportController` when a `ServiceImport` object is reconciled, the derived service is prefixed with `derived-` prefix. + +## Motivation + + +Having a `derived-` prefix for `Service` resources seems counterintuitive when thinking about service discovery: +- Assuming the pod is exported as the service `foo` +- Another pod that wishes to access it on the same cluster will simply call `foo` and Kubernetes will bind to the correct one +- If that pod is scheduled to another cluster, the original service discovery will fail as there's no service by the name `foo` +- To find the original pod, the other pod is required to know it is in another cluster and use `derived-foo` to work properly + +### Goals + +- Remove the "derived-" prefix from the service +- User-friendly and native service discovery + +### Non-Goals + +- Multi cluster connectivity + +## Proposal + +Following are flows to support the service import proposal: + +1. `Deployment` and `Service` are created on cluster member1 and the `Service` imported to cluster member2 using `ServiceImport` (described below as [user story 1](#story-1)) +2. `Deployment` and `Service` are created on cluster member1 and both propagated to cluster member2. `Service` from cluster member1 is imported to cluster member2 using `ServiceImport` (described below as [user story 2](#story-2)) + +The proposal for this flow is what can be referred to as local-and-remote service discovery. The options could be: + +1. **Local** only - In case there's a local service by the name `foo` Karmada never attempts to import the remote service and doesn't create an `EndPointSlice` +2. **Local** and **Remote** - Users accessing the `foo` service will reach either member1 or member2 +3. **Remote** only - in case there's a local service by the name `foo` Karmada will remove the local `EndPointSlice` and will create an `EndPointSlice` pointing to the other cluster (e.g. instead of resolving member2 cluster is will reach member1) + +This proposal suggests to distinguish the services type by the extending the API `multicluster.x-k8s.io/v1alpha1` of `ServiceImport` with Karmada specific annotations: +```yaml +apiVersion: multicluster.x-k8s.io/v1alpha1 +kind: ServiceImport +metadata: + name: serve + namespace: demo + annotations: + discovery.karmada.io/strategy: LocalAndRemote +spec: + type: ClusterSetIP + ports: + - port: 80 + protocol: TCP +``` + +The default could be `LocalAndRemote`. + + +### User Stories (Optional) + + + +#### Story 1 + +As a Kubernetes cluster member, +I want to access a service from another cluster member, +So that I can communicate with the service using its original name. + +**Background**: The Service named `foo` is created on cluster member1 and imported to cluster member2 using `ServiceImport`. + +**Scenario**: + +1. Given that the `Service` named `foo` exists on cluster member1 +2. And the `ServiceImport` resource is created on cluster member2, specifying the import of `foo` +3. When I try to access the service inside member2 +4. Then I can access the service using the name `foo.myspace.svc.cluster.local` + +#### Story 2 + +As a Kubernetes cluster member, +I want to handle conflicts when importing a service from another cluster member, +So that I can access the service without collisions and maintain high availability. + +**Background**: The Service named `foo` is created on cluster member1 and has a conflict when attempting to import to cluster member2. +Conflict refers to the situation where there is already a `Service` `foo` existing on the cluster (e.g. propagated with `PropagationPolicy`), but we still need to import `Service` `foo` from other clusters onto this cluster (using `ServiceImport`) + +**Scenario**: + +1. Given that the `Service` named `foo` exists on cluster member1 +2. And there is already a conflicting `Service` named foo on cluster member2 +3. When I attempt to access the service in cluster member2 using `foo.myspace.svc.cluster.local` +4. Then the requests round-robin between the local `foo` service and the imported `foo` service (member1 and member2) + +### Notes/Constraints/Caveats (Optional) + + + +### Risks and Mitigations + + +Adding a `Service` that resolve to a remote cluster will add a network latency of communication between clusters. + +## Design Details + + + +To achieve service discovery with native Kubernetes naming and resolution, the following design details should be considered: + +1. Service Import Controller Changes: The Service Import Controller needs to be updated to remove the `"derived-"` prefix from the derived service. This ensures that the imported service retains its original name when accessed within the importing cluster. +2. Local-Only Service Discovery: To support local-only service discovery, Karmada should be enhanced to check if there is a local service with the same name as the imported service. If a local service exists, the remote service import should be skipped, and no `EndPointSlice` should be created for the remote service. This allows local services to be accessed directly without going through the remote service. +3. Local and Remote Service Discovery: When a service is imported from another cluster, both local and remote services should be accessible. Users accessing the service should be able to reach either the local or remote member based on their location and cluster routing. This enables high availability and load balancing between the local and remote instances of the service. +4. Remote-Only Service Discovery: In cases where there is local service with the same name as the imported service, Karmada should remove the local `EndPointSlice` and create an `EndPointSlice` pointing to the remote cluster. This allows users to access the service through the imported `EndPointSlice`, effectively reaching the remote cluster. + +Implementing the service registration flow, the following should be considered: +1. Given that the `Service` named `foo` exists on cluster member1 +2. The `ServiceImport` resource is created on cluster member2, specifying the import of `foo` +3. A `Service` resource is created in cluster member2, but does not prefix the name with `derived-` + 1. If there is already an existing `Service` named `foo` on cluster member2 + 2. The `EndPointSlice` associated with the local `foo` service points to the local `Deployment` running on member2 + 3. The controller will ignore the conflict of existing `Service` and will not create a new `Service` object +4. And the imported `EndPointSlice` is created, pointing to the remote `Deployment` running on member1 +5. And the `EndPointSlice` associated with the imported service is prefixed with `import-` +6. Then the requests round-robin between the local `foo` service and the imported `foo` service (member1 and member2) + +### Test Plan + + + +## Alternatives + + + +One alternative approach to service discovery with native Kubernetes naming and resolution is to rely on external DNS-based service discovery mechanisms. However, this approach may require additional configuration and management overhead, as well as potential inconsistencies between different DNS implementations. By leveraging the native Kubernetes naming and resolution capabilities, the proposed solution simplifies service discovery and provides a consistent user experience. + +Another alternative approach could be to enforce a strict naming convention for imported services, where a specific prefix or suffix is added to the service name to differentiate it from local services. However, this approach may introduce complexity for users and require manual handling of naming collisions. The proposed solution aims to provide a more user-friendly experience by removing the "derived-" prefix and allowing services to be accessed using their original names. + + \ No newline at end of file From a6de63740baba145c49e90d565728f56cba2b360 Mon Sep 17 00:00:00 2001 From: Vacant2333 Date: Tue, 15 Aug 2023 16:40:02 +0800 Subject: [PATCH 13/16] update operator default timeout Signed-off-by: Vacant2333 --- .../webhookconfiguration/webhookconfiguration.go | 4 ++-- operator/pkg/tasks/init/apiserver.go | 7 +++---- operator/pkg/tasks/init/etcd.go | 5 ++--- operator/pkg/tasks/init/karmadaresource.go | 5 ++--- operator/pkg/tasks/init/wait.go | 12 ++++++++---- operator/pkg/util/apiclient/idempotency.go | 16 ++++++++-------- operator/pkg/util/endpoint.go | 3 +-- 7 files changed, 26 insertions(+), 26 deletions(-) diff --git a/operator/pkg/karmadaresource/webhookconfiguration/webhookconfiguration.go b/operator/pkg/karmadaresource/webhookconfiguration/webhookconfiguration.go index 8a0f797ac985..6345819e9dee 100644 --- a/operator/pkg/karmadaresource/webhookconfiguration/webhookconfiguration.go +++ b/operator/pkg/karmadaresource/webhookconfiguration/webhookconfiguration.go @@ -12,8 +12,8 @@ import ( "github.com/karmada-io/karmada/operator/pkg/util/apiclient" ) -// EnsureWebhookconfiguration creates karmada webhook mutatingWebhookConfiguration and validatingWebhookConfiguration -func EnsureWebhookconfiguration(client clientset.Interface, namespace, name, caBundle string) error { +// EnsureWebhookConfiguration creates karmada webhook mutatingWebhookConfiguration and validatingWebhookConfiguration +func EnsureWebhookConfiguration(client clientset.Interface, namespace, name, caBundle string) error { if err := mutatingWebhookConfiguration(client, namespace, name, caBundle); err != nil { return err } diff --git a/operator/pkg/tasks/init/apiserver.go b/operator/pkg/tasks/init/apiserver.go index 69dbebfa1783..05d77fb9e20b 100644 --- a/operator/pkg/tasks/init/apiserver.go +++ b/operator/pkg/tasks/init/apiserver.go @@ -3,7 +3,6 @@ package tasks import ( "errors" "fmt" - "time" "k8s.io/klog/v2" @@ -104,7 +103,7 @@ func runWaitKarmadaAPIServer(r workflow.RunData) error { return errors.New("wait-KarmadaAPIServer task invoked with an invalid data struct") } - waiter := apiclient.NewKarmadaWaiter(data.ControlplaneConfig(), data.RemoteClient(), time.Second*30) + waiter := apiclient.NewKarmadaWaiter(data.ControlplaneConfig(), data.RemoteClient(), componentBeReadyTimeout) err := waiter.WaitForSomePods(karmadaApiserverLabels.String(), data.GetNamespace(), 1) if err != nil { @@ -147,11 +146,11 @@ func runWaitKarmadaAggregatedAPIServer(r workflow.RunData) error { return errors.New("wait-KarmadaAggregatedAPIServer task invoked with an invalid data struct") } - waiter := apiclient.NewKarmadaWaiter(data.ControlplaneConfig(), data.RemoteClient(), time.Second*30) + waiter := apiclient.NewKarmadaWaiter(data.ControlplaneConfig(), data.RemoteClient(), componentBeReadyTimeout) err := waiter.WaitForSomePods(karmadaAggregatedAPIServerLabels.String(), data.GetNamespace(), 1) if err != nil { - return fmt.Errorf("waiting for karmada-apiserver to ready timeout, err: %w", err) + return fmt.Errorf("waiting for karmada-aggregated-apiserver to ready timeout, err: %w", err) } klog.V(2).InfoS("[wait-KarmadaAggregatedAPIServer] the karmada-aggregated-apiserver is ready", "karmada", klog.KObj(data)) diff --git a/operator/pkg/tasks/init/etcd.go b/operator/pkg/tasks/init/etcd.go index 39346decf35c..59ce284ec3af 100644 --- a/operator/pkg/tasks/init/etcd.go +++ b/operator/pkg/tasks/init/etcd.go @@ -3,7 +3,6 @@ package tasks import ( "errors" "fmt" - "time" "k8s.io/klog/v2" @@ -72,12 +71,12 @@ func runWaitEtcd(r workflow.RunData) error { return errors.New("wait-etcd task invoked with an invalid data struct") } - waiter := apiclient.NewKarmadaWaiter(data.ControlplaneConfig(), data.RemoteClient(), time.Second*30) + waiter := apiclient.NewKarmadaWaiter(data.ControlplaneConfig(), data.RemoteClient(), componentBeReadyTimeout) // wait etcd, karmada apiserver and aggregated apiserver to ready // as long as a replica of pod is ready, we consider the service available. if err := waiter.WaitForSomePods(etcdLabels.String(), data.GetNamespace(), 1); err != nil { - return fmt.Errorf("waiting for etcd to ready timeout, err: %w", err) + return fmt.Errorf("waiting for karmada-etcd to ready timeout, err: %w", err) } klog.V(2).InfoS("[wait-etcd] the etcd pods is ready", "karmada", klog.KObj(data)) diff --git a/operator/pkg/tasks/init/karmadaresource.go b/operator/pkg/tasks/init/karmadaresource.go index 082e71ad9ed4..b11b6d858767 100644 --- a/operator/pkg/tasks/init/karmadaresource.go +++ b/operator/pkg/tasks/init/karmadaresource.go @@ -8,7 +8,6 @@ import ( "path" "regexp" "strings" - "time" corev1 "k8s.io/api/core/v1" apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" @@ -176,7 +175,7 @@ func runWebhookConfiguration(r workflow.RunData) error { } caBase64 := base64.StdEncoding.EncodeToString(cert.CertData()) - return webhookconfiguration.EnsureWebhookconfiguration( + return webhookconfiguration.EnsureWebhookConfiguration( data.KarmadaClient(), data.GetNamespace(), data.GetName(), @@ -200,7 +199,7 @@ func runAPIService(r workflow.RunData) error { return fmt.Errorf("failed to apply aggregated APIService resource to karmada controlplane, err: %w", err) } - waiter := apiclient.NewKarmadaWaiter(config, nil, time.Second*20) + waiter := apiclient.NewKarmadaWaiter(config, nil, componentBeReadyTimeout) if err := apiclient.TryRunCommand(waiter.WaitForAPIService, 3); err != nil { return fmt.Errorf("the APIService is unhealthy, err: %w", err) } diff --git a/operator/pkg/tasks/init/wait.go b/operator/pkg/tasks/init/wait.go index 794171e92453..89f412aa006a 100644 --- a/operator/pkg/tasks/init/wait.go +++ b/operator/pkg/tasks/init/wait.go @@ -14,12 +14,16 @@ import ( ) var ( + // The timeout for wait each component be ready + // It includes the time for pulling the component image. + componentBeReadyTimeout = 120 * time.Second + etcdLabels = labels.Set{"karmada-app": constants.Etcd} karmadaApiserverLabels = labels.Set{"karmada-app": constants.KarmadaAPIServer} karmadaAggregatedAPIServerLabels = labels.Set{"karmada-app": constants.KarmadaAggregatedAPIServer} kubeControllerManagerLabels = labels.Set{"karmada-app": constants.KubeControllerManager} karmadaControllerManagerLabels = labels.Set{"karmada-app": constants.KarmadaControllerManager} - karmadaSchedulerLablels = labels.Set{"karmada-app": constants.KarmadaScheduler} + karmadaSchedulerLabels = labels.Set{"karmada-app": constants.KarmadaScheduler} karmadaWebhookLabels = labels.Set{"karmada-app": constants.KarmadaWebhook} ) @@ -38,7 +42,7 @@ func runWaitApiserver(r workflow.RunData) error { } klog.V(4).InfoS("[check-apiserver-health] Running task", "karmada", klog.KObj(data)) - waiter := apiclient.NewKarmadaWaiter(data.ControlplaneConfig(), data.RemoteClient(), time.Second*30) + waiter := apiclient.NewKarmadaWaiter(data.ControlplaneConfig(), data.RemoteClient(), componentBeReadyTimeout) // check whether the karmada apiserver is health. if err := apiclient.TryRunCommand(waiter.WaitForAPI, 3); err != nil { @@ -57,7 +61,7 @@ func NewWaitControlPlaneTask() workflow.Task { Tasks: []workflow.Task{ newWaitControlPlaneSubTask("KubeControllerManager", kubeControllerManagerLabels), newWaitControlPlaneSubTask("KarmadaControllerManager", karmadaControllerManagerLabels), - newWaitControlPlaneSubTask("KarmadaScheduler", karmadaSchedulerLablels), + newWaitControlPlaneSubTask("KarmadaScheduler", karmadaSchedulerLabels), newWaitControlPlaneSubTask("KarmadaWebhook", karmadaWebhookLabels), }, } @@ -87,7 +91,7 @@ func runWaitControlPlaneSubTask(component string, lables labels.Set) func(r work return errors.New("wait-controlPlane task invoked with an invalid data struct") } - waiter := apiclient.NewKarmadaWaiter(nil, data.RemoteClient(), time.Second*120) + waiter := apiclient.NewKarmadaWaiter(nil, data.RemoteClient(), componentBeReadyTimeout) if err := waiter.WaitForSomePods(lables.String(), data.GetNamespace(), 1); err != nil { return fmt.Errorf("waiting for %s to ready timeout, err: %w", component, err) } diff --git a/operator/pkg/util/apiclient/idempotency.go b/operator/pkg/util/apiclient/idempotency.go index 749513e0cab4..9ec70328e1f2 100644 --- a/operator/pkg/util/apiclient/idempotency.go +++ b/operator/pkg/util/apiclient/idempotency.go @@ -25,7 +25,7 @@ import ( var errAllocated = errors.New("provided port is already allocated") -// NewCRDsClient is to create a clientset ClientSet +// NewCRDsClient is to create a Clientset func NewCRDsClient(c *rest.Config) (*crdsclient.Clientset, error) { return crdsclient.NewForConfig(c) } @@ -207,26 +207,26 @@ func PatchCustomResourceDefinition(client *crdsclient.Clientset, name string, da } // CreateOrUpdateStatefulSet creates a StatefulSet if the target resource doesn't exist. If the resource exists already, this function will update the resource instead. -func CreateOrUpdateStatefulSet(client clientset.Interface, statefuleSet *appsv1.StatefulSet) error { - _, err := client.AppsV1().StatefulSets(statefuleSet.GetNamespace()).Create(context.TODO(), statefuleSet, metav1.CreateOptions{}) +func CreateOrUpdateStatefulSet(client clientset.Interface, statefulSet *appsv1.StatefulSet) error { + _, err := client.AppsV1().StatefulSets(statefulSet.GetNamespace()).Create(context.TODO(), statefulSet, metav1.CreateOptions{}) if err != nil { if !apierrors.IsAlreadyExists(err) { return err } - older, err := client.AppsV1().StatefulSets(statefuleSet.GetNamespace()).Get(context.TODO(), statefuleSet.GetName(), metav1.GetOptions{}) + older, err := client.AppsV1().StatefulSets(statefulSet.GetNamespace()).Get(context.TODO(), statefulSet.GetName(), metav1.GetOptions{}) if err != nil { return err } - statefuleSet.ResourceVersion = older.ResourceVersion - _, err = client.AppsV1().StatefulSets(statefuleSet.GetNamespace()).Update(context.TODO(), statefuleSet, metav1.UpdateOptions{}) + statefulSet.ResourceVersion = older.ResourceVersion + _, err = client.AppsV1().StatefulSets(statefulSet.GetNamespace()).Update(context.TODO(), statefulSet, metav1.UpdateOptions{}) if err != nil { return err } } - klog.V(5).InfoS("Successfully created or updated statefulset", "statefulset", statefuleSet.GetName) + klog.V(5).InfoS("Successfully created or updated statefulset", "statefulset", statefulSet.GetName) return nil } @@ -248,7 +248,7 @@ func DeleteDeploymentIfHasLabels(client clientset.Interface, name, namespace str return client.AppsV1().Deployments(namespace).Delete(context.TODO(), name, metav1.DeleteOptions{}) } -// DeleteStatefulSetIfHasLabels deletes a StatefuleSet that exists the given labels. +// DeleteStatefulSetIfHasLabels deletes a StatefulSet that exists the given labels. func DeleteStatefulSetIfHasLabels(client clientset.Interface, name, namespace string, ls labels.Set) error { sts, err := client.AppsV1().StatefulSets(namespace).Get(context.TODO(), name, metav1.GetOptions{}) if err != nil { diff --git a/operator/pkg/util/endpoint.go b/operator/pkg/util/endpoint.go index f24e2cce2f5d..7defaf2a66eb 100644 --- a/operator/pkg/util/endpoint.go +++ b/operator/pkg/util/endpoint.go @@ -19,8 +19,7 @@ func GetControlplaneEndpoint(address, port string) (string, error) { if ip == nil { return "", fmt.Errorf("invalid value `%s` given for address", address) } - url := formatURL(ip.String(), port) - return url.String(), nil + return formatURL(ip.String(), port).String(), nil } // formatURL takes a host and a port string and creates a net.URL using https scheme From f3d7b72b164fa37be99012f2ac995e55f70b5d9f Mon Sep 17 00:00:00 2001 From: Lan Liang Date: Thu, 17 Aug 2023 08:42:03 +0000 Subject: [PATCH 14/16] ResourceSummary add check index for -1 Signed-off-by: Lan Liang --- pkg/modeling/modeling.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pkg/modeling/modeling.go b/pkg/modeling/modeling.go index 71eabeb2a74a..82cc6ed150ce 100644 --- a/pkg/modeling/modeling.go +++ b/pkg/modeling/modeling.go @@ -162,6 +162,10 @@ func safeChangeNum(num *int, change int) { // AddToResourceSummary add resource node into modeling summary func (rs *ResourceSummary) AddToResourceSummary(crn ClusterResourceNode) { index := rs.getIndex(crn) + if index == -1 { + klog.Error("ClusterResource can not add to resource summary: index is invalid.") + return + } modeling := &(*rs)[index] if rs.GetNodeNumFromModel(modeling) <= 5 { root := modeling.linkedlist @@ -269,6 +273,9 @@ func (rs *ResourceSummary) GetNodeNumFromModel(model *resourceModels) int { // DeleteFromResourceSummary dalete resource node into modeling summary func (rs *ResourceSummary) DeleteFromResourceSummary(crn ClusterResourceNode) error { index := rs.getIndex(crn) + if index == -1 { + return errors.New("ClusterResource can not delet the resource summary: index is invalid.") + } modeling := &(*rs)[index] if rs.GetNodeNumFromModel(modeling) >= 6 { root := modeling.redblackTree From 2a8fb8e23a5de9b8f18d72f8b9fcc875433d7c13 Mon Sep 17 00:00:00 2001 From: Tanggui Bian Date: Wed, 16 Aug 2023 19:28:12 +0800 Subject: [PATCH 15/16] repair the cluster_status_controller_test Signed-off-by: Tanggui Bian --- .../status/cluster_status_controller.go | 4 + .../status/cluster_status_controller_test.go | 128 ++++++++++++++++++ 2 files changed, 132 insertions(+) diff --git a/pkg/controllers/status/cluster_status_controller.go b/pkg/controllers/status/cluster_status_controller.go index 7572cd50a15a..f797ca51c614 100644 --- a/pkg/controllers/status/cluster_status_controller.go +++ b/pkg/controllers/status/cluster_status_controller.go @@ -367,6 +367,8 @@ func (c *ClusterStatusController) initLeaseController(cluster *clusterv1alpha1.C ctx, cancelFunc := context.WithCancel(context.TODO()) c.ClusterLeaseControllers.Store(cluster.Name, cancelFunc) + var wg sync.WaitGroup + wg.Add(1) // start syncing lease go func() { klog.Infof("Starting syncing lease for cluster: %s", cluster.Name) @@ -376,7 +378,9 @@ func (c *ClusterStatusController) initLeaseController(cluster *clusterv1alpha1.C klog.Infof("Stop syncing lease for cluster: %s", cluster.Name) c.ClusterLeaseControllers.Delete(cluster.Name) // ensure the cache is clean + wg.Done() }() + wg.Wait() } func getClusterHealthStatus(clusterClient *util.ClusterClient) (online, healthy bool) { diff --git a/pkg/controllers/status/cluster_status_controller_test.go b/pkg/controllers/status/cluster_status_controller_test.go index ed7d642871ee..b15e68935c6a 100644 --- a/pkg/controllers/status/cluster_status_controller_test.go +++ b/pkg/controllers/status/cluster_status_controller_test.go @@ -46,6 +46,19 @@ func TestClusterStatusController_Reconcile(t *testing.T) { expectedResult: controllerruntime.Result{}, expectedError: false, }, + { + name: "Cluster found with finalizer", + clusterName: "test-cluster", + cluster: &clusterv1alpha1.Cluster{ + ObjectMeta: metav1.ObjectMeta{ + Finalizers: []string{ + util.ClusterControllerFinalizer, + }, + }, + }, + expectedResult: controllerruntime.Result{}, + expectedError: false, + }, { name: "Cluster found without finalizer", clusterName: "test-cluster", @@ -72,6 +85,7 @@ func TestClusterStatusController_Reconcile(t *testing.T) { if tt.cluster != nil { // Add a cluster to the fake client. tt.cluster.ObjectMeta.Name = tt.clusterName + c.Client = fake.NewClientBuilder().WithScheme(gclient.NewSchema()).WithStatusSubresource(tt.cluster).Build() if err := c.Client.Create(context.Background(), tt.cluster); err != nil { t.Fatalf("Failed to create cluster: %v", err) @@ -185,6 +199,51 @@ func TestClusterStatusController_syncClusterStatus(t *testing.T) { server := mockServer(http.StatusNotFound, true) defer server.Close() serverAddress = server.URL + cluster := &clusterv1alpha1.Cluster{ + ObjectMeta: metav1.ObjectMeta{Name: "test"}, + Spec: clusterv1alpha1.ClusterSpec{ + APIEndpoint: server.URL, + SecretRef: &clusterv1alpha1.LocalSecretReference{Namespace: "ns1", Name: "secret1"}, + InsecureSkipTLSVerification: true, + ProxyURL: "http://1.1.1.2", + }, + } + c := &ClusterStatusController{ + Client: fake.NewClientBuilder().WithScheme(gclient.NewSchema()).WithStatusSubresource(cluster).Build(), + GenericInformerManager: genericmanager.GetInstance(), + TypedInformerManager: typedmanager.GetInstance(), + ClusterSuccessThreshold: metav1.Duration{ + Duration: time.Duration(1000), + }, + ClusterFailureThreshold: metav1.Duration{ + Duration: time.Duration(1000), + }, + clusterConditionCache: clusterConditionStore{}, + PredicateFunc: helper.NewClusterPredicateOnAgent("test"), + RateLimiterOptions: ratelimiterflag.Options{ + RateLimiterBaseDelay: time.Duration(1000), + RateLimiterMaxDelay: time.Duration(1000), + RateLimiterQPS: 10, + RateLimiterBucketSize: 10, + }, + ClusterClientSetFunc: clusterClientSetFunc, + ClusterDynamicClientSetFunc: util.NewClusterDynamicClientSetForAgent, + } + + if err := c.Client.Create(context.Background(), cluster); err != nil { + t.Fatalf("Failed to create cluster: %v", err) + } + + res, err := c.syncClusterStatus(cluster) + expect := controllerruntime.Result{} + assert.Equal(t, expect, res) + assert.Empty(t, err) + }) + + t.Run("online and healthy is true", func(t *testing.T) { + server := mockServer(http.StatusOK, false) + defer server.Close() + serverAddress = server.URL cluster := &clusterv1alpha1.Cluster{ ObjectMeta: metav1.ObjectMeta{Name: "test"}, Spec: clusterv1alpha1.ClusterSpec{ @@ -192,6 +251,7 @@ func TestClusterStatusController_syncClusterStatus(t *testing.T) { SecretRef: &clusterv1alpha1.LocalSecretReference{Namespace: "ns1", Name: "secret1"}, InsecureSkipTLSVerification: true, ProxyURL: "http://1.1.1.1", + SyncMode: clusterv1alpha1.Pull, }, } c := &ClusterStatusController{ @@ -215,6 +275,7 @@ func TestClusterStatusController_syncClusterStatus(t *testing.T) { ClusterClientSetFunc: clusterClientSetFunc, ClusterDynamicClientSetFunc: util.NewClusterDynamicClientSetForAgent, } + if err := c.Client.Create(context.Background(), cluster); err != nil { t.Fatalf("Failed to create cluster: %v", err) } @@ -747,6 +808,73 @@ func TestGetAllocatableModelings(t *testing.T) { } func TestClusterStatusController_updateStatusIfNeeded(t *testing.T) { + t.Run("cluster is in client", func(t *testing.T) { + cluster := &clusterv1alpha1.Cluster{ + ObjectMeta: metav1.ObjectMeta{ + Name: "cluster1", + Namespace: "karmada", + }, + Status: clusterv1alpha1.ClusterStatus{ + KubernetesVersion: "v1", + }, + Spec: clusterv1alpha1.ClusterSpec{ + ResourceModels: []clusterv1alpha1.ResourceModel{ + { + Grade: 0, + Ranges: []clusterv1alpha1.ResourceModelRange{ + { + Name: clusterv1alpha1.ResourceCPU, + Min: *resource.NewMilliQuantity(0, resource.DecimalSI), + Max: *resource.NewQuantity(1, resource.DecimalSI), + }, + { + Name: clusterv1alpha1.ResourceMemory, + Min: *resource.NewMilliQuantity(0, resource.DecimalSI), + Max: *resource.NewQuantity(1024, resource.DecimalSI), + }, + }, + }, + { + Grade: 1, + Ranges: []clusterv1alpha1.ResourceModelRange{ + { + Name: clusterv1alpha1.ResourceCPU, + Min: *resource.NewMilliQuantity(1, resource.DecimalSI), + Max: *resource.NewQuantity(2, resource.DecimalSI), + }, + { + Name: clusterv1alpha1.ResourceMemory, + Min: *resource.NewMilliQuantity(1024, resource.DecimalSI), + Max: *resource.NewQuantity(1024*2, resource.DecimalSI), + }, + }, + }, + }, + }, + } + + currentClusterStatus := clusterv1alpha1.ClusterStatus{ + KubernetesVersion: "v2", + } + + c := &ClusterStatusController{ + Client: fake.NewClientBuilder().WithScheme(gclient.NewSchema()).WithObjects( + cluster, + ).WithStatusSubresource(cluster).Build(), + GenericInformerManager: genericmanager.GetInstance(), + TypedInformerManager: typedmanager.GetInstance(), + ClusterClientOption: &util.ClientOption{ + QPS: 5, + Burst: 10, + }, + ClusterClientSetFunc: util.NewClusterClientSet, + } + + actual, err := c.updateStatusIfNeeded(cluster, currentClusterStatus) + assert.Equal(t, controllerruntime.Result{}, actual) + assert.Empty(t, err, "updateStatusIfNeeded returns error") + }) + t.Run("cluster isn't in client", func(t *testing.T) { cluster := &clusterv1alpha1.Cluster{ ObjectMeta: metav1.ObjectMeta{ From 7f72c0d78d5a19f1b2aff43e89ec53990e81d7a1 Mon Sep 17 00:00:00 2001 From: Tanggui Bian Date: Thu, 20 Jul 2023 20:47:09 +0800 Subject: [PATCH 16/16] Add proposal for remove derived mcs Signed-off-by: Tanggui Bian --- docs/proposals/mcs/additional-dns-server.jpg | Bin 0 -> 201801 bytes .../mcs/remove-derived-in-controller.jpg | Bin 0 -> 609682 bytes docs/proposals/mcs/remove-derived-mcs.md | 355 ++++++++++++++++++ docs/proposals/mcs/remove-derived-mcs.png | Bin 0 -> 17803 bytes 4 files changed, 355 insertions(+) create mode 100644 docs/proposals/mcs/additional-dns-server.jpg create mode 100644 docs/proposals/mcs/remove-derived-in-controller.jpg create mode 100644 docs/proposals/mcs/remove-derived-mcs.md create mode 100644 docs/proposals/mcs/remove-derived-mcs.png diff --git a/docs/proposals/mcs/additional-dns-server.jpg b/docs/proposals/mcs/additional-dns-server.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c848b52f0bec057bc4f5fbfc98c2455349b471f8 GIT binary patch literal 201801 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%0Dls78f^T`|7@KyjEC_sI^t^-iy!~WI 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 RG%%V5M$-VrX@K$nO#l?L#MS@+ literal 0 HcmV?d00001 diff --git a/docs/proposals/mcs/remove-derived-in-controller.jpg b/docs/proposals/mcs/remove-derived-in-controller.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a8cd83170c7363721de28feeca83fa1684728518 GIT binary patch literal 609682 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 z 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

;@a8cGa?$(j3ef^>89o-2Wl=n&UYuFQmfVT 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 B{vQAU literal 0 HcmV?d00001 diff --git a/docs/proposals/mcs/remove-derived-mcs.md b/docs/proposals/mcs/remove-derived-mcs.md new file mode 100644 index 000000000000..4d988c41e2e7 --- /dev/null +++ b/docs/proposals/mcs/remove-derived-mcs.md @@ -0,0 +1,355 @@ +--- +title: Remove "derived-" prefix of MCS + +authors: +- "@zishen" + +reviewers: +- "@kevin-wangzefeng" +- "@RainbowMango" +- "@XiShanYongYe-Chang" +- "@Garrybest" +- "@GitHubxsy" + +creation-date: 2023-06-30 +--- + + + +# Remove "derived-" prefix of MCS + +## Summary + +As mentioned in [issue-2384](https://github.com/karmada-io/karmada/issues/2384), currently Karmada uses ServiceExport, ServiceImport and other CR to form mcs-controller and manage multi-cluster services. But in the cluster where the service is not located, we need to use a different IP or a service name with a "derived-" prefix to access. We hope to reduce this difference so that different clusters can use the same domain name to access service. + +## Motivation + +Currently, in different cluster members of Karmada, if you need to access the service across clusters, you need to use different ip or domain names with a "derived-" prefix to access. This will increase the complexity of the user's use. We hope that users can use the same domain name to achieve cross-cluster access. + +### Goals + +* Keep the original access method. Avoid the need to make modifications to the customer's system after the upgrade. +* Added the use of a unified domain name for cross-cluster access. The domain name is the access domain name of the cluster where the service resides. + +### Non-Goals + +none + +## Proposal + +### User Stories + +According to the current Karmada's [mcs configuration](https://karmada.io/docs/userguide/service/multi-cluster-service) , if a service in member1, the user needs to access the service in member1, needs to use the domain name: "serve.default.svc.cluster.local", and the domain name in member2 will be: "derived-serve.default.svc.cluster.local". As a result, when customers use the service, they need to add the prefix "derived-" to access the domain name of the service. This brings additional inconvenience. So I hope to be able to: + +1. Provide a unified access method across clusters. + +2. The original access method remains unchanged. So that existing business can also work normally. + +### Notes/Constraints/Caveats (Optional) + +1. The `coreDNS` version must be v1.9.3 or above, and the matching k8s version is at v1.21.0 or above, otherwise the multicluster feature is not supported. + +### Risks and Mitigations + + + +## Design Details + +### API change + +none + +### Components change + +Here is give the implementation plan:`ServiceImport ` + karmada. + +#### 1) Use ServiceImport to generate rr records + +This solution is mainly realized by combining the `multicluster` plug-in of `corends`. It is divided into two parts: `coreDNS` transformation and `karmada`. For the `coreDNS`, here is two implementation plan. + +##### (1) coreDNS+multicluster + +This solution is mainly realized by the `multicluster` plug-in of `corends`. + +###### **Principle Description** + +In order to adapt to mcs, `coreDNS` launched the [`multicluster`](https://github.com/coredns/multicluster) plug-in. After the plug-in completes the configuration and deployment, it will parse `ServiceImport`. The main content of the analysis is the `name`, `namespace` and `ips`, and an rr record is generated accordingly. Then client pod can cross-cluster access services. + +The workflow of the `multicluster` plugin is as follows: + +![diagrammatic drawing of remove mcs](./remove-derived-mcs.png) + +The diagram is explained below: + +* Here give a service named `foo` in `member1`. We should use the full domain name: `foo.default.svc.cluster.local` to access this service. But we cannot use the same domain name in `member2`. + +* `Karmada` exports the service through `ServiceExport` and imports it into `member2` through `ServiceImport`. At this time, the shadow service `derived-foo` will appear in `member2`. User in `memeber2` can access to the `foo` service in `memeber1` by using `derived-foo.default.svc.cluster.local`. + +* After the `coreDNS` installed with `multicluster` found the `ServiceImport` had been created, it will analyze `name`, `namespace`, and `ips` fields of the `ServiceImport` and generate the rr records. In this example, the `ips` in `ServiceImport` can be the `clusterIP` of `derived-foo`. + +* When the client accesses the service across clusters (the suffix may be different from the local access), `coreDNS` can access it according to the corresponding rr record. + +###### Compilation-instructions + +According to the documentation on the official website [multicluster plugin](https://github.com/coredns/multicluster). Download `coreDNS`, the corresponding version of k8s 1.26 is v1.9.3 (the latest v1.10.1 is also available): + +```shell +git clone https://github.com/coredns/coredns +cd coredns +git checkout v1.9.3 +``` + +* Add multicluster plugin + +Open the `plugin.cfg` file and add `multicluster` in it as follow: + +```shell +... +kubernetes:kubernetes +multicluster: github.com/coredns/multicluster +... +``` + +* Execute compilation + +```shell +make +``` + +After the compilation is successful, the corresponding binary will be generated in the root directory. + +Mirror making and installation or upgrading please refer to [coreDNS github website](https://github.com/coredns/coredns). + +###### Configuration-instructions + +The suffix `clusterset.local` is used as an example to illustrate + +* Configure coredns permissions in member2 + +```shell +kubectl edit clusterrole system:coredns +``` + +Add the following to the end + +```yaml +... +- apiGroups: + - multicluster.x-k8s.io + resources: + - serviceimports + verbs: + - list + - watch +``` + +* Configure multicluster zone rules + +Add `multicluster` processing rules to corefile in `coredns` + +```shell +kubectl edit configmap coredns -n kube-system +``` + + + +```yaml + .... + Corefile: | + .:53 { + errors + health { + lameduck 5s + } + ready + multicluster clusterset.local # Add this line. + kubernetes cluster.local in-addr.arpa ip6.arpa { + pods insecure + fallthrough in-addr.arpa ip6.arpa + ttl 30 + } + prometheus:9153 + forward ./etc/resolv.conf { + max_concurrent 1000 + } + cache 30 + the loop + reload + load balance + } +... +``` + +* Configure dns search item "clusterset.local" + +**Configure node /etc/resolv.conf file** + +Edit the `/etc/resolv.conf` file and add the "clusterset.local" entry to give priority to local services when using the domain name `foo.default.svc`. It is worth reminding that the remote service is only accessed when the local service does not exist, not unavailable. + +```shell +root@btg:/# cat /etc/resolv.conf +search default.svc.cluster.local svc.cluster.local cluster.local clusterset.local +... +``` + +This configuration method needs to configure the `/etc/resolv.conf` file on the client node. If you don't want to change the node's `resolv.conf` file, you can also use the following method. + +**Configure pod's dnsConfig in yaml** + +That is, add the configuration item searches of dnsConfig in yaml, and set the value to `clusterset.local`, as shown below: + +```yaml +... + dnsPolicy: ClusterFirst + dnsConfig: + searches: + - clusterset.local +... +``` + +###### Access method + +Since the search function of dns is used, the `foo` service access method is: + +1. `foo.default.svc` access. This method gives priority to local access, and if the local service with the same name is inexistence, it will access the remote cluster service. + +2. `foo.default.svc.clusterset.local` full domain name access. The request will go directly to the remote server for processing. + +###### Advantages and disadvantages + +shortcoming: + +1. Using `foo.default.svc` access cannot achieve load balancing. The remote service will only be accessed when the local service is inexistence. Therefore, if you need to achieve local and remote access load balancing, you need to cooperate with other solutions. + +2. To use `foo.default.svc`, you need to modify the dns configuration. If you use the `resolv.conf `method, you need to modify the `resolv.conf` file of each possible nodes. If you use the dnsConfig method, you need to modify the yaml or api of the delivered pod. + +3. The `multicluster` plug-in cannot be loaded dynamically. Customers need to recompile `coredns` and modify the `coredns` configuration of member clusters. + +4. The original access method will be changed. This solution uses different suffixes to distinguish single-cluster Service and multi-cluster Service. Therefore, the access domain name `foo.default.svc.cluster.local` will become `foo.default.svc.clusterset.local`. Customers need to modify the code to adapt. + +advantage: + +1. The impact is controllable. No new components will be added. The way `coredns` adds `multicluster` is to comply with the official proposal of `coredns`, and the code is open. + +2. The amount of modification is small. It can be done by using the existing code and scheme of `multicluster`. + +##### (2) Additional dns server + +Similar to submariner's [SERVICE DISCOVERY](https://submariner.io/getting-started/architecture/service-discovery/). It is necessary to develop an extended dns resolver, and install the corresponding plug-in in `coreDNS` to transfer the domain name with the specified suffix (such as `clusterset.local`) to this additional dns resolver. Therefore, the domain name can be resolved by dns. + +The workflow of the additional dns server as follows: + +![](.\additional-dns-server.jpg) + +The advantages and disadvantages of this method are as follows: + +advantage: + +1. Load balancing can be achieved. Since the extended dns resolver is customized, customers can achieve load balancing here. + +2. Access in the original way can be realized. Rules for local services and remote services can be determined in custom plug-ins. Therefore, the original access method can be maintained, in this case is `foo.default.svc.cluster.local`. + +3. No other configuration of dns is required. Since there is a custom dns resolver, there is no need to configure dns search. Therefore, there is no configuration of dns search in solution one. + +shortcoming: + +1. The `coreDNS` component needs to be modified. It is also necessary to recompile `coreDNS` in order to install the corresponding plug-ins, and also need to modify the corresponding `coreDNS` configuration. + +2. New components need to be deployed in member clusters. This solution requires a dns extension resolver to be installed. + +### 2) Karmada adaptation + +What needs to be done in the `karmada` part is to fill in the `ips` field of the `ServiceImport` which imported to the member cluster on the existing basis and correspond to the `clusterIP` of `derived-foo`. Its flow diagram is as follows: + +![remove-derived-in-controller](./remove-derived-in-controller.jpg) + +As shown in the figure above, we still take the `foo` service as an example. After configuring `coreDNS`, we add the logic to obtain the `derived-foo` service in the cluster members in the ServiceImport-controller of the control plane. + +1. Wait for cluster member config the `derived-foo` service's `clusterIP` . + +2. The controller of the control plane obtains the value, and fills the value into the work corresponding to the `ServiceImport` of the control plane. + +3. According to the synchronization principle of `Karmada`, the `ServiceImport` object in the member cluster will be filled with the `clusterIP` value of `derived-foo`. + +That is, the effect of `ServiceImport` after completion needs to be: + +```yaml +apiVersion: multicluster.x-k8s.io/v1alpha1 +kind: ServiceImport +metadata: + name: foo + namespace: default +spec: + type: ClusterSetIP + ports: + - name: "http" + port: 80 + protocol: TCP + ips: + - "10.10.0.5" # clusterIP for cross-cluster access +``` + +### 3) Suggested operation + +The recommended configuration instructions for the `coreDNS`+`multicluster` plug-in solution are given below. + +#### Environment preparation: + +A normal Karmada cluster, and can perform existing mcs operations. + +The following uses the cluster member2 where the client resides as an example to access the `foo`service using the suffix `clusterset.local`. This solution needs to be configured as follows: + +#### coredns compile + +Refer to subsection [`Compilation-Instructions`](#Compilation-Instructions). + +#### coredns configuration + +Refer to subsection [`Configuration-instructions`](#Configuration-instructions). + +#### Client pod configuration + +Taking yaml as an example, you need to add the configuration item searches of dnsConfig in yaml, and set the value to `clusterset.local`. A simple and complete example is as follows: + +```yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: dns-test +spec: + replicas: 2 + selector: + matchLabels: + app: dns-test + template: + metadata: + labels: + app: dns-test + spec: + containers: + - name: dns-test + image: ubuntu:18.04 + command: + - "/bin/bash" + - "-c" + args: [ "while true; do sleep 3; cat /etc/resolv.conf; done" ] + dnsPolicy: ClusterFirst + dnsConfig: + searches: + -clusterset.local + options: + - name: timeout + value: "2 +``` + +### Test Plan + +- All current testing should be passed, no break change would be involved by this feature. + +## Alternatives + +Here are another two ways I know: + +First, using the same service name, not service with`derived-` prefix on other cluster. More details see **[bivas](https://github.com/bivas)** 's pr [proposal for native service discovery](https://github.com/karmada-io/karmada/pull/3694) + +Second, install and using [submariner](https://submariner.io/) . \ No newline at end of file diff --git a/docs/proposals/mcs/remove-derived-mcs.png b/docs/proposals/mcs/remove-derived-mcs.png new file mode 100644 index 0000000000000000000000000000000000000000..5e52a18cf62d8cc7c310aa521ba9d7432710dca1 GIT binary patch literal 17803 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 GbWEzI^FAQY$fO1 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