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
0fd2385e
Commit
0fd2385e
authored
Aug 24, 2016
by
Yu-Ju Hong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add "Sandboxes" to the kubecontainer.Pod
This field will only be used by the kuberuntime package and should be ignored by other type of runtimes.
parent
f488d118
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
62 additions
and
5 deletions
+62
-5
runtime.go
pkg/kubelet/container/runtime.go
+5
-0
helpers.go
pkg/kubelet/kuberuntime/helpers.go
+30
-0
kuberuntime_manager.go
pkg/kubelet/kuberuntime/kuberuntime_manager.go
+13
-4
kuberuntime_manager_test.go
pkg/kubelet/kuberuntime/kuberuntime_manager_test.go
+14
-1
No files found.
pkg/kubelet/container/runtime.go
View file @
0fd2385e
...
...
@@ -153,6 +153,11 @@ type Pod struct {
// List of containers that belongs to this pod. It may contain only
// running containers, or mixed with dead ones (when GetPods(true)).
Containers
[]
*
Container
// List of sandboxes associated with this pod. The sandboxes are converted
// to Container temporariliy to avoid substantial changes to other
// components. This is only populated by kuberuntime.
// TODO: use the runtimeApi.PodSandbox type directly.
Sandboxes
[]
*
Container
}
// PodPair contains both runtime#Pod and api#Pod
...
...
pkg/kubelet/kuberuntime/helpers.go
View file @
0fd2385e
...
...
@@ -64,6 +64,21 @@ func toKubeContainerState(state runtimeApi.ContainerState) kubecontainer.Contain
return
kubecontainer
.
ContainerStateUnknown
}
// sandboxToKubeContainerState converts runtimeApi.PodSandboxState to
// kubecontainer.ContainerState.
// This is only needed because we need to return sandboxes as if they were
// kubecontainer.Containers to avoid substantial changes to PLEG.
// TODO: Remove this once it becomes obsolete.
func
sandboxToKubeContainerState
(
state
runtimeApi
.
PodSandBoxState
)
kubecontainer
.
ContainerState
{
switch
state
{
case
runtimeApi
.
PodSandBoxState_READY
:
return
kubecontainer
.
ContainerStateRunning
case
runtimeApi
.
PodSandBoxState_NOTREADY
:
return
kubecontainer
.
ContainerStateExited
}
return
kubecontainer
.
ContainerStateUnknown
}
// toRuntimeProtocol converts api.Protocol to runtimeApi.Protocol.
func
toRuntimeProtocol
(
protocol
api
.
Protocol
)
runtimeApi
.
Protocol
{
switch
protocol
{
...
...
@@ -94,6 +109,21 @@ func (m *kubeGenericRuntimeManager) toKubeContainer(c *runtimeApi.Container) (*k
},
nil
}
// sandboxToKubeContainer converts runtimeApi.PodSandbox to kubecontainer.Container.
// This is only needed because we need to return sandboxes as if they were
// kubecontainer.Containers to avoid substantial changes to PLEG.
// TODO: Remove this once it becomes obsolete.
func
(
m
*
kubeGenericRuntimeManager
)
sandboxToKubeContainer
(
s
*
runtimeApi
.
PodSandbox
)
(
*
kubecontainer
.
Container
,
error
)
{
if
s
==
nil
||
s
.
Id
==
nil
||
s
.
State
==
nil
{
return
nil
,
fmt
.
Errorf
(
"unable to convert a nil pointer to a runtime container"
)
}
return
&
kubecontainer
.
Container
{
ID
:
kubecontainer
.
ContainerID
{
Type
:
m
.
runtimeName
,
ID
:
s
.
GetId
()},
State
:
sandboxToKubeContainerState
(
s
.
GetState
()),
},
nil
}
// milliCPUToShares converts milliCPU to CPU shares
func
milliCPUToShares
(
milliCPU
int64
)
int64
{
if
milliCPU
==
0
{
...
...
pkg/kubelet/kuberuntime/kuberuntime_manager.go
View file @
0fd2385e
...
...
@@ -231,11 +231,20 @@ func (m *kubeGenericRuntimeManager) GetPods(all bool) ([]*kubecontainer.Pod, err
}
for
_
,
s
:=
range
sandboxes
{
podUID
:=
kubetypes
.
UID
(
s
.
Metadata
.
GetUid
())
pods
[
podUID
]
=
&
kubecontainer
.
Pod
{
ID
:
podUID
,
Name
:
s
.
Metadata
.
GetName
(),
Namespace
:
s
.
Metadata
.
GetNamespace
(),
if
_
,
ok
:=
pods
[
podUID
];
!
ok
{
pods
[
podUID
]
=
&
kubecontainer
.
Pod
{
ID
:
podUID
,
Name
:
s
.
Metadata
.
GetName
(),
Namespace
:
s
.
Metadata
.
GetNamespace
(),
}
}
p
:=
pods
[
podUID
]
converted
,
err
:=
m
.
sandboxToKubeContainer
(
s
)
if
err
!=
nil
{
glog
.
Warningf
(
"Convert %q sandbox %v of pod %q failed: %v"
,
m
.
runtimeName
,
s
,
podUID
,
err
)
continue
}
p
.
Sandboxes
=
append
(
p
.
Sandboxes
,
converted
)
}
containers
,
err
:=
m
.
getKubeletContainers
(
all
)
...
...
pkg/kubelet/kuberuntime/kuberuntime_manager_test.go
View file @
0fd2385e
...
...
@@ -200,7 +200,7 @@ func TestGetPods(t *testing.T) {
}
// Set fake sandbox and fake containers to fakeRuntime.
_
,
fakeContainers
,
err
:=
makeAndSetFakePod
(
m
,
fakeRuntime
,
pod
)
fakeSandbox
,
fakeContainers
,
err
:=
makeAndSetFakePod
(
m
,
fakeRuntime
,
pod
)
assert
.
NoError
(
t
,
err
)
// Convert the fakeContainers to kubecontainer.Container
...
...
@@ -220,12 +220,25 @@ func TestGetPods(t *testing.T) {
}
containers
[
i
]
=
c
}
// Convert fakeSandbox to kubecontainer.Container
sandbox
,
err
:=
m
.
sandboxToKubeContainer
(
&
runtimeApi
.
PodSandbox
{
Id
:
fakeSandbox
.
Id
,
Metadata
:
fakeSandbox
.
Metadata
,
State
:
fakeSandbox
.
State
,
CreatedAt
:
fakeSandbox
.
CreatedAt
,
Labels
:
fakeSandbox
.
Labels
,
})
if
err
!=
nil
{
t
.
Fatalf
(
"unexpected error %v"
,
err
)
}
expected
:=
[]
*
kubecontainer
.
Pod
{
{
ID
:
kubetypes
.
UID
(
"12345678"
),
Name
:
"foo"
,
Namespace
:
"new"
,
Containers
:
[]
*
kubecontainer
.
Container
{
containers
[
0
],
containers
[
1
]},
Sandboxes
:
[]
*
kubecontainer
.
Container
{
sandbox
},
},
}
...
...
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