Commit Graph
13292 Commits
Author SHA1 Message Date
Blaine Gardner 57f1ff7136 Merge pull request #7234 from travisn/cleanup-tolerations
ceph: Add tolerations for all daemons to the cleanup job
2021-02-16 17:49:26 -07:00
Travis Nielsen dfc24ddd24 Merge pull request #7240 from leseb/fix-vault-key-override
ceph: do not override existing keys
2021-02-16 16:09:34 -07:00
Sébastien Han 9a604640ac ceph: do not override existing keys
If the cluster was expanded we would iterate over the entire list of
OSDs again, create a new key and override in Vault... The Secret store
is not impacted since we have a handler for "already exist".

Signed-off-by: Sébastien Han <seb@redhat.com>
2021-02-16 19:20:20 +01:00
Blaine Gardner 2a3f06bacf Merge pull request #6926 from BlaineEXE/create-new-osds-before-updating-existing
ceph: create new OSDs on PVC before updating existing ones
2021-02-16 11:17:01 -07:00
Travis Nielsen 8ce98c4b72 ceph: add tolerations for all daemons to the cleanup job
The cleanup job will need to run wherever the ceph daemons
were running. The scheduling is done by rook on the specific
nodes where the daemons were running, so there is no need for
other placement such as node or pod affinity.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2021-02-16 10:25:39 -07:00
Travis Nielsen 371128224b Merge pull request #7192 from subhamkrai/osd-resources
ceph: do not merge nodeAffinity
2021-02-16 10:13:18 -07:00
Sébastien Han e99c122038 ceph: revert fail if mgr prometheus is not default
This reverts commit 1ed307cb09. In
8aaff235bb we have introduced the ability
to set a specific monitoring port so the block that fails if the port is
not the default 9283 is not needed anymore.

Signed-off-by: Sébastien Han <seb@redhat.com>
2021-02-16 16:55:37 +01:00
Varsha Rao 7a4ebbef0e ceph: rados pool namespace is optional for nfs deployments
There is no need to validate rados pool namespace, it is optional[1]. And if in
case rados namespace is not specified, it is appropriately handled.

[1] https://github.com/nfs-ganesha/nfs-ganesha/blob/next/src/doc/man/ganesha-core-config.rst

Signed-off-by: Varsha Rao <varao@redhat.com>
2021-02-16 16:25:50 +05:30
Sébastien Han bf8fb7f179 Merge pull request #7221 from cloudical-io/docs_crds_finalizers
docs: fix crd finalizer instructions
2021-02-16 11:02:49 +01:00
Alexander Trost c988db081c docs: fix crd finalizer instructions
Signed-off-by: Alexander Trost <galexrt@googlemail.com>
2021-02-16 10:31:39 +01:00
subhamkrai 6158b6608c ceph: do not merge nodeAffinity
we don't want to merge the node affinity if specified in both
storageClassDeviceSet and placement. Now, we are passing new
boolean argument in `ApplyToPodSpec` which will be false in
case of osd and prepare pods because we don't want to overlap
placement of osd on PVC's and non-PVC's.

Signed-off-by: subhamkrai <srai@redhat.com>
2021-02-16 12:25:28 +05:30
Travis Nielsen c971b01b9e Merge pull request #7230 from leseb/return-error
ceph: embed error in return
2021-02-15 11:36:10 -07:00
Sébastien Han 4e0820f490 ceph: embed error in return
We were missing the error.

Signed-off-by: Sébastien Han <seb@redhat.com>
2021-02-15 17:09:37 +01:00
Sébastien Han 9259894844 Merge pull request #5741 from cybozu-go/ceph-add-OSD-on-LV-backed-PVC-test
ceph: add osd on lv backed pvc test
2021-02-15 15:14:12 +01:00
Sébastien Han f424a7abac Merge pull request #7224 from TomHellier/master
ceph: minor bugfix with multiple filesystems
2021-02-15 12:28:56 +01:00
Tom Hellier 2e505d7439 ceph: minor bugfix with multiple filesystems
The multiple filesystems parameter needed to be quoted for kubernetes to accept the parameter, without quotes the environment variable is rejected.

Signed-off-by: Tom Hellier <me@tomhellier.com>
2021-02-15 10:42:54 +00:00
Sébastien Han b4c55766e4 Merge pull request #7218 from BlaineEXE/clean-doc-ceph-object
docs: use -o jsonpath in ceph-object.md
2021-02-15 09:33:29 +01:00
Blaine Gardner 2e992db10c docs: use -o jsonpath in ceph-object.md
Avoids use of grep and awk.

Signed-off-by: Blaine Gardner <blaine.gardner@redhat.com>
2021-02-12 18:34:42 -07:00
Blaine Gardner a95734160e ceph: create new osds on pvc before update existing
Add a new OSD provisioner status (reported by provisioner configmap)
that denotes that an OSD is preexisting and that OSD prepare does not
need to be run for the OSD. This only applies to OSDs on PVC currently
where existence of a deployment for the OSD indicates no further
provisioning needs to occur. New status is "preexisting".

Allow creating new OSDs on PVCs before updating existing ones by
allowing deferring OSDs during processing of OSD provisioning status
ConfigMaps. Deferral is identified by new "preexisting" status.

Add a unit test to ensure OSD on PVC provisioning occurs as expected
including deferring already-created OSDs to be updated after new PVCs
are created.

Signed-off-by: Blaine Gardner <blaine.gardner@redhat.com>
2021-02-12 17:38:35 -07:00
Travis Nielsen 7c331f33a9 Merge pull request #7191 from thotz/cephobjectuser-endpoint-validation
ceph: fill up endpoint for cephobjectstore user
2021-02-12 10:42:31 -07:00
Travis Nielsen 5320e6d26a Merge pull request #7153 from subhamkrai/default-livnessProbe
ceph: set default values of liveness probe
2021-02-12 09:49:06 -07:00
subhamkrai 4ef4be019b ceph: override default values in liveness probes
this commit set default values or allow overriding of liveness probe
fields if that individual field is 0 or nil.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
Signed-off-by: subhamkrai <srai@redhat.com>
2021-02-12 20:35:56 +05:30
Jiffin Tony Thottan b836aab13e ceph: fill up endpoint for cephobjectstore user
Currently endpoint is filled from `Status.Info["endpoint"]` string map for cephobjectstore user's secret and
have two issues:
1.) endpoint is nil and only secureendpoint is available
2.) Chance of small race window in which endpoint is not filled before this ceph object user is handling.

Signed-off-by: Jiffin Tony Thottan <thottanjiffin@gmail.com>
2021-02-12 10:46:30 +05:30
Travis Nielsen 3effcb2d7e Merge pull request #7182 from ron1/fix-ceph-cluster-ready-status-condition-ordering
ceph: Order CephCluster false condition before true Ready condition
2021-02-11 13:16:14 -07:00
ron1 52cf0a3148 ceph: order CephCluster false condition before true Ready condition
The Rancher Continuous Delivery Fleet tool expects a true Ready
condition to be listed after a false condition such as
ProgressingCompleted. This commit orders the false condition
before its corresponding true Ready condition.

Closes: https://github.com/rook/rook/issues/6977
Signed-off-by: ron1 <ron18219@gmail.com>
2021-02-11 12:54:18 -07:00
Travis Nielsen 90b6608db5 Merge pull request #7157 from subhamkrai/doc-csi-config
docs: help topic for CSI troubleshooting
2021-02-11 10:26:18 -07:00
Travis Nielsen a51ae9b27c Merge pull request #7194 from leseb/do-not-print-pointer-addr
ceph: do not print pointer memory address
2021-02-11 07:20:44 -07:00
Sébastien Han e6e9c8c901 ceph: do not print pointer memory address
When printing pointers of struct (regardless if it is also a slice or
not) we must implement a stringer interface so they can be displayed
properly, this is especially useful when looking at the prepare job
logs.

Before this patch:

```
2021-02-10 06:39:06.783508 D | inventory: discovered disks are [0xc00029c240 0xc00024a000 0xc00086c480 0xc00024a480]
```

After this patch:

```
2021-02-11 13:05:15.730500 D | inventory: discovered disks are:
2021-02-11 13:05:15.730636 D | inventory: &{Name:dm-0 Parent: HasChildren:false DevLinks:/dev/disk/by-id/dm-uuid-LVM-aIFRq5P3hwE2YhukbOmsEZoLY61HxvX62A1xxb6ajTymVE0N8S4Ga0KWlHSgpvNw /dev/disk/by-id/dm-name-ceph--e29bf82e--86f1--4c8e--8412--c468def5a844-osd--block--2044a1ea--6e5e--4423--88cf--8947bf6957d1 Size:32208060416 UUID:91a852c2-8727-4277-9d92-879ee1996503 Serial: Type:lvm Rotational:true Readonly:false Partitions:[] Filesystem:ceph_bluestore Vendor: Model: WWN: WWNVendorExtension: Empty:false CephVolumeData: RealPath:/dev/mapper/ceph--e29bf82e--86f1--4c8e--8412--c468def5a844-osd--block--2044a1ea--6e5e--4423--88cf--8947bf6957d1 KernelName:dm-0 Encrypted:false}
2021-02-11 13:05:15.730657 D | inventory: &{Name:dm-1 Parent: HasChildren:false DevLinks:/dev/disk/by-id/dm-uuid-LVM-GyLVW5UxDRcws8PwsbQuY2CjrQwdn1VxgPQjsKZ2pGVaS1r2Ct0OGZ4P80yEMtqW /dev/disk/by-id/dm-name-ceph--334c640f--7a7f--4fdb--9db4--2f9459e19f9a-osd--block--66ce11c8--20f0--4600--ae50--e8849c9a0af6 Size:32208060416 UUID:cdbcb218-1b03-4d8c-b7d2-25cb88e33b6a Serial: Type:lvm Rotational:true Readonly:false Partitions:[] Filesystem:ceph_bluestore Vendor: Model: WWN: WWNVendorExtension: Empty:false CephVolumeData: RealPath:/dev/mapper/ceph--334c640f--7a7f--4fdb--9db4--2f9459e19f9a-osd--block--66ce11c8--20f0--4600--ae50--e8849c9a0af6 KernelName:dm-1 Encrypted:false}
2021-02-11 13:05:15.730686 D | inventory: &{Name:dm-2 Parent: HasChildren:false DevLinks:/dev/disk/by-id/dm-name-ceph--a011b5c2--cc3f--497a--b19a--6d284461cbc4-osd--block--4de5491c--ecf8--455d--9858--547001fd0321 /dev/disk/by-id/dm-uuid-LVM-QGzgO4E228fvT3NsighNABGdvAKxQEhFOh9rKiDLnSOTk7jLZWu2r1RIMXe5GNqW Size:32208060416 UUID:2238ce24-79e4-41a0-b8ce-e381ac41d5b0 Serial: Type:lvm Rotational:true Readonly:false Partitions:[] Filesystem:ceph_bluestore Vendor: Model: WWN: WWNVendorExtension: Empty:false CephVolumeData: RealPath:/dev/mapper/ceph--a011b5c2--cc3f--497a--b19a--6d284461cbc4-osd--block--4de5491c--ecf8--455d--9858--547001fd0321 KernelName:dm-2 Encrypted:false}
2021-02-11 13:05:15.730713 D | inventory: &{Name:vda1 Parent:vda HasChildren:false DevLinks:/dev/disk/by-path/pci-0000:00:05.0-part1 /dev/disk/by-path/virtio-pci-0000:00:05.0-part1 /dev/disk/by-uuid/0fdf5e49-6b3c-42f2-a1c5-bf77e490dfa4 /dev/disk/by-partuuid/f9dd32c9-a4a5-654f-aee4-651276fdc754 /dev/disk/by-label/boot2docker-data Size:19998934528 UUID: Serial: Type:part Rotational:true Readonly:false Partitions:[] Filesystem:ext4 Vendor: Model: WWN: WWNVendorExtension: Empty:false CephVolumeData: RealPath:/dev/vda1 KernelName:vda1 Encrypted:false}
```

Signed-off-by: Sébastien Han <seb@redhat.com>
2021-02-11 14:06:42 +01:00
Sébastien Han 5de8237357 Merge pull request #7199 from travisn/log-message-format
ceph: Correct formatting of ceph version detected
2021-02-11 10:10:09 +01:00
Travis Nielsen ff1f74f771 ceph: correct formatting of ceph version detected
The ceph version during an upgrade was incorrectly being
formatted in the log message

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2021-02-10 16:36:09 -07:00
Sébastien Han f02ae4a3e3 Merge pull request #7196 from leseb/bz-1926617-2
ceph: fix wrong payload path
2021-02-10 17:23:06 +01:00
Sébastien Han 1f4649f327 ceph: fix wrong payload path
Wrong file was used...

Signed-off-by: Sébastien Han <seb@redhat.com>
2021-02-10 17:01:39 +01:00
Sébastien Han 8a14ff5bd9 Merge pull request #7193 from leseb/bz-1926617
ceph: expose vault curl errors
2021-02-10 16:54:46 +01:00
Sébastien Han 1adebcd4d1 ceph: expose vault curl errors
If the Vault server returns an error, we must report it in the init
container. With this we can properly debug a failing init container.

Resulting container log:

```
oc logs rook-ceph-osd-0-dc6d4d4d-445dg -c encryption-kms-get-kek                                                                                                                                                                                                         ⏎
['error performing token check: Vault is sealed']%
```

Signed-off-by: Sébastien Han <seb@redhat.com>
2021-02-10 12:45:16 +01:00
Sébastien Han 88cf490f00 ceph: silence the curl call
We don't need to output the progress.

Signed-off-by: Sébastien Han <seb@redhat.com>
2021-02-10 11:37:17 +01:00
subhamkraiandMadhu-1 madhupr007@gmail.com dd9d1da2c8 docs: help topic for CSI troubleshooting
this commit add docs for CSI Troubleshooting when
hit with the issue in Provisioning the CephFS/RBD PVC
or Mounting the CephFS/RBD PVC to application pods.

Signed-off-by: subhamkrai srai@redhat.com
co-authored-by: Madhu-1 madhupr007@gmail.com
Signed-off-by: subhamkrai <srai@redhat.com>
2021-02-10 10:32:17 +05:30
Satoru Takeuchi 3b9b1dc3c7 Merge pull request #7185 from cybozu-go/ceph-replace-setting-controller-reference-with-utility-function
ceph: replace setting controller reference with utility function
2021-02-10 09:52:08 +09:00
Sébastien Han fd0716a026 Merge pull request #7173 from leseb/fix-7168
ceph: add cephfilesystemmirrors CRD to 1.15
2021-02-09 16:31:25 +01:00
Travis Nielsen 543edbc762 Merge pull request #7180 from leseb/scale-rbd-mirror
ceph: use deployment replicas instead of more deployments for rbd-mirror
2021-02-09 08:20:41 -07:00
Travis Nielsen 0dec1babd2 Merge pull request #7170 from leseb/bz-1922954
ceph: return an error if PVC is not clean
2021-02-09 08:01:11 -07:00
Sébastien Han db4306b485 Merge pull request #7172 from leseb/bz-1925055
ceph: always override existing block for blkdevmapper
2021-02-09 15:49:04 +01:00
Sébastien Han 6dc15eb649 ceph: always override existing block for blkdevmapper
When the blkdevmapper init container initializes we must override any
existing special block. This will prevent re-using a different disk on
the OSD on PVC scenario.

Adding "--remove-destination" to the cp line will remove each existing
destination file before attempting to open it.
We **MUST** do this otherwise in environment where PVCs are dynamic, restarting the deployment will cause conflicts
When restarting the OSD, the PVC block might end up with a different Kernel disk allocation
For instance, prior to restart the block was mapped to 8:32 and when re-attached it was on 8:16
The previous "block" is still 8:32 so if we don't override it we will try to initialize on a disk that is not an OSD or worse another OSD
This is mainly because in https://github.com/rook/rook/commit/ae8dcf7cc3b51cf8ca7da22f48b7a58887536c4f we switched to use HostPath to store the OSD data
Since HostPath is not ephemeral, the block file must be re-hydrated each time the deployment starts

The test uses "==" instead of numbers since the stat command will print
an hex number and thus we won't always get integer, e,g: major/minor
value 202:13312 will be return ca:3400.

Example run of the new init container:

+ PVC_SOURCE=/set1-data-168h7m
+ PVC_DEST=/var/lib/ceph/osd/ceph-0/block
+ CP_ARGS=(--archive --dereference --verbose)
+ '[' -b /var/lib/ceph/osd/ceph-0/block ']'
++ stat -c %t%T /set1-data-168h7m
+ PVC_SOURCE_MAJ_MIN=ca6100
++ stat -c %t%T /var/lib/ceph/osd/ceph-0/block
PVC's source major/minor numbers changed
removed '/var/lib/ceph/osd/ceph-0/block'
'/set1-data-168h7m' -> '/var/lib/ceph/osd/ceph-0/block'
+ PVC_DEST_MAJ_MIN=ca4000
+ [[ ca6100 == \c\a\4\0\0\0 ]]
+ echo 'PVC'\''s source major/minor numbers changed'
+ CP_ARGS+=(--remove-destination)
+ cp --archive --dereference --verbose --remove-destination /set1-data-168h7m /var/lib/ceph/osd/ceph-0/block

Test procedure:

$ oc -n rook-ceph scale deployment rook-ceph-osd-0 --replicas=2
deployment.apps/rook-ceph-osd-0 scaled

Now we have 2 OSDs and one is crashlooping, which is expected:

rook-ceph-osd-0-66964f6d-2cwqq                              0/1     Init:CrashLoopBackOff   4          2m12s
rook-ceph-osd-0-66964f6d-pmhlq                              1/1     Running                 0          6m7s

The logs from the failing container is pretty clear:

+ PVC_SOURCE=/set1-data-168h7m
+ PVC_DEST=/var/lib/ceph/osd/ceph-0/block
+ CP_ARGS=(--archive --dereference --verbose)
+ '[' -b /var/lib/ceph/osd/ceph-0/block ']'
++ stat -c %t%T /set1-data-168h7m
+ PVC_SOURCE_MAJ_MIN=ca6100
++ stat -c %t%T /var/lib/ceph/osd/ceph-0/block
+ PVC_DEST_MAJ_MIN=ca6100
+ [[ ca6100 == \c\a\6\1\0\0 ]]
+ CP_ARGS+=(--no-clobber)
+ cp --archive --dereference --verbose --no-clobber /set1-data-168h7m /var/lib/ceph/osd/ceph-0/block
inferring bluefs devices from bluestore path
/home/jenkins-build/build/workspace/ceph-build/ARCH/x86_64/AVAILABLE_ARCH/x86_64/AVAILABLE_DIST/centos8/DIST/centos8/MACHINE_SIZE/gigantic/release/15.2.8/rpm/el8/BUILD/ceph-15.2.8/src/os/bluestore/BlueStore.cc: In function 'int BlueStore::expand_devices(std::ostream&)' thread 7f2a52d18240 time 2021-02-09T13:27:46.011397+0000
/home/jenkins-build/build/workspace/ceph-build/ARCH/x86_64/AVAILABLE_ARCH/x86_64/AVAILABLE_DIST/centos8/DIST/centos8/MACHINE_SIZE/gigantic/release/15.2.8/rpm/el8/BUILD/ceph-15.2.8/src/os/bluestore/BlueStore.cc: 7090: FAILED ceph_assert(r == 0)
2021-02-09T13:27:46.010+0000 7f2a52d18240 -1 bluestore(/var/lib/ceph/osd/ceph-0) _lock_fsid failed to lock /var/lib/ceph/osd/ceph-0/fsid (is another ceph-osd still running?)(11) Resource temporarily unavailable
 ceph version 15.2.8 (bdf3eebcd22d7d0b3dd4d5501bee5bac354d5b55) octopus (stable)
 1: (ceph::__ceph_assert_fail(char const*, char const*, int, char const*)+0x158) [0x7f2a48e236e4]

 Acquiring the lock fails, so the OSD won't run.
 Now we scale back down:

$ oc -n rook-ceph scale deployment rook-ceph-osd-0 --replicas=1
deployment.apps/rook-ceph-osd-0 scaled

And we can see the last created OSD (the one crash looping) disappears:

rook-ceph-osd-0-66964f6d-2cwqq                              0/1     Terminating   5          3m6s
rook-ceph-osd-0-66964f6d-pmhlq                              1/1     Running       0          7m1s

Signed-off-by: Sébastien Han <seb@redhat.com>
2021-02-09 14:28:39 +01:00
Satoru Takeuchi bdfabba75c ceph: replace setting controller reference with utility function
Some settinc controller reference code can be replaced
with `controllerutil.SetControllerReference`. It's better to use it
since it provides ownerReference verification.

Signed-off-by: Satoru Takeuchi <satoru.takeuchi@gmail.com>
2021-02-09 12:03:38 +00:00
Satoru Takeuchi 2b073c3bcd ceph: add the integration test of osd on lv-backed pvc
Add missing OVC on LV-backed PVC test. Although we already have
the pvc test case, the code path of lv-backed pvc is a bit different
from raw device.

Signed-off-by: Satoru Takeuchi <satoru.takeuchi@gmail.com>
2021-02-09 10:29:11 +00:00
Sébastien Han 7c928f4196 ceph: return an error if PVC is not clean
With 5f57b6fd3a, we introduced a
regression in the validation code.
If the OSD PV comes from another cluster, GetCephVolumeRawOSDs must
return an error.
The prepare job will crash loop but at least with a useful and
comprehensive message.

Signed-off-by: Sébastien Han <seb@redhat.com>
2021-02-09 11:28:08 +01:00
Sébastien Han 04f5bd0e53 ceph: use deployment replicas instead of more deployments
For the rbd-mirror daemon, We now rely on the "replica" setting in the Deployment spec when the
desired instance count is higher than 1 instead of creating another
deployment.
So now, we don't need to the number of deployments anymore and let
kubernetes handles the number of pods.

Signed-off-by: Sébastien Han <seb@redhat.com>
2021-02-09 10:32:42 +01:00
Sébastien Han 5966f09376 Merge pull request #7160 from leseb/rm-crash-pod-when-ceph-pods-are-gone
ceph: remove crash collector if ceph pod moved
2021-02-09 10:08:16 +01:00
Sébastien Han df683a0c57 ceph: add cephfilesystemmirrors CRD to 1.15
Add the cephfilesystemmirrors definition for CI runs where the
Kubernetes version is 1.15 and extension v1 extensions are not
supported.

Closes: https://github.com/rook/rook/issues/7168
Signed-off-by: Sébastien Han <seb@redhat.com>
2021-02-09 09:50:16 +01:00
Sébastien Han b9e91b600d ceph: remove crash collector if ceph pod moved
If Ceph pods were evicted onto other nodes, there is no reason for the
crash collector to remain on those nodes. So let's remove it.

Signed-off-by: Sébastien Han <seb@redhat.com>
2021-02-09 09:48:16 +01:00
Travis Nielsen 19627a7498 Merge pull request #7179 from varshar16/fs-not-reqd-nfs-deployments
ceph: filesystem is not required for nfs server deployment
2021-02-08 12:15:24 -07:00