mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-06 10:43:56 +00:00
StatefulSet: Add ControllerRef on all created Pods.
This commit is contained in:
parent
f269e78ebc
commit
b5dfc7b2aa
@ -21,6 +21,7 @@ import (
|
|||||||
"regexp"
|
"regexp"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
podapi "k8s.io/kubernetes/pkg/api/v1/pod"
|
podapi "k8s.io/kubernetes/pkg/api/v1/pod"
|
||||||
apps "k8s.io/kubernetes/pkg/apis/apps/v1beta1"
|
apps "k8s.io/kubernetes/pkg/apis/apps/v1beta1"
|
||||||
@ -230,9 +231,21 @@ func isHealthy(pod *v1.Pod) bool {
|
|||||||
return isRunningAndReady(pod) && !isTerminated(pod)
|
return isRunningAndReady(pod) && !isTerminated(pod)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// newControllerRef returns an ControllerRef pointing to a given StatefulSet.
|
||||||
|
func newControllerRef(set *apps.StatefulSet) *metav1.OwnerReference {
|
||||||
|
isController := true
|
||||||
|
return &metav1.OwnerReference{
|
||||||
|
APIVersion: apps.SchemeGroupVersion.String(),
|
||||||
|
Kind: "StatefulSet",
|
||||||
|
Name: set.Name,
|
||||||
|
UID: set.UID,
|
||||||
|
Controller: &isController,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// newStatefulSetPod returns a new Pod conforming to the set's Spec with an identity generated from ordinal.
|
// newStatefulSetPod returns a new Pod conforming to the set's Spec with an identity generated from ordinal.
|
||||||
func newStatefulSetPod(set *apps.StatefulSet, ordinal int) *v1.Pod {
|
func newStatefulSetPod(set *apps.StatefulSet, ordinal int) *v1.Pod {
|
||||||
pod, _ := controller.GetPodFromTemplate(&set.Spec.Template, set, nil)
|
pod, _ := controller.GetPodFromTemplate(&set.Spec.Template, set, newControllerRef(set))
|
||||||
pod.Name = getPodName(set, ordinal)
|
pod.Name = getPodName(set, ordinal)
|
||||||
updateIdentity(set, pod)
|
updateIdentity(set, pod)
|
||||||
updateStorage(set, pod)
|
updateStorage(set, pod)
|
||||||
|
@ -31,6 +31,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
podapi "k8s.io/kubernetes/pkg/api/v1/pod"
|
podapi "k8s.io/kubernetes/pkg/api/v1/pod"
|
||||||
apps "k8s.io/kubernetes/pkg/apis/apps/v1beta1"
|
apps "k8s.io/kubernetes/pkg/apis/apps/v1beta1"
|
||||||
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestGetParentNameAndOrdinal(t *testing.T) {
|
func TestGetParentNameAndOrdinal(t *testing.T) {
|
||||||
@ -271,6 +272,30 @@ func TestOverlappingStatefulSets(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestNewPodControllerRef(t *testing.T) {
|
||||||
|
set := newStatefulSet(1)
|
||||||
|
pod := newStatefulSetPod(set, 0)
|
||||||
|
controllerRef := controller.GetControllerOf(pod)
|
||||||
|
if controllerRef == nil {
|
||||||
|
t.Fatalf("No ControllerRef found on new pod")
|
||||||
|
}
|
||||||
|
if got, want := controllerRef.APIVersion, apps.SchemeGroupVersion.String(); got != want {
|
||||||
|
t.Errorf("controllerRef.APIVersion = %q, want %q", got, want)
|
||||||
|
}
|
||||||
|
if got, want := controllerRef.Kind, "StatefulSet"; got != want {
|
||||||
|
t.Errorf("controllerRef.Kind = %q, want %q", got, want)
|
||||||
|
}
|
||||||
|
if got, want := controllerRef.Name, set.Name; got != want {
|
||||||
|
t.Errorf("controllerRef.Name = %q, want %q", got, want)
|
||||||
|
}
|
||||||
|
if got, want := controllerRef.UID, set.UID; got != want {
|
||||||
|
t.Errorf("controllerRef.UID = %q, want %q", got, want)
|
||||||
|
}
|
||||||
|
if got, want := *controllerRef.Controller, true; got != want {
|
||||||
|
t.Errorf("controllerRef.Controller = %v, want %v", got, want)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func newPVC(name string) v1.PersistentVolumeClaim {
|
func newPVC(name string) v1.PersistentVolumeClaim {
|
||||||
return v1.PersistentVolumeClaim{
|
return v1.PersistentVolumeClaim{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
|
Loading…
Reference in New Issue
Block a user