Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
f6af1904
Commit
f6af1904
authored
Nov 09, 2017
by
Tomas Nozicka
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Make StatefulSet report an event when recreating failed pod
parent
33f873db
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
16 additions
and
6 deletions
+16
-6
stateful_set.go
pkg/controller/statefulset/stateful_set.go
+1
-0
stateful_set_control.go
pkg/controller/statefulset/stateful_set_control.go
+7
-3
stateful_set_control_test.go
pkg/controller/statefulset/stateful_set_control_test.go
+5
-2
stateful_set_test.go
pkg/controller/statefulset/stateful_set_test.go
+3
-1
No files found.
pkg/controller/statefulset/stateful_set.go
View file @
f6af1904
...
@@ -99,6 +99,7 @@ func NewStatefulSetController(
...
@@ -99,6 +99,7 @@ func NewStatefulSetController(
recorder
),
recorder
),
NewRealStatefulSetStatusUpdater
(
kubeClient
,
setInformer
.
Lister
()),
NewRealStatefulSetStatusUpdater
(
kubeClient
,
setInformer
.
Lister
()),
history
.
NewHistory
(
kubeClient
,
revInformer
.
Lister
()),
history
.
NewHistory
(
kubeClient
,
revInformer
.
Lister
()),
recorder
,
),
),
pvcListerSynced
:
pvcInformer
.
Informer
()
.
HasSynced
,
pvcListerSynced
:
pvcInformer
.
Informer
()
.
HasSynced
,
queue
:
workqueue
.
NewNamedRateLimitingQueue
(
workqueue
.
DefaultControllerRateLimiter
(),
"statefulset"
),
queue
:
workqueue
.
NewNamedRateLimitingQueue
(
workqueue
.
DefaultControllerRateLimiter
(),
"statefulset"
),
...
...
pkg/controller/statefulset/stateful_set_control.go
View file @
f6af1904
...
@@ -25,6 +25,7 @@ import (
...
@@ -25,6 +25,7 @@ import (
apps
"k8s.io/api/apps/v1beta1"
apps
"k8s.io/api/apps/v1beta1"
"k8s.io/api/core/v1"
"k8s.io/api/core/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/tools/record"
"k8s.io/kubernetes/pkg/controller/history"
"k8s.io/kubernetes/pkg/controller/history"
)
)
...
@@ -53,14 +54,16 @@ type StatefulSetControlInterface interface {
...
@@ -53,14 +54,16 @@ type StatefulSetControlInterface interface {
func
NewDefaultStatefulSetControl
(
func
NewDefaultStatefulSetControl
(
podControl
StatefulPodControlInterface
,
podControl
StatefulPodControlInterface
,
statusUpdater
StatefulSetStatusUpdaterInterface
,
statusUpdater
StatefulSetStatusUpdaterInterface
,
controllerHistory
history
.
Interface
)
StatefulSetControlInterface
{
controllerHistory
history
.
Interface
,
return
&
defaultStatefulSetControl
{
podControl
,
statusUpdater
,
controllerHistory
}
recorder
record
.
EventRecorder
)
StatefulSetControlInterface
{
return
&
defaultStatefulSetControl
{
podControl
,
statusUpdater
,
controllerHistory
,
recorder
}
}
}
type
defaultStatefulSetControl
struct
{
type
defaultStatefulSetControl
struct
{
podControl
StatefulPodControlInterface
podControl
StatefulPodControlInterface
statusUpdater
StatefulSetStatusUpdaterInterface
statusUpdater
StatefulSetStatusUpdaterInterface
controllerHistory
history
.
Interface
controllerHistory
history
.
Interface
recorder
record
.
EventRecorder
}
}
// UpdateStatefulSet executes the core logic loop for a stateful set, applying the predictable and
// UpdateStatefulSet executes the core logic loop for a stateful set, applying the predictable and
...
@@ -367,7 +370,8 @@ func (ssc *defaultStatefulSetControl) updateStatefulSet(
...
@@ -367,7 +370,8 @@ func (ssc *defaultStatefulSetControl) updateStatefulSet(
for
i
:=
range
replicas
{
for
i
:=
range
replicas
{
// delete and recreate failed pods
// delete and recreate failed pods
if
isFailed
(
replicas
[
i
])
{
if
isFailed
(
replicas
[
i
])
{
glog
.
V
(
4
)
.
Infof
(
"StatefulSet %s/%s is recreating failed Pod %s"
,
ssc
.
recorder
.
Eventf
(
set
,
v1
.
EventTypeWarning
,
"RecreatingFailedPod"
,
"StatefulSet %s/%s is recreating failed Pod %s"
,
set
.
Namespace
,
set
.
Namespace
,
set
.
Name
,
set
.
Name
,
replicas
[
i
]
.
Name
)
replicas
[
i
]
.
Name
)
...
...
pkg/controller/statefulset/stateful_set_control_test.go
View file @
f6af1904
...
@@ -41,6 +41,7 @@ import (
...
@@ -41,6 +41,7 @@ import (
appslisters
"k8s.io/client-go/listers/apps/v1beta1"
appslisters
"k8s.io/client-go/listers/apps/v1beta1"
corelisters
"k8s.io/client-go/listers/core/v1"
corelisters
"k8s.io/client-go/listers/core/v1"
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/tools/record"
podutil
"k8s.io/kubernetes/pkg/api/v1/pod"
podutil
"k8s.io/kubernetes/pkg/api/v1/pod"
"k8s.io/kubernetes/pkg/controller"
"k8s.io/kubernetes/pkg/controller"
"k8s.io/kubernetes/pkg/controller/history"
"k8s.io/kubernetes/pkg/controller/history"
...
@@ -52,7 +53,8 @@ func setupController(client clientset.Interface) (*fakeStatefulPodControl, *fake
...
@@ -52,7 +53,8 @@ func setupController(client clientset.Interface) (*fakeStatefulPodControl, *fake
informerFactory
:=
informers
.
NewSharedInformerFactory
(
client
,
controller
.
NoResyncPeriodFunc
())
informerFactory
:=
informers
.
NewSharedInformerFactory
(
client
,
controller
.
NoResyncPeriodFunc
())
spc
:=
newFakeStatefulPodControl
(
informerFactory
.
Core
()
.
V1
()
.
Pods
(),
informerFactory
.
Apps
()
.
V1beta1
()
.
StatefulSets
())
spc
:=
newFakeStatefulPodControl
(
informerFactory
.
Core
()
.
V1
()
.
Pods
(),
informerFactory
.
Apps
()
.
V1beta1
()
.
StatefulSets
())
ssu
:=
newFakeStatefulSetStatusUpdater
(
informerFactory
.
Apps
()
.
V1beta1
()
.
StatefulSets
())
ssu
:=
newFakeStatefulSetStatusUpdater
(
informerFactory
.
Apps
()
.
V1beta1
()
.
StatefulSets
())
ssc
:=
NewDefaultStatefulSetControl
(
spc
,
ssu
,
history
.
NewFakeHistory
(
informerFactory
.
Apps
()
.
V1beta1
()
.
ControllerRevisions
()))
recorder
:=
record
.
NewFakeRecorder
(
10
)
ssc
:=
NewDefaultStatefulSetControl
(
spc
,
ssu
,
history
.
NewFakeHistory
(
informerFactory
.
Apps
()
.
V1beta1
()
.
ControllerRevisions
()),
recorder
)
stop
:=
make
(
chan
struct
{})
stop
:=
make
(
chan
struct
{})
informerFactory
.
Start
(
stop
)
informerFactory
.
Start
(
stop
)
...
@@ -452,7 +454,8 @@ func TestStatefulSetControl_getSetRevisions(t *testing.T) {
...
@@ -452,7 +454,8 @@ func TestStatefulSetControl_getSetRevisions(t *testing.T) {
informerFactory
:=
informers
.
NewSharedInformerFactory
(
client
,
controller
.
NoResyncPeriodFunc
())
informerFactory
:=
informers
.
NewSharedInformerFactory
(
client
,
controller
.
NoResyncPeriodFunc
())
spc
:=
newFakeStatefulPodControl
(
informerFactory
.
Core
()
.
V1
()
.
Pods
(),
informerFactory
.
Apps
()
.
V1beta1
()
.
StatefulSets
())
spc
:=
newFakeStatefulPodControl
(
informerFactory
.
Core
()
.
V1
()
.
Pods
(),
informerFactory
.
Apps
()
.
V1beta1
()
.
StatefulSets
())
ssu
:=
newFakeStatefulSetStatusUpdater
(
informerFactory
.
Apps
()
.
V1beta1
()
.
StatefulSets
())
ssu
:=
newFakeStatefulSetStatusUpdater
(
informerFactory
.
Apps
()
.
V1beta1
()
.
StatefulSets
())
ssc
:=
defaultStatefulSetControl
{
spc
,
ssu
,
history
.
NewFakeHistory
(
informerFactory
.
Apps
()
.
V1beta1
()
.
ControllerRevisions
())}
recorder
:=
record
.
NewFakeRecorder
(
10
)
ssc
:=
defaultStatefulSetControl
{
spc
,
ssu
,
history
.
NewFakeHistory
(
informerFactory
.
Apps
()
.
V1beta1
()
.
ControllerRevisions
()),
recorder
}
stop
:=
make
(
chan
struct
{})
stop
:=
make
(
chan
struct
{})
defer
close
(
stop
)
defer
close
(
stop
)
...
...
pkg/controller/statefulset/stateful_set_test.go
View file @
f6af1904
...
@@ -28,6 +28,7 @@ import (
...
@@ -28,6 +28,7 @@ import (
"k8s.io/client-go/informers"
"k8s.io/client-go/informers"
"k8s.io/client-go/kubernetes/fake"
"k8s.io/client-go/kubernetes/fake"
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/tools/record"
"k8s.io/kubernetes/pkg/controller"
"k8s.io/kubernetes/pkg/controller"
"k8s.io/kubernetes/pkg/controller/history"
"k8s.io/kubernetes/pkg/controller/history"
)
)
...
@@ -585,7 +586,8 @@ func newFakeStatefulSetController(initialObjects ...runtime.Object) (*StatefulSe
...
@@ -585,7 +586,8 @@ func newFakeStatefulSetController(initialObjects ...runtime.Object) (*StatefulSe
ssh
:=
history
.
NewFakeHistory
(
informerFactory
.
Apps
()
.
V1beta1
()
.
ControllerRevisions
())
ssh
:=
history
.
NewFakeHistory
(
informerFactory
.
Apps
()
.
V1beta1
()
.
ControllerRevisions
())
ssc
.
podListerSynced
=
alwaysReady
ssc
.
podListerSynced
=
alwaysReady
ssc
.
setListerSynced
=
alwaysReady
ssc
.
setListerSynced
=
alwaysReady
ssc
.
control
=
NewDefaultStatefulSetControl
(
fpc
,
ssu
,
ssh
)
recorder
:=
record
.
NewFakeRecorder
(
10
)
ssc
.
control
=
NewDefaultStatefulSetControl
(
fpc
,
ssu
,
ssh
,
recorder
)
return
ssc
,
fpc
return
ssc
,
fpc
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment