New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
mds downgrade from higher version to lower version #8576
Comments
@fengjiankui121 If you don't restart the operator do you see the same behavior? The operator intends to prevent the ceph downgrades, but there may be an issue when the operator is restarted. |
@travisn The same phenomenon will occur if other operations cause the operator to re-run. For example, cephcluster configuration changes |
@travisn This problem is mainly due to the inconsistency of the version of the ceph component, which triggers the upgrade of mds. The relevant code is as follows: rook\pkg\operator\ceph\cluster\version.go if numberOfCephVersions > 1 { |
@travisn OSD, monitor, etc. are allowed to upgrade to lower versions, but mds is not allowed, which will lead to inconsistent versions of ceph components, and inconsistent versions of ceph components will trigger the upgrade of mds |
@fengjiankui121 To be clear, are you seeing that the mds is not updated during a downgraded Ceph version? But if you restart the operator, the mds is updated to the downgraded version? And the bug is that you expect the mds to downgrade without the operator restart? |
@travisn yes, it is |
Ok, sounds like we just need to relax the check and allow the mds downgrade. It's not really supported to downgrade, but the reality is that sometimes it is better to risk the downgrade than to stay in a broken state after an upgrade |
@fengjiankui121 Need help the reproduce this behavior. Steps I followed are below:
Before downgrade:
After downgrade :
mds got downgraded to 16.2.4 just by downgrading the ceph version from Let me know if I'm missing something. |
From the rook code, it can be found that mds is not allowed to be upgraded, unless the versions between the ceph components are inconsistent, the relevant code is as follows: if numberOfCephVersions > 1 { ...... if cephver.IsInferior(imageSpecVersion, clusterRunningVersion) { |
@sp98 From the rook code, it can be found that mds is not allowed to be upgraded, unless the versions between the ceph components are inconsistent, the relevant code is as follows: if numberOfCephVersions > 1 { ...... if cephver.IsInferior(imageSpecVersion, clusterRunningVersion) { |
Able to reproduce this issue.
Discussed about this issue in the huddle. General consensus is to allow users to downgrade for scenarios where upgrades could lead to a broken state . See comment Rook ( and also ceph) does not support downgrades. Waiting for a major refactoring PR. I'll test this issue again after that PR is merged. |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed in a week if no further activity occurs. Thank you for your contributions. |
This was actually fixed by #9098 in v1.7.7 |
Is this a bug report or feature request?
Deviation from expected behavior:
Expected behavior:
not allowed mds downgrade
How to reproduce it (minimal and precise):
step 1: install ceph with higher version
step 2: upgrade ceph with lower version
step 3: Wait for the osd deployment to complete, restart the operator
step 4: mds will downgrade from higher version to lower version
File(s) to submit:
cluster.yaml
, if necessaryTo get logs, use
kubectl -n <namespace> logs <pod name>
When pasting logs, always surround them with backticks or use the
insert code
button from the Github UI.Read Github documentation if you need help.
Environment:
uname -a
):rook version
inside of a Rook Pod):ceph -v
):kubectl version
):ceph health
in the Rook Ceph toolbox):The text was updated successfully, but these errors were encountered: