Commit Graph

8604 Commits

Author SHA1 Message Date
Kevin Klues
2327934a86 Rename GetTopologyPodAmitHandler() as
GetAllocateResourcesPodAdmitHandler(). It is named as such to reflect its
new function. Also remove the Topology Manager feature gate check at higher level
kubelet.go, as it is now done in GetAllocateResourcesPodAdmitHandler().
2020-02-27 07:52:43 +00:00
nolancon
a9c6129577 Device Manager - Update unit tests
- Pass container to Allocate().
- Loop through containers to call Allocate() on container by container
basis.
2020-02-27 07:24:34 +00:00
nolancon
cb9fdc49db Device Manager - Refactor allocatePodResources
- allocatePodResources logic altered to allow for container by container
device allocation.
- New type PodReusableDevices
- New field in devicemanager devicesToReuse
2020-02-27 07:24:34 +00:00
nolancon
0a9bd0334d CPU Manager - Updates to unit tests:
- Where previously we called manager.AddContainer(), we now call both
manager.Allocate() and manager.AddContainer().
- Some test cases now have two expected errors. One each
from Allocate() and AddContainer(). Existing outcomes are unchanged.
2020-02-27 07:24:34 +00:00
nolancon
467f66580b CPU Manager - Add check to policy.Allocate() for init conatiners
If container allocated CPUs is an init container, release those CPUs
back into the shared pool for re-allocation to next container.
2020-02-27 07:24:33 +00:00
nolancon
709989efa2 CPU Manager - Rename policy.AddContainer() to policy.Allocate() 2020-02-27 07:24:33 +00:00
Kevin Klues
0d68bffd03 Change GetTopologyPodAdmitHandler() to be more general
GetTopologyPodAdmitHandler() now returns a lifecycle.PodAdmitHandler
type instead of the TopologyManager directly. The handler it returns
is generally responsible for attempting to allocate any resources that
require a pod admission check. When the TopologyManager feature gate
is on, this comes directly from the TopologyManager. When it is off,
we simply attempt the allocations ourselves and fail the admission
on an unexpected error. The higher level kubelet.go feature gate
check will be removed in an upcoming PR.
2020-02-27 07:24:26 +00:00
Clayton Coleman
b252865479 kubelet: Avoid sending no-op patches
In an e2e run, out of 1857 pod status updates executed by the
Kubelet 453 (25%) were no-ops - they only contained the UID of
the pod and no status changes. If the patch is a no-op we can
avoid invoking the server and continue.
2020-02-26 23:06:38 -05:00
Kubernetes Prow Robot
a726c9c9cb Merge pull request #88435 from andrewsykim/ccm-clean-up
move well known cloud provider taints to k8s.io/cloud-provider/api
2020-02-26 13:33:41 -08:00
Kubernetes Prow Robot
6ec3ea855d Merge pull request #85282 from serathius/flag-kubelet
Add show-hidden-metrics-for-version to kubelet
2020-02-26 03:54:26 -08:00
Kubernetes Prow Robot
16a7650e2b Merge pull request #86101 from PatrickLang/fix-cpumaximum
Fix cpu resource limit on Windows
2020-02-26 00:20:26 -08:00
RainbowMango
7b7c73bf87 Clean up duplicate code and remove import cycle. 2020-02-26 15:19:29 +08:00
Kubernetes Prow Robot
851efa8a34 Merge pull request #84051 from bart0sh/PR0079-multiple-sizes-hugepages
Implement support for multiple sizes huge pages
2020-02-25 14:40:27 -08:00
Kubernetes Prow Robot
46fcbcf84d Merge pull request #84792 from DataDog/eric.mountain/simple_probe_no_ref_fix_master
Fixes `No ref for container` in probes after kubelet restart
2020-02-25 11:58:49 -08:00
Marek Siarkowicz
d44d5b35f3 Add show-hidden-metrics-for-version to kubelet 2020-02-25 20:46:34 +01:00
mattjmcnaughton
f215096715 Add error path testing to image handling by kubeGenericRuntimeManager
In https://github.com/kubernetes/kubernetes/pull/88372, we added the
ability to inject errors to the `FakeImageService`. Use this ability to
test the error paths executed by the `kubeGenericRuntimeManager` when
underlying `ImageService` calls fail.

I don't foresee this change having a huge impact, but it should set a
good precedent for test coverage, and should the failure case behavior
become more "interesting" or risky in the future, we already will have
the scaffolding in place with which we can expand the tests.
2020-02-25 08:27:30 -05:00
Patrick Lang
63ff616aa8 Adding Windows CPU limit tests 2020-02-24 19:46:39 +00:00
Patrick Lang
19acf7d051 Fix cpu resource limit on Windows 2020-02-24 19:46:39 +00:00
shikanon
d09ce2d6ac fix typos error in pkg/kubelet/lifecycle 2020-02-25 01:21:27 +08:00
andrewsykim
8c633356df move well known cloud provider taints to k8s.io/cloud-provider/api
Signed-off-by: andrewsykim <kim.andrewsy@gmail.com>
2020-02-23 19:54:59 -05:00
Kubernetes Prow Robot
20e6883a75 Merge pull request #88290 from tallclair/spr-deprecate
Start deprecation process for StreamingProxyRedirects
2020-02-21 10:32:45 -08:00
Kubernetes Prow Robot
0943976757 Merge pull request #83295 from oshothebig/typo
Fix typo in docker_sandbox.go
2020-02-21 10:32:32 -08:00
Eric Mountain
4cb28f64ea Fixes for the No ref for container in probes after kubelet restart 2020-02-21 13:32:48 +01:00
Kubernetes Prow Robot
d0983b562d Merge pull request #84731 from verb/ec-pid
Add namespace targeting mode to CRI and kubelet
2020-02-20 04:29:17 -08:00
Kubernetes Prow Robot
224aca4e01 Merge pull request #88251 from kublr/fix/kubelet-systemd-reservation
Partially fix incorrect configuration of kubepods.slice unit by kubelet
2020-02-19 16:11:25 -08:00
Ted Yu
884e5ee3d4 Check that ImageInspect pointer is not nil 2020-02-19 12:45:54 -08:00
Tim Allclair
98ad7416fa Start deprecation process for StreamingProxyRedirects 2020-02-19 10:53:45 -08:00
Ed Bartosh
0eb65bd7da Implement support for multiple sizes huge pages
This implementation allows Pod to request multiple hugepage resources
of different size and mount hugepage volumes using storage medium
HugePage-<size>, e.g.

spec:
  containers:
    resources:
      requests:
        hugepages-2Mi: 2Mi
        hugepages-1Gi: 2Gi
    volumeMounts:
      - mountPath: /hugepages-2Mi
        name: hugepage-2mi
      - mountPath: /hugepages-1Gi
        name: hugepage-1gi
    ...
  volumes:
    - name: hugepage-2mi
      emptyDir:
        medium: HugePages-2Mi
    - name: hugepage-1gi
      emptyDir:
        medium: HugePages-1Gi

NOTE: This is an alpha feature.
      Feature gate HugePageStorageMediumSize must be enabled for it to work.
2020-02-19 18:15:40 +02:00
Kubernetes Prow Robot
64340bd914 Merge pull request #87906 from smarterclayton/evict_limit
kubelet: Record kubelet_evictions when limits are hit
2020-02-18 22:40:25 -08:00
YuikoTakada
a80564dbdd Fix non-ascii characters in pkg/kubelet/qos/doc.go 2020-02-19 05:07:26 +00:00
Kubernetes Prow Robot
3d70825195 Merge pull request #87933 from jdef/fix/86367
Fix docker/journald logging conformance
2020-02-18 20:58:25 -08:00
Clayton Coleman
af9e0be163 kubelet: Record kubelet_evictions when limits are hit
The pod, container, and emptyDir volumes can all trigger evictions
when their limits are breached. To ensure that administrators can
alert on these type of evictions, update kubelet_evictions to include
the following signal types:

* ephemeralcontainerfs.limit - container ephemeral storage breaches its limit
* ephemeralpodfs.limit - pod ephemeral storage breaches its limit
* emptydirfs.limit - pod emptyDir storage breaches its limit
2020-02-18 15:08:30 -05:00
mattjmcnaughton
f5080850fc Delete TODO in image_gc_manager
I think the TODO here may have actually been unnecessary. There isn't a
ton of interest around merging
https://github.com/kubernetes/kubernetes/pull/87425, which contains a
fix. Delete the TODO so we don't devote time to working on this area in
the future.
2020-02-18 08:35:29 -05:00
mattjmcnaughton
ccf488fe11 Delete TODO around implementing rate limiting to protect against DOS
From discussions in https://github.com/kubernetes/kubernetes/pull/83784,
it appears there actually isn't a ton of risk around a DOS. Delete the
TODO.
2020-02-18 08:24:25 -05:00
Oleg Chunikhin
b651178849 fix incorrect configuration of kubepods.slice unit by kubelet (issue #88197) 2020-02-17 13:22:45 -05:00
Kubernetes Prow Robot
1c60045db0 Merge pull request #88173 from BenTheElder/gives-a-whole-new-pause
upgrade pause everywhere
2020-02-15 02:11:27 -08:00
Kubernetes Prow Robot
1a0f923a65 Merge pull request #87712 from alena1108/jan30kubelet
Ineffassign fixes for pkg/controller and kubelet
2020-02-14 14:29:27 -08:00
James DeFelice
0e178f9341 rename to sharedLimitWriter 2020-02-14 13:48:41 -06:00
Benjamin Elder
1631825e44 bump pause to 3.2 in kubelet 2020-02-14 11:40:15 -08:00
Kubernetes Prow Robot
3273cd99b1 Merge pull request #88138 from thockin/sig-net-driver-approvers
Create an OWNERS alias for net-driver-approvers
2020-02-13 21:10:40 -08:00
Tim Hockin
fc5b08569f Create an OWNERS alias for net-driver-approvers 2020-02-13 14:43:45 -08:00
James DeFelice
a4230055f3 address review feedback 2020-02-13 11:44:11 -06:00
Hemant Kumar
c058073046 Add a event to PV when mount fails because of fs mismatch
Filesystem mismatch is a special event. This could indicate
either user has asked for incorrect filesystem or there is a error
from which mount operation can not recover on retry.

Co-Authored-By: Jordan Liggitt <jordan@liggitt.net>
2020-02-13 12:29:42 -05:00
Kubernetes Prow Robot
52fb02fdbe Merge pull request #87718 from wojtek-t/kubelet_not_watching_immutable_secret_configmaps
WatchBasedManager stops  watching immutable objects
2020-02-11 23:14:33 -08:00
Kevin Klues
0b168f0243 Change devicemanager to implement HintProvider.Allocate()
This change will not work on its own. Higher level code needs to make
sure and call Allocate() before AddContainer is called. This is already
being done in cases when the TopologyManager feature gate is enabled (in
the PodAdmitHandler of the TopologyManager). However, we need to make
sure we add proper logic to call it in cases when the TopologyManager
feature gate is disabled.
2020-02-10 03:27:47 +00:00
Kevin Klues
91f91858a5 Change CPUManager to implement HintProvider.Allocate()
This change will not work on its own. Higher level code needs to make
sure and call Allocate() before AddContainer is called. This is already
being done in cases when the TopologyManager feature gate is enabled (in
the PodAdmitHandler of the TopologyManager). However, we need to make
sure we add proper logic to call it in cases when the TopologyManager
feature gate is disabled.
2020-02-10 03:27:47 +00:00
Kevin Klues
9e4ee5ecc3 Add Allocate() call to TopologyManager's HintProvider interface
Having this interface allows us to perform a tight loop of:

    for each container {
        containerHints = {}
        for each provider {
	    containerHints[provider] = provider.GatherHints(container)
        }

        containerHints.MergeAndPublish()

        for each provider {
	    provider.Allocate(container)
        }
    }

With this in place we can now be sure that the hints gathered in one
iteration of the loop always consider the allocations made in the
previous.
2020-02-10 03:27:47 +00:00
Kevin Klues
a3f099ea4d Split devicemanager Allocate into two functions
Instead of having a single call for Allocate(), we now split this into two
functions Allocate() and UpdatePluginResources().

The semantics split across them:

// Allocate configures and assigns devices to a pod. From the requested
// device resources, Allocate will communicate with the owning device
// plugin to allow setup procedures to take place, and for the device
// plugin to provide runtime settings to use the device (environment
// variables, mount points and device files).
Allocate(pod *v1.Pod) error

// UpdatePluginResources updates node resources based on devices already
// allocated to pods. The node object is provided for the device manager to
// update the node capacity to reflect the currently available devices.
UpdatePluginResources(
    node *schedulernodeinfo.NodeInfo,
    attrs *lifecycle.PodAdmitAttributes) error

As we move to a model in which the TopologyManager is able to ensure
aligned allocations from the CPUManager, devicemanger, and any
other TopologManager HintProviders in the same synchronous loop, we will
need to be able to call Allocate() independently from an
UpdatePluginResources(). This commit makes that possible.
2020-02-10 03:27:47 +00:00
Kubernetes Prow Robot
ac97b2d65e Merge pull request #83507 from lyft/support-resetting-cpuacct
Prevent returning invalid usageNanoCores value when cpuacct is reset in a live container
2020-02-09 08:45:53 -08:00
Kubernetes Prow Robot
abe6321296 Merge pull request #87952 from mikedanese/opts
add *Options to Create, Update, and Patch in generated clientsets
2020-02-08 20:43:53 -08:00