Merge pull request #4465 from leseb/various-fixes

ceph: various controller and crash fixes
This commit is contained in:
Sébastien Han authored and GitHub committed 2019-12-11 15:26:43 +01:00
commit 8a5aec0df0
6 files changed
+22 -14

No files matched your search

+3 -3
View File
@@ -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)
}
}
+5 -5
View File
@@ -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 {
+7 -1
View File
@@ -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,
}
}
+2 -1
View File
@@ -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
}
+3 -2
View File
@@ -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")
}
+2 -2
View File
@@ -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