osd: mount /run/udev in the init container for ceph-volume activate

The /run/udev directory is now mounted in the OSD init container. This change
is necessary because `ceph-volume activate` needs access to /run/udev [1] in order
to properly handle devices. Without this mount, `ceph-volume activate` could
fail to discover devices during OSD initialization.

[1] https://github.com/ceph/ceph/commit/c2e8c295dc46f1bd74861feb163d9d82f8bb5509

Signed-off-by: Guillaume Abrioux <gabrioux@ibm.com>
(cherry picked from commit dbcd0d46dd)
Signed-off-by: Satoru Takeuchi <satoru.takeuchi@gmail.com>
This commit is contained in:
Guillaume Abrioux authored and Satoru Takeuchi committed 2024-10-25 10:23:23 +00:00
1 parent f0f7524878
commit cd5ff1aff8
2 files changed
+6 -3

No files matched your search

+3
View File
@@ -886,10 +886,13 @@ func (c *Cluster) getActivateOSDInitContainer(configDir, namespace, osdID string
adminKeyringVol, adminKeyringVolMount := cephkey.Volume().Admin(), cephkey.VolumeMount().Admin()
volume = append(volume, adminKeyringVol)
udevVolume := v1.Volume{Name: "udev", VolumeSource: v1.VolumeSource{HostPath: &v1.HostPathVolumeSource{Path: "/run/udev"}}}
volume = append(volume, udevVolume)
volMounts := []v1.VolumeMount{
{Name: activateOSDVolumeName, MountPath: activateOSDMountPathID},
{Name: "devices", MountPath: "/dev"},
{Name: k8sutil.ConfigOverrideName, ReadOnly: true, MountPath: tempEtcCephDir},
{Name: "udev", MountPath: "/run/udev"},
adminKeyringVolMount,
}
+3 -3
View File
@@ -143,10 +143,10 @@ func testPodDevices(t *testing.T, dataDir, deviceName string, allDevices bool) {
assert.Equal(t, corev1.RestartPolicyAlways, deployment.Spec.Template.Spec.RestartPolicy)
assert.Equal(t, "my-priority-class", deployment.Spec.Template.Spec.PriorityClassName)
if devMountNeeded && len(dataDir) > 0 {
assert.Equal(t, 9, len(deployment.Spec.Template.Spec.Volumes))
assert.Equal(t, 10, len(deployment.Spec.Template.Spec.Volumes))
}
if devMountNeeded && len(dataDir) == 0 {
assert.Equal(t, 9, len(deployment.Spec.Template.Spec.Volumes))
assert.Equal(t, 10, len(deployment.Spec.Template.Spec.Volumes))
}
if !devMountNeeded && len(dataDir) > 0 {
assert.Equal(t, 1, len(deployment.Spec.Template.Spec.Volumes))
@@ -164,7 +164,7 @@ func testPodDevices(t *testing.T, dataDir, deviceName string, allDevices bool) {
initCont := deployment.Spec.Template.Spec.InitContainers[0]
assert.Equal(t, "quay.io/ceph/ceph:v15", initCont.Image)
assert.Equal(t, "activate", initCont.Name)
assert.Equal(t, 4, len(initCont.VolumeMounts))
assert.Equal(t, 5, len(initCont.VolumeMounts))
initCont = deployment.Spec.Template.Spec.InitContainers[1]
assert.Equal(t, "quay.io/ceph/ceph:v15", initCont.Image)
assert.Equal(t, "expand-bluefs", initCont.Name)