-
Notifications
You must be signed in to change notification settings - Fork 39k
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
[1.6] StatefulSet: Set Pod hostname/subdomain fields. #50942
[1.6] StatefulSet: Set Pod hostname/subdomain fields. #50942
Conversation
To prepare for upgrading to 1.7+ in which the hostname/subdomain annotations are removed, we should have started setting the corresponding fields in a prior version.
@@ -80,11 +80,13 @@ func TestIdentityMatches(t *testing.T) { | |||
} | |||
pod = newStatefulSetPod(set, 1) | |||
delete(pod.Annotations, podapi.PodHostnameAnnotation) | |||
pod.Spec.Hostname = "" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Won't the field default to "" anyway?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The field is set during newStatefulSetPod
. This test is intentionally clearing the annotation/field to verify that causes the match to fail.
LGTM |
/approve |
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: enisoc, kow3ns Associated issue: 44137 The full list of commands accepted by this bot can be found here.
Needs approval from an approver in each of these OWNERS Files:
You can indicate your approval by writing |
/retest |
Automatic merge from submit-queue |
Automatic merge from submit-queue. Allow Hostname and Subdomain to be set if empty **What this PR does / why we need it**: This PR allows the Hostname and Subdomain field of v1.PodSpec to be set when empty, and modifies the StatefulSet controller to set them when empty. For #48327: We have merged #50942 to ensure that the Hostname and Subdomain fields are set when a new Pod is created. Users should upgrade to 1.6.9 and perform a rolling restart of all Pods in their StatefulSets to ensure that these fields are set prior to an upgrade to 1.7.5. We have merged #51149 and #51044 to rollback the attempted mutation introduced in #44137. This PR allows the Hostname and Subdomain field to be set exactly once, so that when users fail to read the notes, and encounter this issue, their clusters should self heal (even though they will experience a temporary network disruption for Pods in their StatefulSets.) ```release-note StatefulSet will now fill the `hostname` and `subdomain` fields if they're empty on existing Pods it owns. This allows it to self-correct the issue where StatefulSet Pod DNS entries disappear after upgrading to v1.7.x (#48327). ```
This is a partial, manual cherrypick of #44137 to provide a path to mitigate #48327.
To prepare for upgrading to 1.7+ in which the hostname/subdomain annotations are removed, we should have started setting the corresponding fields in a prior version. Pods that are freshly created by StatefulSet after updating to v1.6.9 will continue to function after upgrading to Kubernetes v1.7.x.