Merge pull request #4465 from leseb/various-fixes
ceph: various controller and crash fixes
This commit is contained in:
6 files changed
+22
-14
No files matched your search
@@ -122,21 +122,21 @@ func (c *cluster) detectCephVersion(rookImage, cephImage string, timeout time.Du
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "failed to extract ceph version")
|
||||
}
|
||||
logger.Infof("Detected ceph image version: %s", version)
|
||||
logger.Infof("Detected ceph image version: %q", version)
|
||||
return version, nil
|
||||
}
|
||||
|
||||
func (c *cluster) validateCephVersion(version *cephver.CephVersion) error {
|
||||
if !c.Spec.External.Enable {
|
||||
if !version.IsAtLeast(cephver.Minimum) {
|
||||
return errors.Errorf("the version does not meet the minimum version: %s", cephver.Minimum.String())
|
||||
return errors.Errorf("the version does not meet the minimum version: %q", cephver.Minimum.String())
|
||||
}
|
||||
|
||||
if !version.Supported() {
|
||||
logger.Warningf("unsupported ceph version detected: %s.", version)
|
||||
if !c.Spec.CephVersion.AllowUnsupported {
|
||||
return errors.Errorf("allowUnsupported must be set to true to run with this version: %+v", version)
|
||||
}
|
||||
logger.Warningf("unsupported ceph version detected: %q, pursuing", version)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -594,6 +594,11 @@ func (c *ClusterController) onUpdate(oldObj, newObj interface{}) {
|
||||
c.osdChecker.Update(newClust.Spec.RemoveOSDsIfOutAndSafeToRemove)
|
||||
}
|
||||
|
||||
logger.Debugf("old cluster: %+v", oldClust.Spec)
|
||||
logger.Debugf("new cluster: %+v", newClust.Spec)
|
||||
|
||||
cluster.Spec = &newClust.Spec
|
||||
|
||||
// if the image changed, we need to detect the new image version
|
||||
versionChanged := false
|
||||
if oldClust.Spec.CephVersion.Image != newClust.Spec.CephVersion.Image {
|
||||
@@ -607,11 +612,6 @@ func (c *ClusterController) onUpdate(oldObj, newObj interface{}) {
|
||||
cluster.Info.CephVersion = *version
|
||||
}
|
||||
|
||||
logger.Debugf("old cluster: %+v", oldClust.Spec)
|
||||
logger.Debugf("new cluster: %+v", newClust.Spec)
|
||||
|
||||
cluster.Spec = &newClust.Spec
|
||||
|
||||
// Get cluster running versions
|
||||
versions, err := client.GetAllCephDaemonVersions(c.context, cluster.Namespace)
|
||||
if err != nil {
|
||||
|
||||
@@ -76,13 +76,19 @@ func (r *ReconcileNode) createOrUpdateCephCrash(node corev1.Node, tolerations []
|
||||
deploymentLabels[string(config.CrashType)] = "crash"
|
||||
deploymentLabels["ceph_daemon_id"] = "crash"
|
||||
|
||||
selectorLabels := map[string]string{
|
||||
corev1.LabelHostname: nodeHostnameLabel,
|
||||
k8sutil.AppAttr: AppName,
|
||||
NodeNameLabel: node.GetName(),
|
||||
}
|
||||
|
||||
nodeSelector := map[string]string{corev1.LabelHostname: nodeHostnameLabel}
|
||||
|
||||
// Deployment selector is immutable so we set this value only if
|
||||
// a new object is going to be created
|
||||
if deploy.ObjectMeta.CreationTimestamp.IsZero() {
|
||||
deploy.Spec.Selector = &metav1.LabelSelector{
|
||||
MatchLabels: deploymentLabels,
|
||||
MatchLabels: selectorLabels,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -178,9 +178,10 @@ func getImageVersion(image string) (*version.CephVersion, bool) {
|
||||
for i := 0; i < getVersionMaxRetries; i++ {
|
||||
cephVersion, ok := version.GetImageVersion(image)
|
||||
if ok {
|
||||
logger.Debugf("ceph version found %+v", cephVersion)
|
||||
return cephVersion, true
|
||||
}
|
||||
<-time.After(getVersionRetryInterval)
|
||||
<-time.After(time.Second * getVersionRetryInterval)
|
||||
}
|
||||
return nil, false
|
||||
}
|
||||
@@ -107,7 +107,7 @@ func cephCSIKeyringCephFSProvisionerCaps() []string {
|
||||
}
|
||||
}
|
||||
|
||||
func createOrUpdateCSISecret(namespace, csiRBDProvisionerSecretKey, csiRBDNodeSecretKey, csiCephFSProvisionerSecretKey, csiCephFSNodeSecretKey string, k *keyring.SecretStore) error {
|
||||
func createOrUpdateCSISecret(namespace, csiRBDProvisionerSecretKey, csiRBDNodeSecretKey, csiCephFSProvisionerSecretKey, csiCephFSNodeSecretKey string, k *keyring.SecretStore, ownerRef *metav1.OwnerReference) error {
|
||||
csiRBDProvisionerSecrets := map[string][]byte{
|
||||
// userID is expected for the rbd provisioner driver
|
||||
"userID": []byte("csi-rbd-provisioner"),
|
||||
@@ -147,6 +147,7 @@ func createOrUpdateCSISecret(namespace, csiRBDProvisionerSecretKey, csiRBDNodeSe
|
||||
Data: secret,
|
||||
Type: k8sutil.RookType,
|
||||
}
|
||||
k8sutil.SetOwnerRef(&s.ObjectMeta, ownerRef)
|
||||
|
||||
// Create Kubernetes Secret
|
||||
err := k.CreateSecret(s)
|
||||
@@ -189,7 +190,7 @@ func CreateCSISecrets(context *clusterd.Context, clusterName string, ownerRef *m
|
||||
}
|
||||
|
||||
// Create or update Kubernetes CSI secret
|
||||
if err := createOrUpdateCSISecret(clusterName, csiRBDProvisionerSecretKey, csiRBDNodeSecretKey, csiCephFSProvisionerSecretKey, csiCephFSNodeSecretKey, k); err != nil {
|
||||
if err := createOrUpdateCSISecret(clusterName, csiRBDProvisionerSecretKey, csiRBDNodeSecretKey, csiCephFSProvisionerSecretKey, csiCephFSNodeSecretKey, k, ownerRef); err != nil {
|
||||
return errors.Wrapf(err, "failed to create kubernetes csi secret")
|
||||
}
|
||||
|
||||
|
||||
@@ -38,8 +38,8 @@ const (
|
||||
func addCephVersionLabel(cephVersion version.CephVersion, labels map[string]string) {
|
||||
// cephVersion.String() returns a string with a space in it, and labels in k8s are limited to
|
||||
// alphanum characters plus '-', '_', '.'
|
||||
labels[CephVersionLabelKey] = fmt.Sprintf("%d.%d.%d",
|
||||
cephVersion.Major, cephVersion.Minor, cephVersion.Extra)
|
||||
labels[CephVersionLabelKey] = fmt.Sprintf("%d.%d.%d-%d",
|
||||
cephVersion.Major, cephVersion.Minor, cephVersion.Extra, cephVersion.Build)
|
||||
}
|
||||
|
||||
// AddCephVersionLabelToDeployment adds a label reporting the Ceph version which Rook has detected is
|
||||
|
||||
Reference in new issue
Block a user