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
d23e3504
Commit
d23e3504
authored
Sep 23, 2015
by
Eric Tune
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #14413 from gmarek/latency-bug
Functionally revert #12894
parents
edb269ba
66ca7fcc
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
18 additions
and
59 deletions
+18
-59
kubelet.go
pkg/kubelet/kubelet.go
+16
-54
kubelet_test.go
pkg/kubelet/kubelet_test.go
+2
-5
No files found.
pkg/kubelet/kubelet.go
View file @
d23e3504
...
@@ -2508,65 +2508,32 @@ func GetPhase(spec *api.PodSpec, info []api.ContainerStatus) api.PodPhase {
...
@@ -2508,65 +2508,32 @@ func GetPhase(spec *api.PodSpec, info []api.ContainerStatus) api.PodPhase {
}
}
}
}
func
readyPodCondition
(
isPodReady
bool
,
reason
,
message
string
,
existingStatus
*
api
.
PodStatus
)
[]
api
.
PodCondition
{
// Disabled LastProbeTime/LastTranitionTime for Pods to avoid constantly sending pod status
currentTime
:=
unversioned
.
Now
()
// update to the apiserver. See http://issues.k8s.io/14273. Functional revert of a PR #12894
condition
:=
api
.
PodCondition
{
Type
:
api
.
PodReady
,
}
if
isPodReady
{
condition
.
Status
=
api
.
ConditionTrue
}
else
{
condition
.
Status
=
api
.
ConditionFalse
}
condition
.
LastProbeTime
=
currentTime
condition
.
Reason
=
reason
condition
.
Message
=
message
if
existingStatus
!=
nil
{
if
api
.
IsPodReadyConditionTrue
(
*
existingStatus
)
!=
isPodReady
{
// condition has transitioned, update transition time.
condition
.
LastTransitionTime
=
currentTime
}
else
{
// retain the existing transition time.
existingCondition
:=
api
.
GetPodReadyCondition
(
*
existingStatus
)
if
existingCondition
!=
nil
{
condition
.
LastTransitionTime
=
existingCondition
.
LastTransitionTime
}
}
}
return
[]
api
.
PodCondition
{
condition
}
}
// getPodReadyCondition returns ready condition if all containers in a pod are ready, else it returns an unready condition.
// getPodReadyCondition returns ready condition if all containers in a pod are ready, else it returns an unready condition.
func
getPodReadyCondition
(
spec
*
api
.
PodSpec
,
containerStatuses
[]
api
.
ContainerStatus
,
existingStatus
*
api
.
PodStatus
)
[]
api
.
PodCondition
{
func
getPodReadyCondition
(
spec
*
api
.
PodSpec
,
containerStatuses
[]
api
.
ContainerStatus
,
existingStatus
*
api
.
PodStatus
)
[]
api
.
PodCondition
{
// Find if all containers are ready or not.
ready
:=
[]
api
.
PodCondition
{{
Type
:
api
.
PodReady
,
Status
:
api
.
ConditionTrue
,
}}
notReady
:=
[]
api
.
PodCondition
{{
Type
:
api
.
PodReady
,
Status
:
api
.
ConditionFalse
,
}}
if
containerStatuses
==
nil
{
if
containerStatuses
==
nil
{
return
readyPodCondition
(
false
,
"UnknownContainerStatuses"
,
""
,
existingStatus
)
return
notReady
}
}
unknownContainers
:=
[]
string
{}
unreadyContainers
:=
[]
string
{}
for
_
,
container
:=
range
spec
.
Containers
{
for
_
,
container
:=
range
spec
.
Containers
{
if
containerStatus
,
ok
:=
api
.
GetContainerStatus
(
containerStatuses
,
container
.
Name
);
ok
{
if
containerStatus
,
ok
:=
api
.
GetContainerStatus
(
containerStatuses
,
container
.
Name
);
ok
{
if
!
containerStatus
.
Ready
{
if
!
containerStatus
.
Ready
{
unreadyContainers
=
append
(
unreadyContainers
,
container
.
Name
)
return
notReady
}
}
}
else
{
}
else
{
unknownContainers
=
append
(
unknownContainers
,
container
.
Name
)
return
notReady
}
}
}
}
unreadyMessages
:=
[]
string
{}
return
ready
if
len
(
unknownContainers
)
>
0
{
unreadyMessages
=
append
(
unreadyMessages
,
fmt
.
Sprintf
(
"containers with unknown status: %s"
,
unknownContainers
))
}
if
len
(
unreadyContainers
)
>
0
{
unreadyMessages
=
append
(
unreadyMessages
,
fmt
.
Sprintf
(
"containers with unready status: %s"
,
unreadyContainers
))
}
unreadyMessage
:=
strings
.
Join
(
unreadyMessages
,
", "
)
if
unreadyMessage
!=
""
{
// return unready status.
return
readyPodCondition
(
false
,
fmt
.
Sprint
(
"ContainersNotReady"
),
unreadyMessage
,
existingStatus
)
}
// return ready status.
return
readyPodCondition
(
true
,
""
,
""
,
existingStatus
)
}
}
// By passing the pod directly, this method avoids pod lookup, which requires
// By passing the pod directly, this method avoids pod lookup, which requires
...
@@ -2580,8 +2547,7 @@ func (kl *Kubelet) generatePodStatus(pod *api.Pod) (api.PodStatus, error) {
...
@@ -2580,8 +2547,7 @@ func (kl *Kubelet) generatePodStatus(pod *api.Pod) (api.PodStatus, error) {
podFullName
:=
kubecontainer
.
GetPodFullName
(
pod
)
podFullName
:=
kubecontainer
.
GetPodFullName
(
pod
)
glog
.
V
(
3
)
.
Infof
(
"Generating status for %q"
,
podFullName
)
glog
.
V
(
3
)
.
Infof
(
"Generating status for %q"
,
podFullName
)
existingStatus
,
hasExistingStatus
:=
kl
.
statusManager
.
GetPodStatus
(
pod
.
UID
)
if
existingStatus
,
hasExistingStatus
:=
kl
.
statusManager
.
GetPodStatus
(
pod
.
UID
);
hasExistingStatus
{
if
hasExistingStatus
{
// This is a hacky fix to ensure container restart counts increment
// This is a hacky fix to ensure container restart counts increment
// monotonically. Normally, we should not modify given pod. In this
// monotonically. Normally, we should not modify given pod. In this
// case, we check if there are cached status for this pod, and update
// case, we check if there are cached status for this pod, and update
...
@@ -2633,11 +2599,7 @@ func (kl *Kubelet) generatePodStatus(pod *api.Pod) (api.PodStatus, error) {
...
@@ -2633,11 +2599,7 @@ func (kl *Kubelet) generatePodStatus(pod *api.Pod) (api.PodStatus, error) {
}
}
}
}
}
}
if
hasExistingStatus
{
podStatus
.
Conditions
=
append
(
podStatus
.
Conditions
,
getPodReadyCondition
(
spec
,
podStatus
.
ContainerStatuses
,
nil
/* unused */
)
...
)
podStatus
.
Conditions
=
append
(
podStatus
.
Conditions
,
getPodReadyCondition
(
spec
,
podStatus
.
ContainerStatuses
,
&
existingStatus
)
...
)
}
else
{
podStatus
.
Conditions
=
append
(
podStatus
.
Conditions
,
getPodReadyCondition
(
spec
,
podStatus
.
ContainerStatuses
,
nil
)
...
)
}
if
!
kl
.
standaloneMode
{
if
!
kl
.
standaloneMode
{
hostIP
,
err
:=
kl
.
GetHostIP
()
hostIP
,
err
:=
kl
.
GetHostIP
()
...
...
pkg/kubelet/kubelet_test.go
View file @
d23e3504
...
@@ -1757,11 +1757,8 @@ func getNotReadyStatus(cName string) api.ContainerStatus {
...
@@ -1757,11 +1757,8 @@ func getNotReadyStatus(cName string) api.ContainerStatus {
}
}
func
getReadyCondition
(
status
api
.
ConditionStatus
,
transitionTime
unversioned
.
Time
,
reason
,
message
string
)
[]
api
.
PodCondition
{
func
getReadyCondition
(
status
api
.
ConditionStatus
,
transitionTime
unversioned
.
Time
,
reason
,
message
string
)
[]
api
.
PodCondition
{
return
[]
api
.
PodCondition
{{
return
[]
api
.
PodCondition
{{
Type
:
api
.
PodReady
,
Type
:
api
.
PodReady
,
Status
:
status
,
Status
:
status
,
LastTransitionTime
:
transitionTime
,
Reason
:
reason
,
Message
:
message
,
}}
}}
}
}
...
...
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