Use Docker API Version instead of docker version
This commit is contained in:
parent
2b42d71a94
commit
f8063879a0
@ -95,10 +95,7 @@ func containerLabels(c *cadvisorapi.ContainerInfo) map[string]string {
|
|||||||
|
|
||||||
// New creates a cAdvisor and exports its API on the specified port if port > 0.
|
// New creates a cAdvisor and exports its API on the specified port if port > 0.
|
||||||
func New(port uint, runtime string, rootPath string) (Interface, error) {
|
func New(port uint, runtime string, rootPath string) (Interface, error) {
|
||||||
sysFs, err := sysfs.NewRealSysFs()
|
sysFs := sysfs.NewRealSysFs()
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create and start the cAdvisor container manager.
|
// Create and start the cAdvisor container manager.
|
||||||
m, err := manager.New(memory.New(statsCacheDuration, nil), sysFs, maxHousekeepingInterval, allowDynamicHousekeeping, cadvisormetrics.MetricSet{cadvisormetrics.NetworkTcpUsageMetrics: struct{}{}}, http.DefaultClient)
|
m, err := manager.New(memory.New(statsCacheDuration, nil), sysFs, maxHousekeepingInterval, allowDynamicHousekeeping, cadvisormetrics.MetricSet{cadvisormetrics.NetworkTcpUsageMetrics: struct{}{}}, http.DefaultClient)
|
||||||
|
@ -66,7 +66,7 @@ const (
|
|||||||
|
|
||||||
var (
|
var (
|
||||||
// The docker version in which containerd was introduced.
|
// The docker version in which containerd was introduced.
|
||||||
containerdVersion = utilversion.MustParseSemantic("1.11.0")
|
containerdAPIVersion = utilversion.MustParseGeneric("1.23")
|
||||||
)
|
)
|
||||||
|
|
||||||
// A non-user container tracked by the Kubelet.
|
// A non-user container tracked by the Kubelet.
|
||||||
@ -377,7 +377,7 @@ func (cm *containerManagerImpl) setupNode(activePods ActivePodsFunc) error {
|
|||||||
|
|
||||||
systemContainers := []*systemContainer{}
|
systemContainers := []*systemContainer{}
|
||||||
if cm.ContainerRuntime == "docker" {
|
if cm.ContainerRuntime == "docker" {
|
||||||
dockerVersion := getDockerVersion(cm.cadvisorInterface)
|
dockerAPIVersion := getDockerAPIVersion(cm.cadvisorInterface)
|
||||||
if cm.EnableCRI {
|
if cm.EnableCRI {
|
||||||
// If kubelet uses CRI, dockershim will manage the cgroups and oom
|
// If kubelet uses CRI, dockershim will manage the cgroups and oom
|
||||||
// score for the docker processes.
|
// score for the docker processes.
|
||||||
@ -420,13 +420,13 @@ func (cm *containerManagerImpl) setupNode(activePods ActivePodsFunc) error {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
cont.ensureStateFunc = func(manager *fs.Manager) error {
|
cont.ensureStateFunc = func(manager *fs.Manager) error {
|
||||||
return EnsureDockerInContainer(dockerVersion, qos.DockerOOMScoreAdj, dockerContainer)
|
return EnsureDockerInContainer(dockerAPIVersion, qos.DockerOOMScoreAdj, dockerContainer)
|
||||||
}
|
}
|
||||||
systemContainers = append(systemContainers, cont)
|
systemContainers = append(systemContainers, cont)
|
||||||
} else {
|
} else {
|
||||||
cm.periodicTasks = append(cm.periodicTasks, func() {
|
cm.periodicTasks = append(cm.periodicTasks, func() {
|
||||||
glog.V(10).Infof("Adding docker daemon periodic tasks")
|
glog.V(10).Infof("Adding docker daemon periodic tasks")
|
||||||
if err := EnsureDockerInContainer(dockerVersion, qos.DockerOOMScoreAdj, nil); err != nil {
|
if err := EnsureDockerInContainer(dockerAPIVersion, qos.DockerOOMScoreAdj, nil); err != nil {
|
||||||
glog.Error(err)
|
glog.Error(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -654,10 +654,10 @@ func getPidsForProcess(name, pidFile string) ([]int, error) {
|
|||||||
// Temporarily export the function to be used by dockershim.
|
// Temporarily export the function to be used by dockershim.
|
||||||
// TODO(yujuhong): Move this function to dockershim once kubelet migrates to
|
// TODO(yujuhong): Move this function to dockershim once kubelet migrates to
|
||||||
// dockershim as the default.
|
// dockershim as the default.
|
||||||
func EnsureDockerInContainer(dockerVersion *utilversion.Version, oomScoreAdj int, manager *fs.Manager) error {
|
func EnsureDockerInContainer(dockerAPIVersion *utilversion.Version, oomScoreAdj int, manager *fs.Manager) error {
|
||||||
type process struct{ name, file string }
|
type process struct{ name, file string }
|
||||||
dockerProcs := []process{{dockerProcessName, dockerPidFile}}
|
dockerProcs := []process{{dockerProcessName, dockerPidFile}}
|
||||||
if dockerVersion.AtLeast(containerdVersion) {
|
if dockerAPIVersion.AtLeast(containerdAPIVersion) {
|
||||||
dockerProcs = append(dockerProcs, process{containerdProcessName, containerdPidFile})
|
dockerProcs = append(dockerProcs, process{containerdProcessName, containerdPidFile})
|
||||||
}
|
}
|
||||||
var errs []error
|
var errs []error
|
||||||
@ -818,19 +818,19 @@ func isKernelPid(pid int) bool {
|
|||||||
return err != nil
|
return err != nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Helper for getting the docker version.
|
// Helper for getting the docker API version.
|
||||||
func getDockerVersion(cadvisor cadvisor.Interface) *utilversion.Version {
|
func getDockerAPIVersion(cadvisor cadvisor.Interface) *utilversion.Version {
|
||||||
versions, err := cadvisor.VersionInfo()
|
versions, err := cadvisor.VersionInfo()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
glog.Errorf("Error requesting cAdvisor VersionInfo: %v", err)
|
glog.Errorf("Error requesting cAdvisor VersionInfo: %v", err)
|
||||||
return utilversion.MustParseSemantic("0.0.0")
|
return utilversion.MustParseSemantic("0.0")
|
||||||
}
|
}
|
||||||
dockerVersion, err := utilversion.ParseSemantic(versions.DockerVersion)
|
dockerAPIVersion, err := utilversion.ParseGeneric(versions.DockerAPIVersion)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
glog.Errorf("Error parsing docker version %q: %v", versions.DockerVersion, err)
|
glog.Errorf("Error parsing docker version %q: %v", versions.DockerVersion, err)
|
||||||
return utilversion.MustParseSemantic("0.0.0")
|
return utilversion.MustParseSemantic("0.0")
|
||||||
}
|
}
|
||||||
return dockerVersion
|
return dockerAPIVersion
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *containerManagerImpl) GetCapacity() v1.ResourceList {
|
func (m *containerManagerImpl) GetCapacity() v1.ResourceList {
|
||||||
|
@ -85,9 +85,9 @@ func (m *containerManager) doWork() {
|
|||||||
glog.Errorf("Unable to get docker version: %v", err)
|
glog.Errorf("Unable to get docker version: %v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
version, err := utilversion.ParseGeneric(v.Version)
|
version, err := utilversion.ParseGeneric(v.APIVersion)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
glog.Errorf("Unable to parse docker version %q: %v", v.Version, err)
|
glog.Errorf("Unable to parse docker version %q: %v", v.APIVersion, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// EnsureDockerInConatiner does two things.
|
// EnsureDockerInConatiner does two things.
|
||||||
|
Loading…
Reference in New Issue
Block a user