mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-25 04:33:26 +00:00
move common lables used outside of containr runtime out of dockertools
moved labels and their Get functions to types aliases kubernetes/types import to kubetypes to use kubelet/types as types
This commit is contained in:
parent
025b017277
commit
9dd9f2ad65
@ -24,9 +24,10 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
|
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
|
||||||
"k8s.io/kubernetes/pkg/kubelet/custommetrics"
|
"k8s.io/kubernetes/pkg/kubelet/custommetrics"
|
||||||
|
"k8s.io/kubernetes/pkg/kubelet/types"
|
||||||
"k8s.io/kubernetes/pkg/kubelet/util/format"
|
"k8s.io/kubernetes/pkg/kubelet/util/format"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/types"
|
kubetypes "k8s.io/kubernetes/pkg/types"
|
||||||
)
|
)
|
||||||
|
|
||||||
// This file contains all docker label related constants and functions, including:
|
// This file contains all docker label related constants and functions, including:
|
||||||
@ -34,13 +35,9 @@ import (
|
|||||||
// * label filters (maybe in the future)
|
// * label filters (maybe in the future)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
kubernetesPodNameLabel = "io.kubernetes.pod.name"
|
|
||||||
kubernetesPodNamespaceLabel = "io.kubernetes.pod.namespace"
|
|
||||||
kubernetesPodUIDLabel = "io.kubernetes.pod.uid"
|
|
||||||
kubernetesPodDeletionGracePeriodLabel = "io.kubernetes.pod.deletionGracePeriod"
|
kubernetesPodDeletionGracePeriodLabel = "io.kubernetes.pod.deletionGracePeriod"
|
||||||
kubernetesPodTerminationGracePeriodLabel = "io.kubernetes.pod.terminationGracePeriod"
|
kubernetesPodTerminationGracePeriodLabel = "io.kubernetes.pod.terminationGracePeriod"
|
||||||
|
|
||||||
kubernetesContainerNameLabel = "io.kubernetes.container.name"
|
|
||||||
kubernetesContainerHashLabel = "io.kubernetes.container.hash"
|
kubernetesContainerHashLabel = "io.kubernetes.container.hash"
|
||||||
kubernetesContainerRestartCountLabel = "io.kubernetes.container.restartCount"
|
kubernetesContainerRestartCountLabel = "io.kubernetes.container.restartCount"
|
||||||
kubernetesContainerTerminationMessagePathLabel = "io.kubernetes.container.terminationMessagePath"
|
kubernetesContainerTerminationMessagePathLabel = "io.kubernetes.container.terminationMessagePath"
|
||||||
@ -57,7 +54,7 @@ const (
|
|||||||
type labelledContainerInfo struct {
|
type labelledContainerInfo struct {
|
||||||
PodName string
|
PodName string
|
||||||
PodNamespace string
|
PodNamespace string
|
||||||
PodUID types.UID
|
PodUID kubetypes.UID
|
||||||
PodDeletionGracePeriod *int64
|
PodDeletionGracePeriod *int64
|
||||||
PodTerminationGracePeriod *int64
|
PodTerminationGracePeriod *int64
|
||||||
Name string
|
Name string
|
||||||
@ -67,27 +64,11 @@ type labelledContainerInfo struct {
|
|||||||
PreStopHandler *api.Handler
|
PreStopHandler *api.Handler
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetContainerName(labels map[string]string) string {
|
|
||||||
return labels[kubernetesContainerNameLabel]
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetPodName(labels map[string]string) string {
|
|
||||||
return labels[kubernetesPodNameLabel]
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetPodUID(labels map[string]string) string {
|
|
||||||
return labels[kubernetesPodUIDLabel]
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetPodNamespace(labels map[string]string) string {
|
|
||||||
return labels[kubernetesPodNamespaceLabel]
|
|
||||||
}
|
|
||||||
|
|
||||||
func newLabels(container *api.Container, pod *api.Pod, restartCount int, enableCustomMetrics bool) map[string]string {
|
func newLabels(container *api.Container, pod *api.Pod, restartCount int, enableCustomMetrics bool) map[string]string {
|
||||||
labels := map[string]string{}
|
labels := map[string]string{}
|
||||||
labels[kubernetesPodNameLabel] = pod.Name
|
labels[types.KubernetesPodNameLabel] = pod.Name
|
||||||
labels[kubernetesPodNamespaceLabel] = pod.Namespace
|
labels[types.KubernetesPodNamespaceLabel] = pod.Namespace
|
||||||
labels[kubernetesPodUIDLabel] = string(pod.UID)
|
labels[types.KubernetesPodUIDLabel] = string(pod.UID)
|
||||||
if pod.DeletionGracePeriodSeconds != nil {
|
if pod.DeletionGracePeriodSeconds != nil {
|
||||||
labels[kubernetesPodDeletionGracePeriodLabel] = strconv.FormatInt(*pod.DeletionGracePeriodSeconds, 10)
|
labels[kubernetesPodDeletionGracePeriodLabel] = strconv.FormatInt(*pod.DeletionGracePeriodSeconds, 10)
|
||||||
}
|
}
|
||||||
@ -95,7 +76,7 @@ func newLabels(container *api.Container, pod *api.Pod, restartCount int, enableC
|
|||||||
labels[kubernetesPodTerminationGracePeriodLabel] = strconv.FormatInt(*pod.Spec.TerminationGracePeriodSeconds, 10)
|
labels[kubernetesPodTerminationGracePeriodLabel] = strconv.FormatInt(*pod.Spec.TerminationGracePeriodSeconds, 10)
|
||||||
}
|
}
|
||||||
|
|
||||||
labels[kubernetesContainerNameLabel] = container.Name
|
labels[types.KubernetesContainerNameLabel] = container.Name
|
||||||
labels[kubernetesContainerHashLabel] = strconv.FormatUint(kubecontainer.HashContainer(container), 16)
|
labels[kubernetesContainerHashLabel] = strconv.FormatUint(kubecontainer.HashContainer(container), 16)
|
||||||
labels[kubernetesContainerRestartCountLabel] = strconv.Itoa(restartCount)
|
labels[kubernetesContainerRestartCountLabel] = strconv.Itoa(restartCount)
|
||||||
labels[kubernetesContainerTerminationMessagePathLabel] = container.TerminationMessagePath
|
labels[kubernetesContainerTerminationMessagePathLabel] = container.TerminationMessagePath
|
||||||
@ -122,10 +103,10 @@ func newLabels(container *api.Container, pod *api.Pod, restartCount int, enableC
|
|||||||
func getContainerInfoFromLabel(labels map[string]string) *labelledContainerInfo {
|
func getContainerInfoFromLabel(labels map[string]string) *labelledContainerInfo {
|
||||||
var err error
|
var err error
|
||||||
containerInfo := &labelledContainerInfo{
|
containerInfo := &labelledContainerInfo{
|
||||||
PodName: getStringValueFromLabel(labels, kubernetesPodNameLabel),
|
PodName: getStringValueFromLabel(labels, types.KubernetesPodNameLabel),
|
||||||
PodNamespace: getStringValueFromLabel(labels, kubernetesPodNamespaceLabel),
|
PodNamespace: getStringValueFromLabel(labels, types.KubernetesPodNamespaceLabel),
|
||||||
PodUID: types.UID(getStringValueFromLabel(labels, kubernetesPodUIDLabel)),
|
PodUID: kubetypes.UID(getStringValueFromLabel(labels, types.KubernetesPodUIDLabel)),
|
||||||
Name: getStringValueFromLabel(labels, kubernetesContainerNameLabel),
|
Name: getStringValueFromLabel(labels, types.KubernetesContainerNameLabel),
|
||||||
Hash: getStringValueFromLabel(labels, kubernetesContainerHashLabel),
|
Hash: getStringValueFromLabel(labels, kubernetesContainerHashLabel),
|
||||||
TerminationMessagePath: getStringValueFromLabel(labels, kubernetesContainerTerminationMessagePathLabel),
|
TerminationMessagePath: getStringValueFromLabel(labels, kubernetesContainerTerminationMessagePathLabel),
|
||||||
}
|
}
|
||||||
|
@ -48,12 +48,12 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/kubelet/network/hairpin"
|
"k8s.io/kubernetes/pkg/kubelet/network/hairpin"
|
||||||
proberesults "k8s.io/kubernetes/pkg/kubelet/prober/results"
|
proberesults "k8s.io/kubernetes/pkg/kubelet/prober/results"
|
||||||
"k8s.io/kubernetes/pkg/kubelet/qos"
|
"k8s.io/kubernetes/pkg/kubelet/qos"
|
||||||
kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
|
"k8s.io/kubernetes/pkg/kubelet/types"
|
||||||
"k8s.io/kubernetes/pkg/kubelet/util/cache"
|
"k8s.io/kubernetes/pkg/kubelet/util/cache"
|
||||||
"k8s.io/kubernetes/pkg/kubelet/util/format"
|
"k8s.io/kubernetes/pkg/kubelet/util/format"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/securitycontext"
|
"k8s.io/kubernetes/pkg/securitycontext"
|
||||||
"k8s.io/kubernetes/pkg/types"
|
kubetypes "k8s.io/kubernetes/pkg/types"
|
||||||
"k8s.io/kubernetes/pkg/util/flowcontrol"
|
"k8s.io/kubernetes/pkg/util/flowcontrol"
|
||||||
"k8s.io/kubernetes/pkg/util/oom"
|
"k8s.io/kubernetes/pkg/util/oom"
|
||||||
"k8s.io/kubernetes/pkg/util/procfs"
|
"k8s.io/kubernetes/pkg/util/procfs"
|
||||||
@ -176,7 +176,7 @@ type DockerManager struct {
|
|||||||
|
|
||||||
// A subset of the pod.Manager interface extracted for testing purposes.
|
// A subset of the pod.Manager interface extracted for testing purposes.
|
||||||
type podGetter interface {
|
type podGetter interface {
|
||||||
GetPodByUID(types.UID) (*api.Pod, bool)
|
GetPodByUID(kubetypes.UID) (*api.Pod, bool)
|
||||||
}
|
}
|
||||||
|
|
||||||
func PodInfraContainerEnv(env map[string]string) kubecontainer.Option {
|
func PodInfraContainerEnv(env map[string]string) kubecontainer.Option {
|
||||||
@ -205,7 +205,7 @@ func NewDockerManager(
|
|||||||
osInterface kubecontainer.OSInterface,
|
osInterface kubecontainer.OSInterface,
|
||||||
networkPlugin network.NetworkPlugin,
|
networkPlugin network.NetworkPlugin,
|
||||||
runtimeHelper kubecontainer.RuntimeHelper,
|
runtimeHelper kubecontainer.RuntimeHelper,
|
||||||
httpClient kubetypes.HttpGetter,
|
httpClient types.HttpGetter,
|
||||||
execHandler ExecHandler,
|
execHandler ExecHandler,
|
||||||
oomAdjuster *oom.OOMAdjuster,
|
oomAdjuster *oom.OOMAdjuster,
|
||||||
procFs procfs.ProcFSInterface,
|
procFs procfs.ProcFSInterface,
|
||||||
@ -744,14 +744,14 @@ func getDockerContainerNameInfo(c *dockertypes.Container) (*KubeletContainerName
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Get pod UID, name, and namespace by examining the container names.
|
// Get pod UID, name, and namespace by examining the container names.
|
||||||
func getPodInfoFromContainer(c *dockertypes.Container) (types.UID, string, string, error) {
|
func getPodInfoFromContainer(c *dockertypes.Container) (kubetypes.UID, string, string, error) {
|
||||||
dockerName, _, err := getDockerContainerNameInfo(c)
|
dockerName, _, err := getDockerContainerNameInfo(c)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return types.UID(""), "", "", err
|
return kubetypes.UID(""), "", "", err
|
||||||
}
|
}
|
||||||
name, namespace, err := kubecontainer.ParsePodFullName(dockerName.PodFullName)
|
name, namespace, err := kubecontainer.ParsePodFullName(dockerName.PodFullName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return types.UID(""), "", "", fmt.Errorf("parse pod full name %q error: %v", dockerName.PodFullName, err)
|
return kubetypes.UID(""), "", "", fmt.Errorf("parse pod full name %q error: %v", dockerName.PodFullName, err)
|
||||||
}
|
}
|
||||||
return dockerName.PodUID, name, namespace, nil
|
return dockerName.PodUID, name, namespace, nil
|
||||||
}
|
}
|
||||||
@ -781,7 +781,7 @@ func (dm *DockerManager) GetPods(all bool) ([]*kubecontainer.Pod, error) {
|
|||||||
defer func() {
|
defer func() {
|
||||||
metrics.ContainerManagerLatency.WithLabelValues("GetPods").Observe(metrics.SinceInMicroseconds(start))
|
metrics.ContainerManagerLatency.WithLabelValues("GetPods").Observe(metrics.SinceInMicroseconds(start))
|
||||||
}()
|
}()
|
||||||
pods := make(map[types.UID]*kubecontainer.Pod)
|
pods := make(map[kubetypes.UID]*kubecontainer.Pod)
|
||||||
var result []*kubecontainer.Pod
|
var result []*kubecontainer.Pod
|
||||||
|
|
||||||
containers, err := GetKubeletDockerContainers(dm.client, all)
|
containers, err := GetKubeletDockerContainers(dm.client, all)
|
||||||
@ -1375,7 +1375,7 @@ func containerAndPodFromLabels(inspect *dockertypes.ContainerJSON) (pod *api.Pod
|
|||||||
if body, found := labels[kubernetesPodLabel]; found {
|
if body, found := labels[kubernetesPodLabel]; found {
|
||||||
pod = &api.Pod{}
|
pod = &api.Pod{}
|
||||||
if err = runtime.DecodeInto(api.Codecs.UniversalDecoder(), []byte(body), pod); err == nil {
|
if err = runtime.DecodeInto(api.Codecs.UniversalDecoder(), []byte(body), pod); err == nil {
|
||||||
name := labels[kubernetesContainerNameLabel]
|
name := labels[types.KubernetesContainerNameLabel]
|
||||||
for ix := range pod.Spec.Containers {
|
for ix := range pod.Spec.Containers {
|
||||||
if pod.Spec.Containers[ix].Name == name {
|
if pod.Spec.Containers[ix].Name == name {
|
||||||
container = &pod.Spec.Containers[ix]
|
container = &pod.Spec.Containers[ix]
|
||||||
@ -2303,7 +2303,7 @@ func (dm *DockerManager) GarbageCollect(gcPolicy kubecontainer.ContainerGCPolicy
|
|||||||
return dm.containerGC.GarbageCollect(gcPolicy)
|
return dm.containerGC.GarbageCollect(gcPolicy)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (dm *DockerManager) GetPodStatus(uid types.UID, name, namespace string) (*kubecontainer.PodStatus, error) {
|
func (dm *DockerManager) GetPodStatus(uid kubetypes.UID, name, namespace string) (*kubecontainer.PodStatus, error) {
|
||||||
podStatus := &kubecontainer.PodStatus{ID: uid, Name: name, Namespace: namespace}
|
podStatus := &kubecontainer.PodStatus{ID: uid, Name: name, Namespace: namespace}
|
||||||
// Now we retain restart count of container as a docker label. Each time a container
|
// Now we retain restart count of container as a docker label. Each time a container
|
||||||
// restarts, pod will read the restart count from the registered dead container, increment
|
// restarts, pod will read the restart count from the registered dead container, increment
|
||||||
|
@ -44,8 +44,9 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/kubelet/network"
|
"k8s.io/kubernetes/pkg/kubelet/network"
|
||||||
nettest "k8s.io/kubernetes/pkg/kubelet/network/testing"
|
nettest "k8s.io/kubernetes/pkg/kubelet/network/testing"
|
||||||
proberesults "k8s.io/kubernetes/pkg/kubelet/prober/results"
|
proberesults "k8s.io/kubernetes/pkg/kubelet/prober/results"
|
||||||
|
"k8s.io/kubernetes/pkg/kubelet/types"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/types"
|
kubetypes "k8s.io/kubernetes/pkg/types"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util"
|
||||||
uexec "k8s.io/kubernetes/pkg/util/exec"
|
uexec "k8s.io/kubernetes/pkg/util/exec"
|
||||||
"k8s.io/kubernetes/pkg/util/flowcontrol"
|
"k8s.io/kubernetes/pkg/util/flowcontrol"
|
||||||
@ -93,7 +94,7 @@ func (f *fakeRuntimeHelper) GeneratePodHostNameAndDomain(pod *api.Pod) (string,
|
|||||||
return "", "", nil
|
return "", "", nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *fakeRuntimeHelper) GetPodDir(types.UID) string {
|
func (f *fakeRuntimeHelper) GetPodDir(kubetypes.UID) string {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -338,13 +339,13 @@ func TestGetPods(t *testing.T) {
|
|||||||
|
|
||||||
expected := []*kubecontainer.Pod{
|
expected := []*kubecontainer.Pod{
|
||||||
{
|
{
|
||||||
ID: types.UID("1234"),
|
ID: kubetypes.UID("1234"),
|
||||||
Name: "qux",
|
Name: "qux",
|
||||||
Namespace: "new",
|
Namespace: "new",
|
||||||
Containers: []*kubecontainer.Container{containers[0], containers[1]},
|
Containers: []*kubecontainer.Container{containers[0], containers[1]},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ID: types.UID("5678"),
|
ID: kubetypes.UID("5678"),
|
||||||
Name: "jlk",
|
Name: "jlk",
|
||||||
Namespace: "wen",
|
Namespace: "wen",
|
||||||
Containers: []*kubecontainer.Container{containers[2]},
|
Containers: []*kubecontainer.Container{containers[2]},
|
||||||
@ -459,7 +460,7 @@ func TestKillContainerInPodWithPreStop(t *testing.T) {
|
|||||||
Config: &dockercontainer.Config{
|
Config: &dockercontainer.Config{
|
||||||
Labels: map[string]string{
|
Labels: map[string]string{
|
||||||
kubernetesPodLabel: string(podString),
|
kubernetesPodLabel: string(podString),
|
||||||
kubernetesContainerNameLabel: "foo",
|
types.KubernetesContainerNameLabel: "foo",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -49,10 +49,10 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/kubelet/network"
|
"k8s.io/kubernetes/pkg/kubelet/network"
|
||||||
"k8s.io/kubernetes/pkg/kubelet/network/hairpin"
|
"k8s.io/kubernetes/pkg/kubelet/network/hairpin"
|
||||||
proberesults "k8s.io/kubernetes/pkg/kubelet/prober/results"
|
proberesults "k8s.io/kubernetes/pkg/kubelet/prober/results"
|
||||||
kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
|
"k8s.io/kubernetes/pkg/kubelet/types"
|
||||||
"k8s.io/kubernetes/pkg/kubelet/util/format"
|
"k8s.io/kubernetes/pkg/kubelet/util/format"
|
||||||
"k8s.io/kubernetes/pkg/securitycontext"
|
"k8s.io/kubernetes/pkg/securitycontext"
|
||||||
"k8s.io/kubernetes/pkg/types"
|
kubetypes "k8s.io/kubernetes/pkg/types"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util"
|
||||||
"k8s.io/kubernetes/pkg/util/errors"
|
"k8s.io/kubernetes/pkg/util/errors"
|
||||||
utilexec "k8s.io/kubernetes/pkg/util/exec"
|
utilexec "k8s.io/kubernetes/pkg/util/exec"
|
||||||
@ -84,9 +84,6 @@ const (
|
|||||||
|
|
||||||
k8sRktKubeletAnno = "rkt.kubernetes.io/managed-by-kubelet"
|
k8sRktKubeletAnno = "rkt.kubernetes.io/managed-by-kubelet"
|
||||||
k8sRktKubeletAnnoValue = "true"
|
k8sRktKubeletAnnoValue = "true"
|
||||||
k8sRktUIDAnno = "rkt.kubernetes.io/uid"
|
|
||||||
k8sRktNameAnno = "rkt.kubernetes.io/name"
|
|
||||||
k8sRktNamespaceAnno = "rkt.kubernetes.io/namespace"
|
|
||||||
k8sRktContainerHashAnno = "rkt.kubernetes.io/container-hash"
|
k8sRktContainerHashAnno = "rkt.kubernetes.io/container-hash"
|
||||||
k8sRktRestartCountAnno = "rkt.kubernetes.io/restart-count"
|
k8sRktRestartCountAnno = "rkt.kubernetes.io/restart-count"
|
||||||
k8sRktTerminationMessagePathAnno = "rkt.kubernetes.io/termination-message-path"
|
k8sRktTerminationMessagePathAnno = "rkt.kubernetes.io/termination-message-path"
|
||||||
@ -167,12 +164,12 @@ var _ kubecontainer.Runtime = &Runtime{}
|
|||||||
|
|
||||||
// TODO(yifan): Remove this when volumeManager is moved to separate package.
|
// TODO(yifan): Remove this when volumeManager is moved to separate package.
|
||||||
type VolumeGetter interface {
|
type VolumeGetter interface {
|
||||||
GetVolumes(podUID types.UID) (kubecontainer.VolumeMap, bool)
|
GetVolumes(podUID kubetypes.UID) (kubecontainer.VolumeMap, bool)
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO(yifan): This duplicates the podGetter in dockertools.
|
// TODO(yifan): This duplicates the podGetter in dockertools.
|
||||||
type podGetter interface {
|
type podGetter interface {
|
||||||
GetPodByUID(types.UID) (*api.Pod, bool)
|
GetPodByUID(kubetypes.UID) (*api.Pod, bool)
|
||||||
}
|
}
|
||||||
|
|
||||||
// cliInterface wrapps the command line calls for testing purpose.
|
// cliInterface wrapps the command line calls for testing purpose.
|
||||||
@ -194,7 +191,7 @@ func New(
|
|||||||
podGetter podGetter,
|
podGetter podGetter,
|
||||||
livenessManager proberesults.Manager,
|
livenessManager proberesults.Manager,
|
||||||
volumeGetter VolumeGetter,
|
volumeGetter VolumeGetter,
|
||||||
httpClient kubetypes.HttpGetter,
|
httpClient types.HttpGetter,
|
||||||
networkPlugin network.NetworkPlugin,
|
networkPlugin network.NetworkPlugin,
|
||||||
hairpinMode bool,
|
hairpinMode bool,
|
||||||
execer utilexec.Interface,
|
execer utilexec.Interface,
|
||||||
@ -608,9 +605,9 @@ func (r *Runtime) makePodManifest(pod *api.Pod, pullSecrets []api.Secret) (*appc
|
|||||||
|
|
||||||
requiresPrivileged := false
|
requiresPrivileged := false
|
||||||
manifest.Annotations.Set(*appctypes.MustACIdentifier(k8sRktKubeletAnno), k8sRktKubeletAnnoValue)
|
manifest.Annotations.Set(*appctypes.MustACIdentifier(k8sRktKubeletAnno), k8sRktKubeletAnnoValue)
|
||||||
manifest.Annotations.Set(*appctypes.MustACIdentifier(k8sRktUIDAnno), string(pod.UID))
|
manifest.Annotations.Set(*appctypes.MustACIdentifier(types.KubernetesPodUIDLabel), string(pod.UID))
|
||||||
manifest.Annotations.Set(*appctypes.MustACIdentifier(k8sRktNameAnno), pod.Name)
|
manifest.Annotations.Set(*appctypes.MustACIdentifier(types.KubernetesPodNameLabel), pod.Name)
|
||||||
manifest.Annotations.Set(*appctypes.MustACIdentifier(k8sRktNamespaceAnno), pod.Namespace)
|
manifest.Annotations.Set(*appctypes.MustACIdentifier(types.KubernetesPodNamespaceLabel), pod.Namespace)
|
||||||
manifest.Annotations.Set(*appctypes.MustACIdentifier(k8sRktRestartCountAnno), strconv.Itoa(restartCount))
|
manifest.Annotations.Set(*appctypes.MustACIdentifier(k8sRktRestartCountAnno), strconv.Itoa(restartCount))
|
||||||
if stage1Name, ok := pod.Annotations[k8sRktStage1NameAnno]; ok {
|
if stage1Name, ok := pod.Annotations[k8sRktStage1NameAnno]; ok {
|
||||||
requiresPrivileged = true
|
requiresPrivileged = true
|
||||||
@ -676,7 +673,7 @@ func podFinishedMarkCommand(touchPath, podDir, rktUID string) string {
|
|||||||
|
|
||||||
// podFinishedAt returns the time that a pod exited, or a zero time if it has
|
// podFinishedAt returns the time that a pod exited, or a zero time if it has
|
||||||
// not.
|
// not.
|
||||||
func (r *Runtime) podFinishedAt(podUID types.UID, rktUID string) time.Time {
|
func (r *Runtime) podFinishedAt(podUID kubetypes.UID, rktUID string) time.Time {
|
||||||
markerFile := podFinishedMarkerPath(r.runtimeHelper.GetPodDir(podUID), rktUID)
|
markerFile := podFinishedMarkerPath(r.runtimeHelper.GetPodDir(podUID), rktUID)
|
||||||
stat, err := r.os.Stat(markerFile)
|
stat, err := r.os.Stat(markerFile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -792,6 +789,10 @@ func (r *Runtime) newAppcRuntimeApp(pod *api.Pod, c api.Container, requiresPrivi
|
|||||||
Name: *appctypes.MustACIdentifier(k8sRktContainerHashAnno),
|
Name: *appctypes.MustACIdentifier(k8sRktContainerHashAnno),
|
||||||
Value: strconv.FormatUint(kubecontainer.HashContainer(&c), 10),
|
Value: strconv.FormatUint(kubecontainer.HashContainer(&c), 10),
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
Name: *appctypes.MustACIdentifier(types.KubernetesContainerNameLabel),
|
||||||
|
Value: c.Name,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -824,7 +825,7 @@ func (r *Runtime) newAppcRuntimeApp(pod *api.Pod, c api.Container, requiresPrivi
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func runningKubernetesPodFilters(uid types.UID) []*rktapi.PodFilter {
|
func runningKubernetesPodFilters(uid kubetypes.UID) []*rktapi.PodFilter {
|
||||||
return []*rktapi.PodFilter{
|
return []*rktapi.PodFilter{
|
||||||
{
|
{
|
||||||
States: []rktapi.PodState{
|
States: []rktapi.PodState{
|
||||||
@ -836,7 +837,7 @@ func runningKubernetesPodFilters(uid types.UID) []*rktapi.PodFilter {
|
|||||||
Value: k8sRktKubeletAnnoValue,
|
Value: k8sRktKubeletAnnoValue,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Key: k8sRktUIDAnno,
|
Key: types.KubernetesPodUIDLabel,
|
||||||
Value: string(uid),
|
Value: string(uid),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -844,7 +845,7 @@ func runningKubernetesPodFilters(uid types.UID) []*rktapi.PodFilter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func kubernetesPodFilters(uid types.UID) []*rktapi.PodFilter {
|
func kubernetesPodFilters(uid kubetypes.UID) []*rktapi.PodFilter {
|
||||||
return []*rktapi.PodFilter{
|
return []*rktapi.PodFilter{
|
||||||
{
|
{
|
||||||
Annotations: []*rktapi.KeyValue{
|
Annotations: []*rktapi.KeyValue{
|
||||||
@ -853,7 +854,7 @@ func kubernetesPodFilters(uid types.UID) []*rktapi.PodFilter {
|
|||||||
Value: k8sRktKubeletAnnoValue,
|
Value: k8sRktKubeletAnnoValue,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Key: k8sRktUIDAnno,
|
Key: types.KubernetesPodUIDLabel,
|
||||||
Value: string(uid),
|
Value: string(uid),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -1110,7 +1111,7 @@ func (r *Runtime) generateEvents(runtimePod *kubecontainer.Pod, reason string, f
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func makePodNetnsName(podID types.UID) string {
|
func makePodNetnsName(podID kubetypes.UID) string {
|
||||||
return fmt.Sprintf("%s_%s", kubernetesUnitPrefix, string(podID))
|
return fmt.Sprintf("%s_%s", kubernetesUnitPrefix, string(podID))
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1327,21 +1328,21 @@ func (r *Runtime) convertRktPod(rktpod *rktapi.Pod) (*kubecontainer.Pod, error)
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
podUID, ok := manifest.Annotations.Get(k8sRktUIDAnno)
|
podUID, ok := manifest.Annotations.Get(types.KubernetesPodUIDLabel)
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, fmt.Errorf("pod is missing annotation %s", k8sRktUIDAnno)
|
return nil, fmt.Errorf("pod is missing annotation %s", types.KubernetesPodUIDLabel)
|
||||||
}
|
}
|
||||||
podName, ok := manifest.Annotations.Get(k8sRktNameAnno)
|
podName, ok := manifest.Annotations.Get(types.KubernetesPodNameLabel)
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, fmt.Errorf("pod is missing annotation %s", k8sRktNameAnno)
|
return nil, fmt.Errorf("pod is missing annotation %s", types.KubernetesPodNameLabel)
|
||||||
}
|
}
|
||||||
podNamespace, ok := manifest.Annotations.Get(k8sRktNamespaceAnno)
|
podNamespace, ok := manifest.Annotations.Get(types.KubernetesPodNamespaceLabel)
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, fmt.Errorf("pod is missing annotation %s", k8sRktNamespaceAnno)
|
return nil, fmt.Errorf("pod is missing annotation %s", types.KubernetesPodNamespaceLabel)
|
||||||
}
|
}
|
||||||
|
|
||||||
kubepod := &kubecontainer.Pod{
|
kubepod := &kubecontainer.Pod{
|
||||||
ID: types.UID(podUID),
|
ID: kubetypes.UID(podUID),
|
||||||
Name: podName,
|
Name: podName,
|
||||||
Namespace: podNamespace,
|
Namespace: podNamespace,
|
||||||
}
|
}
|
||||||
@ -1399,8 +1400,8 @@ func (r *Runtime) GetPods(all bool) ([]*kubecontainer.Pod, error) {
|
|||||||
return nil, fmt.Errorf("couldn't list pods: %v", err)
|
return nil, fmt.Errorf("couldn't list pods: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
pods := make(map[types.UID]*kubecontainer.Pod)
|
pods := make(map[kubetypes.UID]*kubecontainer.Pod)
|
||||||
var podIDs []types.UID
|
var podIDs []kubetypes.UID
|
||||||
for _, pod := range listResp.Pods {
|
for _, pod := range listResp.Pods {
|
||||||
pod, err := r.convertRktPod(pod)
|
pod, err := r.convertRktPod(pod)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -1620,13 +1621,13 @@ func (s podsByCreatedAt) Less(i, j int) bool { return s[i].CreatedAt < s[j].Crea
|
|||||||
|
|
||||||
// getPodUID returns the pod's API UID, it returns
|
// getPodUID returns the pod's API UID, it returns
|
||||||
// empty UID if the UID cannot be determined.
|
// empty UID if the UID cannot be determined.
|
||||||
func getPodUID(pod *rktapi.Pod) types.UID {
|
func getPodUID(pod *rktapi.Pod) kubetypes.UID {
|
||||||
for _, anno := range pod.Annotations {
|
for _, anno := range pod.Annotations {
|
||||||
if anno.Key == k8sRktUIDAnno {
|
if anno.Key == types.KubernetesPodUIDLabel {
|
||||||
return types.UID(anno.Value)
|
return kubetypes.UID(anno.Value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return types.UID("")
|
return kubetypes.UID("")
|
||||||
}
|
}
|
||||||
|
|
||||||
// podIsActive returns true if the pod is embryo, preparing or running.
|
// podIsActive returns true if the pod is embryo, preparing or running.
|
||||||
@ -1645,7 +1646,7 @@ func (r *Runtime) GetNetNS(containerID kubecontainer.ContainerID) (string, error
|
|||||||
// We pretend the pod.UID is an infra container ID.
|
// We pretend the pod.UID is an infra container ID.
|
||||||
// This deception is only possible because we played the same trick in
|
// This deception is only possible because we played the same trick in
|
||||||
// `networkPlugin.SetUpPod` and `networkPlugin.TearDownPod`.
|
// `networkPlugin.SetUpPod` and `networkPlugin.TearDownPod`.
|
||||||
return netnsPathFromName(makePodNetnsName(types.UID(containerID.ID))), nil
|
return netnsPathFromName(makePodNetnsName(kubetypes.UID(containerID.ID))), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func podDetailsFromServiceFile(serviceFilePath string) (string, string, string, error) {
|
func podDetailsFromServiceFile(serviceFilePath string) (string, string, string, error) {
|
||||||
@ -1719,7 +1720,7 @@ func (r *Runtime) GarbageCollect(gcPolicy kubecontainer.ContainerGCPolicy) error
|
|||||||
allPods[pod.Id] = pod
|
allPods[pod.Id] = pod
|
||||||
if !podIsActive(pod) {
|
if !podIsActive(pod) {
|
||||||
uid := getPodUID(pod)
|
uid := getPodUID(pod)
|
||||||
if uid == types.UID("") {
|
if uid == kubetypes.UID("") {
|
||||||
glog.Errorf("rkt: Cannot get the UID of pod %q, pod is broken, will remove it", pod.Id)
|
glog.Errorf("rkt: Cannot get the UID of pod %q, pod is broken, will remove it", pod.Id)
|
||||||
removeCandidates = append(removeCandidates, pod)
|
removeCandidates = append(removeCandidates, pod)
|
||||||
continue
|
continue
|
||||||
@ -1788,7 +1789,7 @@ func (r *Runtime) cleanupPodNetworkFromServiceFile(serviceFilePath string) {
|
|||||||
if err == nil {
|
if err == nil {
|
||||||
r.cleanupPodNetwork(&api.Pod{
|
r.cleanupPodNetwork(&api.Pod{
|
||||||
ObjectMeta: api.ObjectMeta{
|
ObjectMeta: api.ObjectMeta{
|
||||||
UID: types.UID(id),
|
UID: kubetypes.UID(id),
|
||||||
Name: name,
|
Name: name,
|
||||||
Namespace: namespace,
|
Namespace: namespace,
|
||||||
},
|
},
|
||||||
@ -2047,7 +2048,7 @@ func populateContainerStatus(pod rktapi.Pod, app rktapi.App, runtimeApp appcsche
|
|||||||
// server doesn't error, but doesn't provide meaningful information about the
|
// server doesn't error, but doesn't provide meaningful information about the
|
||||||
// pod, a status with no information (other than the passed in arguments) is
|
// pod, a status with no information (other than the passed in arguments) is
|
||||||
// returned anyways.
|
// returned anyways.
|
||||||
func (r *Runtime) GetPodStatus(uid types.UID, name, namespace string) (*kubecontainer.PodStatus, error) {
|
func (r *Runtime) GetPodStatus(uid kubetypes.UID, name, namespace string) (*kubecontainer.PodStatus, error) {
|
||||||
podStatus := &kubecontainer.PodStatus{
|
podStatus := &kubecontainer.PodStatus{
|
||||||
ID: uid,
|
ID: uid,
|
||||||
Name: name,
|
Name: name,
|
||||||
|
@ -37,7 +37,8 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/kubelet/lifecycle"
|
"k8s.io/kubernetes/pkg/kubelet/lifecycle"
|
||||||
"k8s.io/kubernetes/pkg/kubelet/rkt/mock_os"
|
"k8s.io/kubernetes/pkg/kubelet/rkt/mock_os"
|
||||||
"k8s.io/kubernetes/pkg/kubelet/rkt/mock_rkt"
|
"k8s.io/kubernetes/pkg/kubelet/rkt/mock_rkt"
|
||||||
"k8s.io/kubernetes/pkg/types"
|
"k8s.io/kubernetes/pkg/kubelet/types"
|
||||||
|
kubetypes "k8s.io/kubernetes/pkg/types"
|
||||||
"k8s.io/kubernetes/pkg/util/errors"
|
"k8s.io/kubernetes/pkg/util/errors"
|
||||||
utilexec "k8s.io/kubernetes/pkg/util/exec"
|
utilexec "k8s.io/kubernetes/pkg/util/exec"
|
||||||
utiltesting "k8s.io/kubernetes/pkg/util/testing"
|
utiltesting "k8s.io/kubernetes/pkg/util/testing"
|
||||||
@ -83,15 +84,15 @@ func makeRktPod(rktPodState rktapi.PodState,
|
|||||||
Value: k8sRktKubeletAnnoValue,
|
Value: k8sRktKubeletAnnoValue,
|
||||||
},
|
},
|
||||||
appctypes.Annotation{
|
appctypes.Annotation{
|
||||||
Name: *appctypes.MustACIdentifier(k8sRktUIDAnno),
|
Name: *appctypes.MustACIdentifier(types.KubernetesPodUIDLabel),
|
||||||
Value: podUID,
|
Value: podUID,
|
||||||
},
|
},
|
||||||
appctypes.Annotation{
|
appctypes.Annotation{
|
||||||
Name: *appctypes.MustACIdentifier(k8sRktNameAnno),
|
Name: *appctypes.MustACIdentifier(types.KubernetesPodNameLabel),
|
||||||
Value: podName,
|
Value: podName,
|
||||||
},
|
},
|
||||||
appctypes.Annotation{
|
appctypes.Annotation{
|
||||||
Name: *appctypes.MustACIdentifier(k8sRktNamespaceAnno),
|
Name: *appctypes.MustACIdentifier(types.KubernetesPodNamespaceLabel),
|
||||||
Value: podNamespace,
|
Value: podNamespace,
|
||||||
},
|
},
|
||||||
appctypes.Annotation{
|
appctypes.Annotation{
|
||||||
@ -1461,7 +1462,7 @@ func TestGarbageCollect(t *testing.T) {
|
|||||||
Apps: []*rktapi.App{fakeApp},
|
Apps: []*rktapi.App{fakeApp},
|
||||||
Annotations: []*rktapi.KeyValue{
|
Annotations: []*rktapi.KeyValue{
|
||||||
{
|
{
|
||||||
Key: k8sRktUIDAnno,
|
Key: types.KubernetesPodUIDLabel,
|
||||||
Value: "pod-uid-0",
|
Value: "pod-uid-0",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -1474,7 +1475,7 @@ func TestGarbageCollect(t *testing.T) {
|
|||||||
Apps: []*rktapi.App{fakeApp},
|
Apps: []*rktapi.App{fakeApp},
|
||||||
Annotations: []*rktapi.KeyValue{
|
Annotations: []*rktapi.KeyValue{
|
||||||
{
|
{
|
||||||
Key: k8sRktUIDAnno,
|
Key: types.KubernetesPodUIDLabel,
|
||||||
Value: "pod-uid-1",
|
Value: "pod-uid-1",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -1487,7 +1488,7 @@ func TestGarbageCollect(t *testing.T) {
|
|||||||
Apps: []*rktapi.App{fakeApp},
|
Apps: []*rktapi.App{fakeApp},
|
||||||
Annotations: []*rktapi.KeyValue{
|
Annotations: []*rktapi.KeyValue{
|
||||||
{
|
{
|
||||||
Key: k8sRktUIDAnno,
|
Key: types.KubernetesPodUIDLabel,
|
||||||
Value: "pod-uid-2",
|
Value: "pod-uid-2",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -1500,7 +1501,7 @@ func TestGarbageCollect(t *testing.T) {
|
|||||||
Apps: []*rktapi.App{fakeApp},
|
Apps: []*rktapi.App{fakeApp},
|
||||||
Annotations: []*rktapi.KeyValue{
|
Annotations: []*rktapi.KeyValue{
|
||||||
{
|
{
|
||||||
Key: k8sRktUIDAnno,
|
Key: types.KubernetesPodUIDLabel,
|
||||||
Value: "pod-uid-3",
|
Value: "pod-uid-3",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -1513,7 +1514,7 @@ func TestGarbageCollect(t *testing.T) {
|
|||||||
Apps: []*rktapi.App{fakeApp},
|
Apps: []*rktapi.App{fakeApp},
|
||||||
Annotations: []*rktapi.KeyValue{
|
Annotations: []*rktapi.KeyValue{
|
||||||
{
|
{
|
||||||
Key: k8sRktUIDAnno,
|
Key: types.KubernetesPodUIDLabel,
|
||||||
Value: "pod-uid-4",
|
Value: "pod-uid-4",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -1544,7 +1545,7 @@ func TestGarbageCollect(t *testing.T) {
|
|||||||
Apps: []*rktapi.App{fakeApp},
|
Apps: []*rktapi.App{fakeApp},
|
||||||
Annotations: []*rktapi.KeyValue{
|
Annotations: []*rktapi.KeyValue{
|
||||||
{
|
{
|
||||||
Key: k8sRktUIDAnno,
|
Key: types.KubernetesPodUIDLabel,
|
||||||
Value: "pod-uid-2",
|
Value: "pod-uid-2",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -1557,7 +1558,7 @@ func TestGarbageCollect(t *testing.T) {
|
|||||||
Apps: []*rktapi.App{fakeApp},
|
Apps: []*rktapi.App{fakeApp},
|
||||||
Annotations: []*rktapi.KeyValue{
|
Annotations: []*rktapi.KeyValue{
|
||||||
{
|
{
|
||||||
Key: k8sRktUIDAnno,
|
Key: types.KubernetesPodUIDLabel,
|
||||||
Value: "pod-uid-1",
|
Value: "pod-uid-1",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -1570,7 +1571,7 @@ func TestGarbageCollect(t *testing.T) {
|
|||||||
Apps: []*rktapi.App{fakeApp},
|
Apps: []*rktapi.App{fakeApp},
|
||||||
Annotations: []*rktapi.KeyValue{
|
Annotations: []*rktapi.KeyValue{
|
||||||
{
|
{
|
||||||
Key: k8sRktUIDAnno,
|
Key: types.KubernetesPodUIDLabel,
|
||||||
Value: "pod-uid-0",
|
Value: "pod-uid-0",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -1621,7 +1622,7 @@ func TestGarbageCollect(t *testing.T) {
|
|||||||
cli.Reset()
|
cli.Reset()
|
||||||
ctrl.Finish()
|
ctrl.Finish()
|
||||||
fakeOS.Removes = []string{}
|
fakeOS.Removes = []string{}
|
||||||
getter.pods = make(map[types.UID]*api.Pod)
|
getter.pods = make(map[kubetypes.UID]*api.Pod)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1664,11 +1665,11 @@ func TestMakePodManifestAnnotations(t *testing.T) {
|
|||||||
Value: "stage1-override-img",
|
Value: "stage1-override-img",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: appctypes.ACIdentifier(k8sRktUIDAnno),
|
Name: appctypes.ACIdentifier(types.KubernetesPodUIDLabel),
|
||||||
Value: "uid-1",
|
Value: "uid-1",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: appctypes.ACIdentifier(k8sRktNameAnno),
|
Name: appctypes.ACIdentifier(types.KubernetesPodNameLabel),
|
||||||
Value: "name-1",
|
Value: "name-1",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -1676,7 +1677,7 @@ func TestMakePodManifestAnnotations(t *testing.T) {
|
|||||||
Value: "true",
|
Value: "true",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: appctypes.ACIdentifier(k8sRktNamespaceAnno),
|
Name: appctypes.ACIdentifier(types.KubernetesPodNamespaceLabel),
|
||||||
Value: "namespace-1",
|
Value: "namespace-1",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -27,10 +27,10 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/kubelet/api/v1alpha1/stats"
|
"k8s.io/kubernetes/pkg/kubelet/api/v1alpha1/stats"
|
||||||
"k8s.io/kubernetes/pkg/kubelet/cm"
|
"k8s.io/kubernetes/pkg/kubelet/cm"
|
||||||
"k8s.io/kubernetes/pkg/kubelet/container"
|
"k8s.io/kubernetes/pkg/kubelet/container"
|
||||||
"k8s.io/kubernetes/pkg/kubelet/dockertools"
|
|
||||||
"k8s.io/kubernetes/pkg/kubelet/leaky"
|
"k8s.io/kubernetes/pkg/kubelet/leaky"
|
||||||
"k8s.io/kubernetes/pkg/kubelet/network"
|
"k8s.io/kubernetes/pkg/kubelet/network"
|
||||||
"k8s.io/kubernetes/pkg/types"
|
"k8s.io/kubernetes/pkg/kubelet/types"
|
||||||
|
kubetypes "k8s.io/kubernetes/pkg/types"
|
||||||
|
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
|
|
||||||
@ -226,7 +226,7 @@ func (sb *summaryBuilder) buildSummaryPods() []stats.PodStats {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Update the PodStats entry with the stats from the container by adding it to stats.Containers
|
// Update the PodStats entry with the stats from the container by adding it to stats.Containers
|
||||||
containerName := dockertools.GetContainerName(cinfo.Spec.Labels)
|
containerName := types.GetContainerName(cinfo.Spec.Labels)
|
||||||
if containerName == leaky.PodInfraContainerName {
|
if containerName == leaky.PodInfraContainerName {
|
||||||
// Special case for infrastructure container which is hidden from the user and has network stats
|
// Special case for infrastructure container which is hidden from the user and has network stats
|
||||||
podStats.Network = sb.containerInfoV2ToNetworkStats("pod:"+ref.Namespace+"_"+ref.Name, &cinfo)
|
podStats.Network = sb.containerInfoV2ToNetworkStats("pod:"+ref.Namespace+"_"+ref.Name, &cinfo)
|
||||||
@ -240,7 +240,7 @@ func (sb *summaryBuilder) buildSummaryPods() []stats.PodStats {
|
|||||||
result := make([]stats.PodStats, 0, len(podToStats))
|
result := make([]stats.PodStats, 0, len(podToStats))
|
||||||
for _, podStats := range podToStats {
|
for _, podStats := range podToStats {
|
||||||
// Lookup the volume stats for each pod
|
// Lookup the volume stats for each pod
|
||||||
podUID := types.UID(podStats.PodRef.UID)
|
podUID := kubetypes.UID(podStats.PodRef.UID)
|
||||||
if vstats, found := sb.fsResourceAnalyzer.GetPodVolumeStats(podUID); found {
|
if vstats, found := sb.fsResourceAnalyzer.GetPodVolumeStats(podUID); found {
|
||||||
podStats.VolumeStats = vstats.Volumes
|
podStats.VolumeStats = vstats.Volumes
|
||||||
}
|
}
|
||||||
@ -251,16 +251,16 @@ func (sb *summaryBuilder) buildSummaryPods() []stats.PodStats {
|
|||||||
|
|
||||||
// buildPodRef returns a PodReference that identifies the Pod managing cinfo
|
// buildPodRef returns a PodReference that identifies the Pod managing cinfo
|
||||||
func (sb *summaryBuilder) buildPodRef(cinfo *cadvisorapiv2.ContainerInfo) stats.PodReference {
|
func (sb *summaryBuilder) buildPodRef(cinfo *cadvisorapiv2.ContainerInfo) stats.PodReference {
|
||||||
podName := dockertools.GetPodName(cinfo.Spec.Labels)
|
podName := types.GetPodName(cinfo.Spec.Labels)
|
||||||
podNamespace := dockertools.GetPodNamespace(cinfo.Spec.Labels)
|
podNamespace := types.GetPodNamespace(cinfo.Spec.Labels)
|
||||||
podUID := dockertools.GetPodUID(cinfo.Spec.Labels)
|
podUID := types.GetPodUID(cinfo.Spec.Labels)
|
||||||
return stats.PodReference{Name: podName, Namespace: podNamespace, UID: podUID}
|
return stats.PodReference{Name: podName, Namespace: podNamespace, UID: podUID}
|
||||||
}
|
}
|
||||||
|
|
||||||
// isPodManagedContainer returns true if the cinfo container is managed by a Pod
|
// isPodManagedContainer returns true if the cinfo container is managed by a Pod
|
||||||
func (sb *summaryBuilder) isPodManagedContainer(cinfo *cadvisorapiv2.ContainerInfo) bool {
|
func (sb *summaryBuilder) isPodManagedContainer(cinfo *cadvisorapiv2.ContainerInfo) bool {
|
||||||
podName := dockertools.GetPodName(cinfo.Spec.Labels)
|
podName := types.GetPodName(cinfo.Spec.Labels)
|
||||||
podNamespace := dockertools.GetPodNamespace(cinfo.Spec.Labels)
|
podNamespace := types.GetPodNamespace(cinfo.Spec.Labels)
|
||||||
managed := podName != "" && podNamespace != ""
|
managed := podName != "" && podNamespace != ""
|
||||||
if !managed && podName != podNamespace {
|
if !managed && podName != podNamespace {
|
||||||
glog.Warningf(
|
glog.Warningf(
|
||||||
|
40
pkg/kubelet/types/labels.go
Normal file
40
pkg/kubelet/types/labels.go
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2016 The Kubernetes Authors All rights reserved.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package types
|
||||||
|
|
||||||
|
const (
|
||||||
|
KubernetesPodNameLabel = "io.kubernetes.pod.name"
|
||||||
|
KubernetesPodNamespaceLabel = "io.kubernetes.pod.namespace"
|
||||||
|
KubernetesPodUIDLabel = "io.kubernetes.pod.uid"
|
||||||
|
KubernetesContainerNameLabel = "io.kubernetes.container.name"
|
||||||
|
)
|
||||||
|
|
||||||
|
func GetContainerName(labels map[string]string) string {
|
||||||
|
return labels[KubernetesContainerNameLabel]
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetPodName(labels map[string]string) string {
|
||||||
|
return labels[KubernetesPodNameLabel]
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetPodUID(labels map[string]string) string {
|
||||||
|
return labels[KubernetesPodUIDLabel]
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetPodNamespace(labels map[string]string) string {
|
||||||
|
return labels[KubernetesPodNamespaceLabel]
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user