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
3ce5a510
Commit
3ce5a510
authored
Oct 26, 2015
by
jiangyaoguo
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
remove implicitly required container event
parent
7a2564da
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
60 additions
and
22 deletions
+60
-22
helpers.go
pkg/kubelet/container/helpers.go
+46
-0
image_puller.go
pkg/kubelet/container/image_puller.go
+1
-1
ref.go
pkg/kubelet/container/ref.go
+3
-1
serialized_image_puller.go
pkg/kubelet/container/serialized_image_puller.go
+1
-1
manager.go
pkg/kubelet/dockertools/manager.go
+7
-15
kubelet.go
pkg/kubelet/kubelet.go
+2
-4
No files found.
pkg/kubelet/container/helpers.go
View file @
3ce5a510
...
@@ -18,8 +18,12 @@ package container
...
@@ -18,8 +18,12 @@ package container
import
(
import
(
"hash/adler32"
"hash/adler32"
"strings"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/unversioned"
"k8s.io/kubernetes/pkg/client/record"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/util"
"k8s.io/kubernetes/pkg/util"
"k8s.io/kubernetes/third_party/golang/expansion"
"k8s.io/kubernetes/third_party/golang/expansion"
...
@@ -104,3 +108,45 @@ func ExpandContainerCommandAndArgs(container *api.Container, envs []EnvVar) (com
...
@@ -104,3 +108,45 @@ func ExpandContainerCommandAndArgs(container *api.Container, envs []EnvVar) (com
return
command
,
args
return
command
,
args
}
}
// Create an event recorder to record object's event except implicitly required container's, like infra container.
func
FilterEventRecorder
(
recorder
record
.
EventRecorder
)
record
.
EventRecorder
{
return
&
innerEventRecorder
{
recorder
:
recorder
,
}
}
type
innerEventRecorder
struct
{
recorder
record
.
EventRecorder
}
func
(
irecorder
*
innerEventRecorder
)
shouldRecordEvent
(
object
runtime
.
Object
)
(
*
api
.
ObjectReference
,
bool
)
{
if
object
==
nil
{
return
nil
,
false
}
if
ref
,
ok
:=
object
.
(
*
api
.
ObjectReference
);
ok
{
if
!
strings
.
HasPrefix
(
ref
.
FieldPath
,
ImplicitContainerPrefix
)
{
return
ref
,
true
}
}
return
nil
,
false
}
func
(
irecorder
*
innerEventRecorder
)
Event
(
object
runtime
.
Object
,
reason
,
message
string
)
{
if
ref
,
ok
:=
irecorder
.
shouldRecordEvent
(
object
);
ok
{
irecorder
.
recorder
.
Event
(
ref
,
reason
,
message
)
}
}
func
(
irecorder
*
innerEventRecorder
)
Eventf
(
object
runtime
.
Object
,
reason
,
messageFmt
string
,
args
...
interface
{})
{
if
ref
,
ok
:=
irecorder
.
shouldRecordEvent
(
object
);
ok
{
irecorder
.
recorder
.
Eventf
(
ref
,
reason
,
messageFmt
,
args
...
)
}
}
func
(
irecorder
*
innerEventRecorder
)
PastEventf
(
object
runtime
.
Object
,
timestamp
unversioned
.
Time
,
reason
,
messageFmt
string
,
args
...
interface
{})
{
if
ref
,
ok
:=
irecorder
.
shouldRecordEvent
(
object
);
ok
{
irecorder
.
recorder
.
PastEventf
(
ref
,
timestamp
,
reason
,
messageFmt
,
args
...
)
}
}
pkg/kubelet/container/image_puller.go
View file @
3ce5a510
...
@@ -65,7 +65,7 @@ func shouldPullImage(container *api.Container, imagePresent bool) bool {
...
@@ -65,7 +65,7 @@ func shouldPullImage(container *api.Container, imagePresent bool) bool {
// records an event using ref, event msg. log to glog using prefix, msg, logFn
// records an event using ref, event msg. log to glog using prefix, msg, logFn
func
(
puller
*
imagePuller
)
logIt
(
ref
*
api
.
ObjectReference
,
event
,
prefix
,
msg
string
,
logFn
func
(
args
...
interface
{}))
{
func
(
puller
*
imagePuller
)
logIt
(
ref
*
api
.
ObjectReference
,
event
,
prefix
,
msg
string
,
logFn
func
(
args
...
interface
{}))
{
if
ref
!=
nil
{
if
ref
!=
nil
{
puller
.
recorder
.
Event
f
(
ref
,
event
,
msg
)
puller
.
recorder
.
Event
(
ref
,
event
,
msg
)
}
else
{
}
else
{
logFn
(
fmt
.
Sprint
(
prefix
,
" "
,
msg
))
logFn
(
fmt
.
Sprint
(
prefix
,
" "
,
msg
))
}
}
...
...
pkg/kubelet/container/ref.go
View file @
3ce5a510
...
@@ -22,6 +22,8 @@ import (
...
@@ -22,6 +22,8 @@ import (
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api"
)
)
var
ImplicitContainerPrefix
string
=
"implicitly required container "
// GenerateContainerRef returns an *api.ObjectReference which references the given container
// GenerateContainerRef returns an *api.ObjectReference which references the given container
// within the given pod. Returns an error if the reference can't be constructed or the
// within the given pod. Returns an error if the reference can't be constructed or the
// container doesn't actually belong to the pod.
// container doesn't actually belong to the pod.
...
@@ -33,7 +35,7 @@ func GenerateContainerRef(pod *api.Pod, container *api.Container) (*api.ObjectRe
...
@@ -33,7 +35,7 @@ func GenerateContainerRef(pod *api.Pod, container *api.Container) (*api.ObjectRe
if
err
!=
nil
{
if
err
!=
nil
{
// TODO: figure out intelligent way to refer to containers that we implicitly
// TODO: figure out intelligent way to refer to containers that we implicitly
// start (like the pod infra container). This is not a good way, ugh.
// start (like the pod infra container). This is not a good way, ugh.
fieldPath
=
"implicitly required container "
+
container
.
Name
fieldPath
=
ImplicitContainerPrefix
+
container
.
Name
}
}
ref
,
err
:=
api
.
GetPartialReference
(
pod
,
fieldPath
)
ref
,
err
:=
api
.
GetPartialReference
(
pod
,
fieldPath
)
if
err
!=
nil
{
if
err
!=
nil
{
...
...
pkg/kubelet/container/serialized_image_puller.go
View file @
3ce5a510
...
@@ -66,7 +66,7 @@ func NewSerializedImagePuller(recorder record.EventRecorder, runtime Runtime, im
...
@@ -66,7 +66,7 @@ func NewSerializedImagePuller(recorder record.EventRecorder, runtime Runtime, im
// records an event using ref, event msg. log to glog using prefix, msg, logFn
// records an event using ref, event msg. log to glog using prefix, msg, logFn
func
(
puller
*
serializedImagePuller
)
logIt
(
ref
*
api
.
ObjectReference
,
event
,
prefix
,
msg
string
,
logFn
func
(
args
...
interface
{}))
{
func
(
puller
*
serializedImagePuller
)
logIt
(
ref
*
api
.
ObjectReference
,
event
,
prefix
,
msg
string
,
logFn
func
(
args
...
interface
{}))
{
if
ref
!=
nil
{
if
ref
!=
nil
{
puller
.
recorder
.
Event
f
(
ref
,
event
,
msg
)
puller
.
recorder
.
Event
(
ref
,
event
,
msg
)
}
else
{
}
else
{
logFn
(
fmt
.
Sprint
(
prefix
,
" "
,
msg
))
logFn
(
fmt
.
Sprint
(
prefix
,
" "
,
msg
))
}
}
...
...
pkg/kubelet/dockertools/manager.go
View file @
3ce5a510
...
@@ -216,9 +216,9 @@ func NewDockerManager(
...
@@ -216,9 +216,9 @@ func NewDockerManager(
}
}
dm
.
runner
=
lifecycle
.
NewHandlerRunner
(
httpClient
,
dm
,
dm
)
dm
.
runner
=
lifecycle
.
NewHandlerRunner
(
httpClient
,
dm
,
dm
)
if
serializeImagePulls
{
if
serializeImagePulls
{
dm
.
imagePuller
=
kubecontainer
.
NewSerializedImagePuller
(
recorder
,
dm
,
imageBackOff
)
dm
.
imagePuller
=
kubecontainer
.
NewSerializedImagePuller
(
kubecontainer
.
FilterEventRecorder
(
recorder
)
,
dm
,
imageBackOff
)
}
else
{
}
else
{
dm
.
imagePuller
=
kubecontainer
.
NewImagePuller
(
recorder
,
dm
,
imageBackOff
)
dm
.
imagePuller
=
kubecontainer
.
NewImagePuller
(
kubecontainer
.
FilterEventRecorder
(
recorder
)
,
dm
,
imageBackOff
)
}
}
dm
.
containerGC
=
NewContainerGC
(
client
,
containerLogsDir
)
dm
.
containerGC
=
NewContainerGC
(
client
,
containerLogsDir
)
...
@@ -766,15 +766,11 @@ func (dm *DockerManager) runContainer(
...
@@ -766,15 +766,11 @@ func (dm *DockerManager) runContainer(
securityContextProvider
.
ModifyContainerConfig
(
pod
,
container
,
dockerOpts
.
Config
)
securityContextProvider
.
ModifyContainerConfig
(
pod
,
container
,
dockerOpts
.
Config
)
dockerContainer
,
err
:=
dm
.
client
.
CreateContainer
(
dockerOpts
)
dockerContainer
,
err
:=
dm
.
client
.
CreateContainer
(
dockerOpts
)
if
err
!=
nil
{
if
err
!=
nil
{
if
ref
!=
nil
{
dm
.
recorder
.
Eventf
(
ref
,
"Failed"
,
"Failed to create docker container with error: %v"
,
err
)
dm
.
recorder
.
Eventf
(
ref
,
"Failed"
,
"Failed to create docker container with error: %v"
,
err
)
}
return
kubecontainer
.
ContainerID
{},
err
return
kubecontainer
.
ContainerID
{},
err
}
}
if
ref
!=
nil
{
dm
.
recorder
.
Eventf
(
ref
,
"Created"
,
"Created with docker id %v"
,
util
.
ShortenString
(
dockerContainer
.
ID
,
12
))
dm
.
recorder
.
Eventf
(
ref
,
"Created"
,
"Created with docker id %v"
,
util
.
ShortenString
(
dockerContainer
.
ID
,
12
))
}
podHasSELinuxLabel
:=
pod
.
Spec
.
SecurityContext
!=
nil
&&
pod
.
Spec
.
SecurityContext
.
SELinuxOptions
!=
nil
podHasSELinuxLabel
:=
pod
.
Spec
.
SecurityContext
!=
nil
&&
pod
.
Spec
.
SecurityContext
.
SELinuxOptions
!=
nil
binds
:=
makeMountBindings
(
opts
.
Mounts
,
podHasSELinuxLabel
)
binds
:=
makeMountBindings
(
opts
.
Mounts
,
podHasSELinuxLabel
)
...
@@ -830,15 +826,11 @@ func (dm *DockerManager) runContainer(
...
@@ -830,15 +826,11 @@ func (dm *DockerManager) runContainer(
securityContextProvider
.
ModifyHostConfig
(
pod
,
container
,
hc
)
securityContextProvider
.
ModifyHostConfig
(
pod
,
container
,
hc
)
if
err
=
dm
.
client
.
StartContainer
(
dockerContainer
.
ID
,
hc
);
err
!=
nil
{
if
err
=
dm
.
client
.
StartContainer
(
dockerContainer
.
ID
,
hc
);
err
!=
nil
{
if
ref
!=
nil
{
dm
.
recorder
.
Eventf
(
ref
,
"Failed"
,
dm
.
recorder
.
Eventf
(
ref
,
"Failed"
,
"Failed to start with docker id %v with error: %v"
,
util
.
ShortenString
(
dockerContainer
.
ID
,
12
),
err
)
"Failed to start with docker id %v with error: %v"
,
util
.
ShortenString
(
dockerContainer
.
ID
,
12
),
err
)
}
return
kubecontainer
.
ContainerID
{},
err
return
kubecontainer
.
ContainerID
{},
err
}
}
if
ref
!=
nil
{
dm
.
recorder
.
Eventf
(
ref
,
"Started"
,
"Started with docker id %v"
,
util
.
ShortenString
(
dockerContainer
.
ID
,
12
))
dm
.
recorder
.
Eventf
(
ref
,
"Started"
,
"Started with docker id %v"
,
util
.
ShortenString
(
dockerContainer
.
ID
,
12
))
}
return
kubetypes
.
DockerID
(
dockerContainer
.
ID
)
.
ContainerID
(),
nil
return
kubetypes
.
DockerID
(
dockerContainer
.
ID
)
.
ContainerID
(),
nil
}
}
...
...
pkg/kubelet/kubelet.go
View file @
3ce5a510
...
@@ -333,7 +333,7 @@ func NewMainKubelet(
...
@@ -333,7 +333,7 @@ func NewMainKubelet(
// Only supported one for now, continue.
// Only supported one for now, continue.
klet
.
containerRuntime
=
dockertools
.
NewDockerManager
(
klet
.
containerRuntime
=
dockertools
.
NewDockerManager
(
dockerClient
,
dockerClient
,
recorder
,
kubecontainer
.
FilterEventRecorder
(
recorder
)
,
klet
.
livenessManager
,
klet
.
livenessManager
,
containerRefManager
,
containerRefManager
,
machineInfo
,
machineInfo
,
...
@@ -1474,9 +1474,7 @@ func (kl *Kubelet) syncPod(pod *api.Pod, mirrorPod *api.Pod, runningPod kubecont
...
@@ -1474,9 +1474,7 @@ func (kl *Kubelet) syncPod(pod *api.Pod, mirrorPod *api.Pod, runningPod kubecont
// Mount volumes.
// Mount volumes.
podVolumes
,
err
:=
kl
.
mountExternalVolumes
(
pod
)
podVolumes
,
err
:=
kl
.
mountExternalVolumes
(
pod
)
if
err
!=
nil
{
if
err
!=
nil
{
if
ref
!=
nil
{
kl
.
recorder
.
Eventf
(
ref
,
"FailedMount"
,
"Unable to mount volumes for pod %q: %v"
,
podFullName
,
err
)
kl
.
recorder
.
Eventf
(
ref
,
"FailedMount"
,
"Unable to mount volumes for pod %q: %v"
,
podFullName
,
err
)
}
glog
.
Errorf
(
"Unable to mount volumes for pod %q: %v; skipping pod"
,
podFullName
,
err
)
glog
.
Errorf
(
"Unable to mount volumes for pod %q: %v; skipping pod"
,
podFullName
,
err
)
return
err
return
err
}
}
...
...
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