mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-29 14:37:00 +00:00
Merge pull request #35739 from foxish/migrating-the-annotation
Automatic merge from submit-queue Making the pod.alpha.kubernetes.io/initialized annotation optional in PetSet pods **What this PR does / why we need it**: As of now, the absence of the annotation `pod.alpha.kubernetes.io/initialized` in PetSets causes the PetSet controller to effectively "pause". Being a debug hook, users expect that its absence has no effect on the working of a PetSet. This PR inverts the logic so that we let the PetSet controller operate as expected in the absence of the annotation. Letting the annotation remain alpha seems ok. Renaming it to something more meaningful needs further discussion. **Which issue this PR fixes** _(optional, in `fixes #<issue number>(, #<issue_number>, ...)` format, will close that issue when PR gets merged)_: fixes https://github.com/kubernetes/kubernetes/issues/35498 **Special notes for your reviewer**: **Release note**: ``` release-note The annotation "pod.alpha.kubernetes.io/initialized" on StatefulSets (formerly PetSets) is now optional and only encouraged for debug use. ``` cc @erictune @smarterclayton @bprashanth @kubernetes/sig-apps @kow3ns The examples will need to be cleaned up as well I think later on to remove them.
This commit is contained in:
commit
49f1aa0632
@ -297,22 +297,25 @@ type petHealthChecker interface {
|
||||
// It doesn't update, probe or get the pod.
|
||||
type defaultPetHealthChecker struct{}
|
||||
|
||||
// isHealthy returns true if the pod is running and has the
|
||||
// "pod.alpha.kubernetes.io/initialized" set to "true".
|
||||
// isHealthy returns true if the pod is ready & running. If the pod has the
|
||||
// "pod.alpha.kubernetes.io/initialized" annotation set to "false", pod state is ignored.
|
||||
func (d *defaultPetHealthChecker) isHealthy(pod *api.Pod) bool {
|
||||
if pod == nil || pod.Status.Phase != api.PodRunning {
|
||||
return false
|
||||
}
|
||||
podReady := api.IsPodReady(pod)
|
||||
|
||||
// User may have specified a pod readiness override through a debug annotation.
|
||||
initialized, ok := pod.Annotations[StatefulSetInitAnnotation]
|
||||
if !ok {
|
||||
glog.Infof("StatefulSet pod %v in %v, waiting on annotation %v", api.PodRunning, pod.Name, StatefulSetInitAnnotation)
|
||||
return false
|
||||
if ok {
|
||||
if initAnnotation, err := strconv.ParseBool(initialized); err != nil {
|
||||
glog.Infof("Failed to parse %v annotation on pod %v: %v", StatefulSetInitAnnotation, pod.Name, err)
|
||||
} else if !initAnnotation {
|
||||
glog.Infof("StatefulSet pod %v waiting on annotation %v", pod.Name, StatefulSetInitAnnotation)
|
||||
podReady = initAnnotation
|
||||
}
|
||||
}
|
||||
b, err := strconv.ParseBool(initialized)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
return b && api.IsPodReady(pod)
|
||||
return podReady
|
||||
}
|
||||
|
||||
// isDying returns true if the pod has a non-nil deletion timestamp. Since the
|
||||
|
@ -889,6 +889,9 @@ func newStatefulSet(name, ns, governingSvcName string, replicas int32, petMounts
|
||||
ObjectMeta: api.ObjectMeta{
|
||||
Name: name,
|
||||
Namespace: ns,
|
||||
Annotations: map[string]string{
|
||||
"pod.alpha.kubernetes.io/initialized": "false",
|
||||
},
|
||||
},
|
||||
Spec: apps.StatefulSetSpec{
|
||||
Selector: &unversioned.LabelSelector{
|
||||
|
Loading…
Reference in New Issue
Block a user