Commit Graph

8604 Commits

Author SHA1 Message Date
zouyee
cc35d588a7 Enable cAdvisor ProcessMetrics collecting
Signed-off-by: Zou Nengren <zouyee1989@gmail.com>
2019-10-25 12:19:38 +08:00
obitech
bba15d358c Add strict deserialization for kubelet component config
CodecFactory is started with EnableStrict that throws an error when deserializing
a Kubelet component config that is malformed (e.g. unknown or duplicate keys).

When strict decoding a v1beta1 config fails, non-strict decoding is used and a warning is emitted.
For this, NewSchemeAndCodecs is now a variadic function that can take multiple
arguments for augmenting the returned codec factory. Strict decoding is
then explicitely enabled when decoding a kubelet config.
Additionally, decoding a RemoteConfigSource needs to be non-strict
to avoid an accidental error when it contains newer API fields that are not
yet known to the Kubelet.

DecodeKubeletConfiguration returns a wrapped error instead of a simple string
so its type can be tested.

Add unit tests for unhappy paths when loading a component config

Add keys for test cases struct fields, remove nil field initialization

Co-Authored-By: Jordan Liggitt <jordan@liggitt.net>
2019-10-24 19:37:35 +02:00
Kubernetes Prow Robot
f6644d4366 Merge pull request #78938 from nolancon/socket-mask-unit-test
Clean-up and additional test cases for socket-mask unit test.
2019-10-24 09:49:12 -07:00
Alex Wang
b1a3fb4988 change kubelte nodeInfo to nodeLister 2019-10-24 22:46:59 +08:00
Jan Chaloupka
d32c76fc03 Require exact match when calling Get method within fake clientset
`Get` method within the fake clientset returns an object that would not be normally returned when using the real clientset. Reproducer:

```go
package main

import (
	v1 "k8s.io/api/core/v1"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	"k8s.io/client-go/kubernetes/fake"
)

func main () {
	cm := &v1.ConfigMap{
		ObjectMeta: metav1.ObjectMeta{Namespace: metav1.NamespaceSystem, Name: "cm"},
		}

	client := fake.NewSimpleClientset(cm)
	obj, err := client.CoreV1().ConfigMaps("").Get("", metav1.GetOptions{})
	if err != nil {
		panic(err)
	}
	fmt.Printf("obj: %#v\n", obj)
}
```

stored under `test.go` of `github.com/kubernetes/kubernetes` (master HEAD) root directory and ran:

```sh
$ go run test.go
obj: &v1.ConfigMap{TypeMeta:v1.TypeMeta{Kind:"", APIVersion:""}, ObjectMeta:v1.ObjectMeta{Name:"cm", GenerateName:"", Namespace:"kube-system", SelfLink:"", UID:"", ResourceVersion:"", Generation:0, CreationTimestamp:v1.Time{Time:time.Time{wall:0x0, ext:0, loc:(*time.Location)(nil)}}, DeletionTimestamp:(*v1.Time)(nil), DeletionGracePeriodSeconds:(*int64)(nil), Labels:map[string]string(nil), Annotations:map[string]string(nil), OwnerReferences:[]v1.OwnerReference(nil), Finalizers:[]string(nil), ClusterName:"", ManagedFields:[]v1.ManagedFieldsEntry(nil)}, Data:map[string]string(nil), BinaryData:map[string][]uint8(nil)}
```

As you can see fake clientset with a "test" configmap is created. When getting the object through the clientset back, I intentionally set the object name to an empty string. I would expect to get an error saying config map "" was not found. However, I get "test" configmap instead.

Reason for that is inside implementation of `filterByNamespaceAndName` private function:
```go
func filterByNamespaceAndName(objs []runtime.Object, ns, name string) ([]runtime.Object, error) {
	var res []runtime.Object

	for _, obj := range objs {
		acc, err := meta.Accessor(obj)
		if err != nil {
			return nil, err
		}
		if ns != "" && acc.GetNamespace() != ns {
			continue
		}
		if name != "" && acc.GetName() != name {
			continue
		}
		res = append(res, obj)
	}

	return res, nil
}
```

When `name` is empty, `name != "" && acc.GetName() != name` condition is false and thus `obj` is consider as a fit.

[1] https://github.com/kubernetes/client-go/blob/master/testing/fixture.go#L481-L493
2019-10-24 14:41:48 +02:00
Ted Yu
ae9e93d784 Move CheckLimitsForResolvConf to Kubelet#syncLoop 2019-10-23 17:16:23 -07:00
Kubernetes Prow Robot
037751e7ad Merge pull request #83986 from qingsenLi/k8s-191016
Fix Typos in pkg/kubelet/dockershim/docker_service.go
2019-10-23 15:53:50 -07:00
Kubernetes Prow Robot
41a4133318 Merge pull request #83931 from cheftako/context2
This adds context from for cloud calls for Kubelet.
2019-10-23 06:44:21 -07:00
Yecheng Fu
46b1e264dc support local volume block mode reconstruction 2019-10-23 19:32:15 +08:00
Kubernetes Prow Robot
6d314f860e Merge pull request #84156 from wawa0210/win-performance-counter
Fix windows performance counter error on Non-English environemnt
2019-10-22 20:10:24 -07:00
Kubernetes Prow Robot
a005925a71 Merge pull request #84048 from jsafrane/kubelet-volumemode-checks
Check PV volumeMode in kubelet even when block feature is off
2019-10-22 20:10:13 -07:00
Jan Safranek
c9fc26d85e Fix volumeMode retrieval when BlockVolume feature is off
API served does not need to default volumeMode to Filesystem.
2019-10-22 10:17:14 +02:00
xiaozhang
685c8f93d9 fix windows performance counter father information failed on Non-English environment 2019-10-21 19:49:13 +08:00
Clayton Coleman
3c44e11cfa kubelet: Record preemptions similarly to evictions
A preemption is a disruption event that should have a metric so that
the rate of preemption can be assessed. Nodes that are under heavy
preemption may have conflicting workloads or otherwise need attention.
A sudden burst of preemption on a cluster in steady state could
indicate pathological conditions within the scheduler or workload
controllers.
2019-10-19 19:07:37 -04:00
draveness
1163a1d51e feat: update taint nodes by condition to GA 2019-10-19 09:17:41 +08:00
nolancon
b0a85177d2 Clean-up and additional test cases for socket-mask unit test. 2019-10-18 04:16:06 +01:00
Jan Safranek
acf129443c Check PV volumeMode in kubelet even when block feature is off 2019-10-17 15:26:48 +02:00
Kubernetes Prow Robot
c63ec82490 Merge pull request #75190 from deads2k/kubelet-timeout
set backup value to ensure connections against kubelets eventually close
2019-10-16 22:24:38 -07:00
Kubernetes Prow Robot
cb19b56831 Merge pull request #83419 from deads2k/insecure-backend-proxy
Insecure backend proxy
2019-10-16 13:58:38 -07:00
David Eads
ff689ce3de set backup value to ensure connections against kubelets eventually close 2019-10-16 13:39:14 -04:00
David Eads
867ee1d5ff add insecurebackendproxy 2019-10-16 11:43:17 -04:00
wojtekt
dcf8200d28 Bump default NodeStatusReportFrequency to 5m 2019-10-16 16:37:22 +02:00
qingsenLi
8d3daa8260 fix errors 2019-10-16 22:11:47 +08:00
walter
d9e57861e5 This adds context from for cloud calls for Kubelet.
It continues the propogation started in #59287.
2019-10-14 22:01:22 -07:00
Bruce Ma
213c378562 modify error output in cniNetworkPlugin
Signed-off-by: Bruce Ma <brucema19901024@gmail.com>
2019-10-14 20:17:27 +08:00
Bob Killen
2e52875917 Prune inactive owners from pkg/kubelet/* network related OWNERS files. 2019-10-13 08:51:00 -04:00
Kubernetes Prow Robot
0599ca2bcf Merge pull request #81594 from jfbai/remove-duplicated-log
Remove duplicated log.
2019-10-11 19:38:38 -07:00
Kubernetes Prow Robot
017842d49d Merge pull request #83492 from ConnorDoyle/topo-align-all-qos
Topology manager aligns pods of all QoS classes.
2019-10-11 03:03:40 -07:00
Louise Daly
a353247d44 Fixed bug in TopologyManager with SingleNUMANode Policy
This patch fixes an issue where best-effort pods were not admitted
to the node if the single-numa-node policy was set.

This was because the Admit policy in single-numa-node policy does
not admit any pod where the hint is anything but single NUMA node. The 'best hint' in this case is {<set bits for num. Numa Nodes on machine>, true}
So on a machine with 2 NUMA nodes the best hint for a best-effort pod is {11,true} as best-effort pods have no Topology preferences.

The single-numa-node policy fails any pod with a not preferred hint OR a hint where > 1 bits are set, thus the above example resulting in termintaed pods with a Topology Affinity Error.

This is a short term fix for the single-numa-node policy, as there will be code refactoring for the 1.17 release.
2019-10-11 07:00:37 +01:00
Kubernetes Prow Robot
4561b67971 Merge pull request #83697 from klueska/fix-single-numa-with-one-provider
Fixed bug in TopologyManager with SingleNUMANode Policy
2019-10-10 19:00:33 -07:00
RainbowMango
633bb52b49 Deal with auto-generated files.
Update bazel by hack/update-bazel.sh
2019-10-11 09:26:58 +08:00
RainbowMango
3b07393ea8 Refactor UT with testutil from k/k. 2019-10-11 09:25:17 +08:00
Kubernetes Prow Robot
3db6d3abcf Merge pull request #83551 from dims/move-external-facing-kubelet-apis-to-staging
Move external facing kubelet apis to staging
2019-10-10 13:41:36 -07:00
Connor Doyle
a598369e3c Gofmt. 2019-10-10 12:16:21 -07:00
Connor Doyle
a9203ebdcf Topology manager aligns pods of all QoS classes. 2019-10-10 12:16:21 -07:00
Zida
bc56cf45a5 Fix comment typos in prober 2019-10-10 14:53:08 +08:00
SataQiu
23a8be6e5f remove direct references to prometheus/testutil from kubelet/metrics 2019-10-10 12:56:28 +08:00
Kevin Klues
5501f542cd Fixed bug in TopologyManager with SingleNUMANode Policy
This patch fixes an issue in the TopologyManager that wouldn't allow
pods to be admitted if pods were launched with the SingleNUMANode policy
and any of the hint providers had no NUMA preferences.

This is due to 2 factors:

1) Any hint provider that passes back a `nil` as its hints, has its hint
automatically transformed into a single {11 true} hint before merging

2) We added a special casing for the SingleNumaNodePolicy() in the
TopologyManager that essentially turns these hints into a
{11 false} anytime a {11 true} is seen.

The current patch reworks this logic so the that TopologyManager can
tell the difference between a "don't care" hint and a true "{11 true}"
hint returned by the hint provider. Only true "{11 true}" hints will be
converted by the special casing for the SingleNumaNodePolicy(), while
"don't care" hints will not.

This is a short term fix for this issue until we do a larger refactoring
of this code for the 1.17 release.
2019-10-09 17:41:08 -07:00
Guangming Wang
97e2576750 hostport return error when claim SCTP type port
revert last changes, just modify typos in unit test, and remove failed assert

sub count of sctp port when assert of len compare
2019-10-09 20:02:04 +08:00
Kubernetes Prow Robot
4b002b3baa Merge pull request #82123 from xiaoanyunfei/cleanup/take-effect-stateofworld-hashmap
replace iteration with hashmap in *state_of_world
2019-10-09 02:17:50 -07:00
Kubernetes Prow Robot
5ce75a8734 Merge pull request #83625 from mrobson/log-cgroups
Add podCgroup to process kill events to allow for correlation
2019-10-09 00:56:01 -07:00
RainbowMango
6099d49046 Deal with auto-generated files.
- Update bazel by hack/update-bazel.sh
2019-10-09 15:12:21 +08:00
RainbowMango
debe2f7b43 Refactor TestRunningPodAndContainerCount with metrics testutil 2019-10-09 15:09:23 +08:00
Kubernetes Prow Robot
4cff1c3ea1 Merge pull request #81280 from yqwang-ms/yqwang/exitmsglost
Fix Container exit message lost due to FallbackToLogsOnError is not compatible with ContainerCannotRun
2019-10-08 15:41:51 -07:00
Kubernetes Prow Robot
cc8bfd1cdd Merge pull request #78720 from goodluckbot/fix-kubelet-runtime-error-log-level
Fix log level for runtime error in kubelet.go
2019-10-08 10:57:10 -07:00
mrobson
ad3dcb9fa0 Add podCgroup to process kill events to allow for correlation 2019-10-08 13:12:48 -04:00
Kubernetes Prow Robot
d70b2db1f2 Merge pull request #83296 from yutedz/kill-cgrp-proc
Only kill process where killing failed during previous iterations
2019-10-08 07:19:13 -07:00
Kubernetes Prow Robot
edc4ff3b73 Merge pull request #83499 from SataQiu/metrics-kubelet
Eliminate direct references to prometheus from kubelet
2019-10-08 05:25:11 -07:00
Kubernetes Prow Robot
3f8f0a32fa Merge pull request #83527 from odinuge/runc-rc9
Bump dependency opencontainers/runc@v1.0.0-rc9
2019-10-08 03:45:44 -07:00
Kubernetes Prow Robot
8098bae921 Merge pull request #83451 from jsafrane/block-reconstruct
Fix block volume reconstruction
2019-10-08 03:45:18 -07:00