mirror of
https://github.com/ceph/ceph-csi.git
synced 2025-06-14 18:53:35 +00:00
Fresh dep ensure
This commit is contained in:
16
vendor/k8s.io/kubernetes/pkg/kubelet/pleg/BUILD
generated
vendored
16
vendor/k8s.io/kubernetes/pkg/kubelet/pleg/BUILD
generated
vendored
@ -18,11 +18,11 @@ go_library(
|
||||
"//pkg/kubelet/apis/cri/runtime/v1alpha2:go_default_library",
|
||||
"//pkg/kubelet/container:go_default_library",
|
||||
"//pkg/kubelet/metrics:go_default_library",
|
||||
"//vendor/github.com/golang/glog:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library",
|
||||
"//vendor/k8s.io/klog:go_default_library",
|
||||
],
|
||||
)
|
||||
|
||||
@ -33,10 +33,10 @@ go_test(
|
||||
deps = [
|
||||
"//pkg/kubelet/container:go_default_library",
|
||||
"//pkg/kubelet/container/testing:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library",
|
||||
"//vendor/github.com/stretchr/testify/assert:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library",
|
||||
],
|
||||
)
|
||||
|
||||
|
26
vendor/k8s.io/kubernetes/pkg/kubelet/pleg/generic.go
generated
vendored
26
vendor/k8s.io/kubernetes/pkg/kubelet/pleg/generic.go
generated
vendored
@ -21,11 +21,11 @@ import (
|
||||
"sync/atomic"
|
||||
"time"
|
||||
|
||||
"github.com/golang/glog"
|
||||
"k8s.io/apimachinery/pkg/types"
|
||||
"k8s.io/apimachinery/pkg/util/clock"
|
||||
"k8s.io/apimachinery/pkg/util/sets"
|
||||
"k8s.io/apimachinery/pkg/util/wait"
|
||||
"k8s.io/klog"
|
||||
runtimeapi "k8s.io/kubernetes/pkg/kubelet/apis/cri/runtime/v1alpha2"
|
||||
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
|
||||
"k8s.io/kubernetes/pkg/kubelet/metrics"
|
||||
@ -106,6 +106,7 @@ type podRecord struct {
|
||||
|
||||
type podRecords map[types.UID]*podRecord
|
||||
|
||||
// NewGenericPLEG instantiates a new GenericPLEG object and return it.
|
||||
func NewGenericPLEG(runtime kubecontainer.Runtime, channelCapacity int,
|
||||
relistPeriod time.Duration, cache kubecontainer.Cache, clock clock.Clock) PodLifecycleEventGenerator {
|
||||
return &GenericPLEG{
|
||||
@ -118,7 +119,7 @@ func NewGenericPLEG(runtime kubecontainer.Runtime, channelCapacity int,
|
||||
}
|
||||
}
|
||||
|
||||
// Returns a channel from which the subscriber can receive PodLifecycleEvent
|
||||
// Watch returns a channel from which the subscriber can receive PodLifecycleEvent
|
||||
// events.
|
||||
// TODO: support multiple subscribers.
|
||||
func (g *GenericPLEG) Watch() chan *PodLifecycleEvent {
|
||||
@ -130,8 +131,13 @@ func (g *GenericPLEG) Start() {
|
||||
go wait.Until(g.relist, g.relistPeriod, wait.NeverStop)
|
||||
}
|
||||
|
||||
// Healthy check if PLEG work properly.
|
||||
// relistThreshold is the maximum interval between two relist.
|
||||
func (g *GenericPLEG) Healthy() (bool, error) {
|
||||
relistTime := g.getRelistTime()
|
||||
if relistTime.IsZero() {
|
||||
return false, fmt.Errorf("pleg has yet to be successful")
|
||||
}
|
||||
elapsed := g.clock.Since(relistTime)
|
||||
if elapsed > relistThreshold {
|
||||
return false, fmt.Errorf("pleg was last seen active %v ago; threshold is %v", elapsed, relistThreshold)
|
||||
@ -144,7 +150,7 @@ func generateEvents(podID types.UID, cid string, oldState, newState plegContaine
|
||||
return nil
|
||||
}
|
||||
|
||||
glog.V(4).Infof("GenericPLEG: %v/%v: %v -> %v", podID, cid, oldState, newState)
|
||||
klog.V(4).Infof("GenericPLEG: %v/%v: %v -> %v", podID, cid, oldState, newState)
|
||||
switch newState {
|
||||
case plegContainerRunning:
|
||||
return []*PodLifecycleEvent{{ID: podID, Type: ContainerStarted, Data: cid}}
|
||||
@ -180,7 +186,7 @@ func (g *GenericPLEG) updateRelistTime(timestamp time.Time) {
|
||||
// relist queries the container runtime for list of pods/containers, compare
|
||||
// with the internal pods/containers, and generates events accordingly.
|
||||
func (g *GenericPLEG) relist() {
|
||||
glog.V(5).Infof("GenericPLEG: Relisting")
|
||||
klog.V(5).Infof("GenericPLEG: Relisting")
|
||||
|
||||
if lastRelistTime := g.getRelistTime(); !lastRelistTime.IsZero() {
|
||||
metrics.PLEGRelistInterval.Observe(metrics.SinceInMicroseconds(lastRelistTime))
|
||||
@ -194,7 +200,7 @@ func (g *GenericPLEG) relist() {
|
||||
// Get all the pods.
|
||||
podList, err := g.runtime.GetPods(true)
|
||||
if err != nil {
|
||||
glog.Errorf("GenericPLEG: Unable to retrieve pods: %v", err)
|
||||
klog.Errorf("GenericPLEG: Unable to retrieve pods: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
@ -238,7 +244,7 @@ func (g *GenericPLEG) relist() {
|
||||
// serially may take a while. We should be aware of this and
|
||||
// parallelize if needed.
|
||||
if err := g.updateCache(pod, pid); err != nil {
|
||||
glog.Errorf("PLEG: Ignoring events for pod %s/%s: %v", pod.Name, pod.Namespace, err)
|
||||
klog.Errorf("PLEG: Ignoring events for pod %s/%s: %v", pod.Name, pod.Namespace, err)
|
||||
|
||||
// make sure we try to reinspect the pod during the next relisting
|
||||
needsReinspection[pid] = pod
|
||||
@ -265,10 +271,10 @@ func (g *GenericPLEG) relist() {
|
||||
if g.cacheEnabled() {
|
||||
// reinspect any pods that failed inspection during the previous relist
|
||||
if len(g.podsToReinspect) > 0 {
|
||||
glog.V(5).Infof("GenericPLEG: Reinspecting pods that previously failed inspection")
|
||||
klog.V(5).Infof("GenericPLEG: Reinspecting pods that previously failed inspection")
|
||||
for pid, pod := range g.podsToReinspect {
|
||||
if err := g.updateCache(pod, pid); err != nil {
|
||||
glog.Errorf("PLEG: pod %s/%s failed reinspection: %v", pod.Name, pod.Namespace, err)
|
||||
klog.Errorf("PLEG: pod %s/%s failed reinspection: %v", pod.Name, pod.Namespace, err)
|
||||
needsReinspection[pid] = pod
|
||||
}
|
||||
}
|
||||
@ -368,7 +374,7 @@ func (g *GenericPLEG) updateCache(pod *kubecontainer.Pod, pid types.UID) error {
|
||||
if pod == nil {
|
||||
// The pod is missing in the current relist. This means that
|
||||
// the pod has no visible (active or inactive) containers.
|
||||
glog.V(4).Infof("PLEG: Delete status for pod %q", string(pid))
|
||||
klog.V(4).Infof("PLEG: Delete status for pod %q", string(pid))
|
||||
g.cache.Delete(pid)
|
||||
return nil
|
||||
}
|
||||
@ -377,7 +383,7 @@ func (g *GenericPLEG) updateCache(pod *kubecontainer.Pod, pid types.UID) error {
|
||||
// GetPodStatus(pod *kubecontainer.Pod) so that Docker can avoid listing
|
||||
// all containers again.
|
||||
status, err := g.runtime.GetPodStatus(pod.ID, pod.Name, pod.Namespace)
|
||||
glog.V(4).Infof("PLEG: Write status for %s/%s: %#v (err: %v)", pod.Name, pod.Namespace, status, err)
|
||||
klog.V(4).Infof("PLEG: Write status for %s/%s: %#v (err: %v)", pod.Name, pod.Namespace, status, err)
|
||||
if err == nil {
|
||||
// Preserve the pod IP across cache updates if the new IP is empty.
|
||||
// When a pod is torn down, kubelet may race with PLEG and retrieve
|
||||
|
10
vendor/k8s.io/kubernetes/pkg/kubelet/pleg/generic_test.go
generated
vendored
10
vendor/k8s.io/kubernetes/pkg/kubelet/pleg/generic_test.go
generated
vendored
@ -346,9 +346,11 @@ func TestRemoveCacheEntry(t *testing.T) {
|
||||
|
||||
func TestHealthy(t *testing.T) {
|
||||
testPleg := newTestGenericPLEG()
|
||||
|
||||
// pleg should initially be unhealthy
|
||||
pleg, _, clock := testPleg.pleg, testPleg.runtime, testPleg.clock
|
||||
ok, _ := pleg.Healthy()
|
||||
assert.True(t, ok, "pleg should be healthy")
|
||||
assert.False(t, ok, "pleg should be unhealthy")
|
||||
|
||||
// Advance the clock without any relisting.
|
||||
clock.Step(time.Minute * 10)
|
||||
@ -361,6 +363,12 @@ func TestHealthy(t *testing.T) {
|
||||
clock.Step(time.Minute * 1)
|
||||
ok, _ = pleg.Healthy()
|
||||
assert.True(t, ok, "pleg should be healthy")
|
||||
|
||||
// Advance by relistThreshold without any relisting. pleg should be unhealthy
|
||||
// because it has been longer than relistThreshold since a relist occurred.
|
||||
clock.Step(relistThreshold)
|
||||
ok, _ = pleg.Healthy()
|
||||
assert.False(t, ok, "pleg should be unhealthy")
|
||||
}
|
||||
|
||||
func TestRelistWithReinspection(t *testing.T) {
|
||||
|
9
vendor/k8s.io/kubernetes/pkg/kubelet/pleg/pleg.go
generated
vendored
9
vendor/k8s.io/kubernetes/pkg/kubelet/pleg/pleg.go
generated
vendored
@ -20,16 +20,20 @@ import (
|
||||
"k8s.io/apimachinery/pkg/types"
|
||||
)
|
||||
|
||||
// PodLifeCycleEventType define the event type of pod life cycle events.
|
||||
type PodLifeCycleEventType string
|
||||
|
||||
const (
|
||||
// ContainerStarted - event type when the new state of container is running.
|
||||
ContainerStarted PodLifeCycleEventType = "ContainerStarted"
|
||||
ContainerDied PodLifeCycleEventType = "ContainerDied"
|
||||
// ContainerDied - event type when the new state of container is exited.
|
||||
ContainerDied PodLifeCycleEventType = "ContainerDied"
|
||||
// ContainerRemoved - event type when the old state of container is exited.
|
||||
ContainerRemoved PodLifeCycleEventType = "ContainerRemoved"
|
||||
// PodSync is used to trigger syncing of a pod when the observed change of
|
||||
// the state of the pod cannot be captured by any single event above.
|
||||
PodSync PodLifeCycleEventType = "PodSync"
|
||||
// Do not use the events below because they are disabled in GenericPLEG.
|
||||
// ContainerChanged - event type when the new state of container is unknown.
|
||||
ContainerChanged PodLifeCycleEventType = "ContainerChanged"
|
||||
)
|
||||
|
||||
@ -45,6 +49,7 @@ type PodLifecycleEvent struct {
|
||||
Data interface{}
|
||||
}
|
||||
|
||||
// PodLifecycleEventGenerator contains functions for generating pod life cycle events.
|
||||
type PodLifecycleEventGenerator interface {
|
||||
Start()
|
||||
Watch() chan *PodLifecycleEvent
|
||||
|
Reference in New Issue
Block a user