diff --git a/cluster/examples/kubernetes/ceph/csi/template/cephfs/csi-cephfsplugin-provisioner-dep.yaml b/cluster/examples/kubernetes/ceph/csi/template/cephfs/csi-cephfsplugin-provisioner-dep.yaml index 195f9c4a24cb..87ca06b61b2f 100644 --- a/cluster/examples/kubernetes/ceph/csi/template/cephfs/csi-cephfsplugin-provisioner-dep.yaml +++ b/cluster/examples/kubernetes/ceph/csi/template/cephfs/csi-cephfsplugin-provisioner-dep.yaml @@ -4,7 +4,7 @@ metadata: name: csi-cephfsplugin-provisioner namespace: {{ .Namespace }} spec: - replicas: 2 + replicas: {{ .ProvisionerReplicas }} selector: matchLabels: app: csi-cephfsplugin-provisioner diff --git a/cluster/examples/kubernetes/ceph/csi/template/rbd/csi-rbdplugin-provisioner-dep.yaml b/cluster/examples/kubernetes/ceph/csi/template/rbd/csi-rbdplugin-provisioner-dep.yaml index 43a709dcb9a7..a178b2e06116 100644 --- a/cluster/examples/kubernetes/ceph/csi/template/rbd/csi-rbdplugin-provisioner-dep.yaml +++ b/cluster/examples/kubernetes/ceph/csi/template/rbd/csi-rbdplugin-provisioner-dep.yaml @@ -4,7 +4,7 @@ metadata: name: csi-rbdplugin-provisioner namespace: {{ .Namespace }} spec: - replicas: 2 + replicas: {{ .ProvisionerReplicas }} selector: matchLabels: app: csi-rbdplugin-provisioner diff --git a/pkg/operator/ceph/csi/spec.go b/pkg/operator/ceph/csi/spec.go index 5ea95c066bb6..4a0756e78d3b 100644 --- a/pkg/operator/ceph/csi/spec.go +++ b/pkg/operator/ceph/csi/spec.go @@ -57,6 +57,7 @@ type Param struct { CephFSLivenessMetricsPort uint16 RBDGRPCMetricsPort uint16 RBDLivenessMetricsPort uint16 + ProvisionerReplicas uint8 } type templateParam struct { @@ -325,6 +326,16 @@ func startDrivers(clientset kubernetes.Interface, rookclientset rookclient.Inter } } + tp.ProvisionerReplicas = 2 + nodes, err := clientset.CoreV1().Nodes().List(metav1.ListOptions{}) + if err == nil { + if len(nodes.Items) == 1 { + tp.ProvisionerReplicas = 1 + } + } else { + logger.Errorf("failed to get nodes. Defaulting the number of replicas of provisioner pods to 2. %v", err) + } + if EnableRBD { rbdPlugin, err = templateToDaemonSet("rbdplugin", RBDPluginTemplatePath, tp) if err != nil {