From 081c7c4dbaec3dddcd3c590aa2b6ca73cd1f011a Mon Sep 17 00:00:00 2001 From: Satoru Takeuchi Date: Wed, 21 Oct 2020 11:31:53 +0000 Subject: [PATCH] ceph: reduce the number of admission controller pods in small cluster The number of admission controller pods is 2. When there is only one node as the CI environment, one of these becomes Pending state. Although it's harmless, it's better to reduce this value to 1. Signed-off-by: Satoru Takeuchi --- pkg/operator/ceph/webhook.go | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/pkg/operator/ceph/webhook.go b/pkg/operator/ceph/webhook.go index dc1b90ebd..1680961a3 100644 --- a/pkg/operator/ceph/webhook.go +++ b/pkg/operator/ceph/webhook.go @@ -17,6 +17,8 @@ limitations under the License. package operator import ( + "os" + "github.com/pkg/errors" "github.com/rook/rook/pkg/clusterd" "github.com/rook/rook/pkg/operator/ceph/csi" @@ -26,7 +28,6 @@ import ( apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/intstr" - "os" ) const ( @@ -122,7 +123,7 @@ func createWebhookDeployment(context *clusterd.Context, admissionImage string) e secretVolumeMount := getSecretVolumeMount() antiAffinity := csi.GetPodAntiAffinity(k8sutil.AppAttr, appName) - admissionControllerDeployment := getDeployment(secretVolume, antiAffinity, admissionImage, admission_parameters, secretVolumeMount) + admissionControllerDeployment := getDeployment(context, secretVolume, antiAffinity, admissionImage, admission_parameters, secretVolumeMount) err := k8sutil.CreateDeployment(context.Clientset, appName, namespace, &admissionControllerDeployment) if err != nil { @@ -132,8 +133,17 @@ func createWebhookDeployment(context *clusterd.Context, admissionImage string) e return nil } -func getDeployment(secretVolume corev1.Volume, antiAffinity corev1.PodAntiAffinity, admissionImage string, admission_parameters []string, secretVolumeMount corev1.VolumeMount) v1.Deployment { +func getDeployment(context *clusterd.Context, secretVolume corev1.Volume, antiAffinity corev1.PodAntiAffinity, + admissionImage string, admission_parameters []string, secretVolumeMount corev1.VolumeMount) v1.Deployment { var replicas int32 = 2 + nodes, err := context.Clientset.CoreV1().Nodes().List(metav1.ListOptions{}) + if err == nil { + if len(nodes.Items) == 1 { + replicas = 1 + } + } else { + logger.Errorf("failed to get nodes. Defaulting the number of replicas of admission controller pods to 2. %v", err) + } admissionControllerDeployment := v1.Deployment{ ObjectMeta: metav1.ObjectMeta{