Re: [kubernetes/kubernetes] etcd error in cluster downgrade: membership: cluster cannot be downgraded (current version: 3.0.17 is lower than determined cluster version: 3.1). (#54027)

348 views
Skip to first unread message

Zihong Zheng

unread,
Oct 16, 2017, 8:12:22 PM10/16/17
to kubernetes/kubernetes, k8s-mirror-api-machinery-test-failures, Team mention

@kubernetes/sig-api-machinery-test-failures
/area etcd


You are receiving this because you are on a team that was mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

Zihong Zheng

unread,
Oct 16, 2017, 8:14:20 PM10/16/17
to kubernetes/kubernetes, k8s-mirror-api-machinery-test-failures, Team mention

Jing Ai

unread,
Oct 17, 2017, 2:17:27 PM10/17/17
to kubernetes/kubernetes, k8s-mirror-api-machinery-test-failures, Team mention

I investigated the issue a bit.

The etcd version for a k8s release is packed in cluster/saltbase/salt/etcd/etcd.manifest, e.g., the one from HEAD.

"env": [
{ "name": "TARGET_STORAGE",
"value": "{{ pillar.get('storage_backend', 'etcd3') }}"
},
{ "name": "TARGET_VERSION",
"value": "{{ pillar.get('etcd_version', '3.1.10') }}"
},
{ "name": "DATA_DIRECTORY",
"value": "/var/etcd/data{{ suffix }}"
}
],

On the other hand, etcd (https://github.com/coreos/etcd/blob/master/etcdserver/membership/cluster.go) has the following logic to detect downgrade. In case it happens, it will trigger a fatal error and log.

func mustDetectDowngrade(cv *semver.Version) {
lv := semver.Must(semver.NewVersion(version.Version))
// only keep major.minor version for comparison against cluster version
lv = &semver.Version{Major: lv.Major, Minor: lv.Minor}
if cv != nil && lv.LessThan(*cv) {
plog.Fatalf("cluster cannot be downgraded (current version: %s is lower than determined cluster version: %s).", version.Version, version.Cluster(cv.String()))
}
}

It sounds that it hits a lower version of etcd for the test.

Given this, I found etcd version was bumped up from 3.0.17 to 3.1.10 on 10/02/2017 (39e5a56#diff-0fa055cac191706bf4aff2385d1bc750). However it is not in any tagged k8s release yet.

cmluciano

unread,
Oct 30, 2017, 10:08:22 AM10/30/17
to kubernetes/kubernetes, k8s-mirror-api-machinery-test-failures, Team mention

Peter (XiangPeng) Zhao

unread,
Dec 10, 2017, 10:19:24 PM12/10/17
to kubernetes/kubernetes, k8s-mirror-api-machinery-test-failures, Team mention

Also encountered this in #57013.
@jingax10 did you mean that downgrade etcd from 3.1.x to 3.0.x is not allowed?

Joe Betz

unread,
Dec 11, 2017, 1:21:22 PM12/11/17
to kubernetes/kubernetes, k8s-mirror-api-machinery-test-failures, Team mention

Zihong Zheng

unread,
Dec 11, 2017, 1:31:41 PM12/11/17
to kubernetes/kubernetes, k8s-mirror-api-machinery-test-failures, Team mention

Closed #54027.

Zihong Zheng

unread,
Dec 11, 2017, 1:31:47 PM12/11/17
to kubernetes/kubernetes, k8s-mirror-api-machinery-test-failures, Team mention

Thanks all, let's use #57013 for tracking. Closing this.

Reply all
Reply to author
Forward
0 new messages