Commit Graph

40607 Commits

Author SHA1 Message Date
Kubernetes Prow Robot
f2ed1b5580 Merge pull request #96016 from cici37/informer
Move informer_factory to staging
2020-10-30 00:44:06 -07:00
Kubernetes Prow Robot
d0bee69fc9 Merge pull request #94636 from hprateek43/cpu_threads_parameter
Added config parameter for CPU threads
2020-10-29 21:04:05 -07:00
cici37
9465d95ea6 Move CCM to staging k8s.io/cloud-provider 2020-10-29 20:50:23 -07:00
Shihang Zhang
ff641f6eb2 mv TokenRequest and TokenRequestProjection to GA 2020-10-29 20:47:01 -07:00
Tim Hockin
a4c9330683 Populate ClusterIPs on read
Old stored services will not have the `clusterIPs` field when read back
without this.

This includes some renaming for clarity and expanded comments, and a new
test for default on read.
2020-10-29 20:40:39 -07:00
Kubernetes Prow Robot
ad6a2af7d8 Merge pull request #95531 from damemi/move-scheduler-helpers
Move MatchNodeSelectorTerms to k8s.io/component-helpers
2020-10-29 20:06:05 -07:00
Kubernetes Prow Robot
a71334b64c Merge pull request #95925 from deads2k/doc-events
Event: Document TTL and best-effort-ness
2020-10-29 17:40:22 -07:00
Kubernetes Prow Robot
e91cb0b1b5 Merge pull request #95196 from thockin/auto-wipe-linked-service-fields
Automatically wipe dependent fields on service "type" updates
2020-10-29 17:40:06 -07:00
Hugo Fonseca
0794bf65bc HTTP Probe: Add 'Accept' header by default
When using a HTTP probe, the request will now have a "Accept" header by default with the "*/*" (accept all)
Most tools do add this header (see curl) so it's a reasonable expectation that http probe has it as well
2020-10-30 00:32:49 +00:00
Cheng Xing
d9a629fe3a IsVolumeAttachedToNode() renamed to GetAttachState(), and returns 3 states instead of combining "uncertain" and "detached" into "false" 2020-10-29 13:24:51 -07:00
Ricardo Pchevuzinske Katz
912d9673cb kubectl flush profiling when get a sigterm
Signed-off-by: Ricardo Pchevuzinske Katz <ricardo.katz@gmail.com>
2020-10-29 17:15:12 -03:00
cici37
a91a2cdad6 Move informer_factory to staging 2020-10-29 12:20:33 -07:00
Marek Siarkowicz
6c7132b284 Add datapolicy tags to staging/src/k8s.io/legacy-cloud-providers 2020-10-29 19:47:32 +01:00
Mike Dame
b7ba77c25b Move MatchNodeSelectorTerms to k8s.io/component-helpers 2020-10-29 13:39:13 -04:00
wojtekt
a19f528351 Remove FieldMatchingFlags 2020-10-29 18:25:51 +01:00
Marek Siarkowicz
899b9c1f74 Add datapolicy tags to pkg/scheduler/ 2020-10-29 18:24:41 +01:00
Marek Siarkowicz
945e1e7892 Add datapolicy tags to pkg/apis 2020-10-29 18:07:32 +01:00
Kubernetes Prow Robot
917dcbabe1 Merge pull request #95985 from saschagrunert/psp-seccomp-annotation-fix
Fix seccomp PSP docker/default annotation handling
2020-10-29 09:10:59 -07:00
Maciej Szulik
9a4dfec2be Introduce api-extensions category in k8s apiserver
This category includes:
1. mutating admission configs
2. validating admission configs
3. CRDs
4. APIServices
2020-10-29 16:44:26 +01:00
Sascha Grunert
5588f025e2 Fix seccomp PSP docker/default annotation handling
With the graduation of seccomp to GA we automatically convert the
deprecated seccomp profile annotation `docker/default` to
`runtime/default`. This means that we now have to automatically allow
`runtime/default` if a user specifies `docker/default` and vice versa in
an allowed PSP seccomp profile.

Signed-off-by: Sascha Grunert <sgrunert@suse.com>
2020-10-29 14:08:14 +01:00
Kubernetes Prow Robot
2729b8e375 Merge pull request #95871 from damemi/move-unchanged-scheduler-helpers
Change function signature for MatchNodeSelectorTerms
2020-10-29 04:18:59 -07:00
Harsh Singh
1763688d71 Added config parameter for CPU threads 2020-10-29 12:16:10 +05:30
Kubernetes Prow Robot
5937e7eef7 Merge pull request #92343 from knight42/fix/flags-before-plugin
fix(kubectl): print error if users place flags before plugin name
2020-10-28 20:30:58 -07:00
Tim Hockin
4f8fb1d3ca Wipe some fields on service "type" updates
Service has had a problem since forever:

- User creates a service type=LoadBalancer
- We silently allocate them a NodePort
- User changes type to ClusterIP
- We fail the operation because they did not clear NodePort

They never asked for or used the NodePort!

Dual-stack introduced some dependent fields that get auto-wiped on
updates.  This carries it further.

If you squint, you can see Service as a big, messy discriminated union,
with type as the discriminator. Ignoring fields for non-selected
union-modes seems right.

This introduces the potential for an apply loop. Specifically, we will
accept YAML that we did not previously accept. Apply could see the
field in local YAML and not in the server and repeatedly try to patch it
in. But since that YAML is currently an error, it seems like a very low
risk. Almost nobody actually specifies their own NodePort values.

To mitigate this somewhat, we only auto-wipe on updates. The same YAML
would fail to create. This is a little inconsistent. We could
auto-wipe on create, too, at the risk of more potential impact.

To do this properly, we need to know the old and new values, which means
we can not do it in defaulting or conversion. So we do it in strategy.

This change also adds unit tests and updates e2e tests to rely on and
verify this behavior.
2020-10-28 10:41:26 -07:00
Tim Hockin
c5f3e560e4 Make some methods into non-methods 2020-10-28 10:41:26 -07:00
Patrick Ohly
24f5764787 pv controller test: more test cases
The main goal was to cover retrieval of a PVC from the apiserver when
it isn't known yet. This is achieved by adding PVCs and (for the sake
of completeness) PVs to the reactor, but not the controller, when a
special annotation is set. The approach with a special annotation was
chosen because it doesn't affect other tests.

The other test cases were added while checking the existing tests
because (at least at first glance) the situations seemed to be not
covered.
2020-10-28 10:52:11 +01:00
Patrick Ohly
22f81e9e0b pv controller test: use sub tests
This makes it possible to run individual tests.
2020-10-28 10:39:59 +01:00
Patrick Ohly
06f934ea1f pv controller test: enable klog output
This makes it possible to run tests with -v=5 and thus actually get
some output.
2020-10-28 10:39:10 +01:00
Yixiang2019
62710bc034 cleanup: fix some error log capitalization
Signed-off-by: Yixiang2019 <wang.yixiang@zte.com.cn>
2020-10-28 16:44:54 +08:00
Cheng Xing
a61743b125 Fixes Attach Detach Controller reconciler race reading ActualStateOfWorld and operation pending states; fixes reconciler_test mock detach to account for multiple attaches on a node 2020-10-27 23:51:55 -07:00
Kubernetes Prow Robot
a9e9cabbea Merge pull request #94676 from JornShen/fix_Test_Run_Positive_VolumeMountControllerAttachEnabledRace_data_trace
Fix flaky unit test Test_Run_Positive_VolumeMountControllerAttachEnabledRace data race
2020-10-27 23:31:56 -07:00
Kubernetes Prow Robot
2754cc23e2 Merge pull request #95801 from jingxu97/oct/owner
Add jingxu97 to volume/util owners
2020-10-27 14:26:11 -07:00
W. Trevor King
f95ec84322 Event: Document TTL and best-effort-ness
Generally try to waive away folks who see a particular event stream
and feel tempted to extrapolate and build tooling that expects the
same underlying resource transition chain to continue to produce a
similar event stream as the underlying components evolve and are
updated.  New controllers should not be constrained to be
backwards-compatible with previous versions with regard to Event
emission.  This is distinct from the Event type itself, which has the
usual Kubernetes-API compatibility commitments for versioned types.

The EventTTL default has been 1h since 7e258b85bd (Reduce TTL for
events in etcd from 48hrs to 1hr, 2015-03-11, #5315), and remains so
today:

  $ git --no-pager log -1 --format='%h %s' origin/master
  8e5c02255c Merge pull request #90942 from ii/ii-create-pod%2Bpodstatus-resource-lifecycle-test
  $ git --no-pager grep EventTTL: 8e5c02255c cmd/kube-apiserver/app/options/options.go
  8e5c02255cc:cmd/kube-apiserver/app/options/options.go:		EventTTL:               1 * time.Hour,

In this space [1,2]:

  To avoid filling up master's disk, a retention policy is enforced:
  events are removed one hour after the last occurrence.  To provide
  longer history and aggregation capabilities, a third party solution
  should be installed to capture events.
  ...
  Note: It is not guaranteed that all events happening in a cluster
  will be exported to Stackdriver.  One possible scenario when events
  will not be exported is when event exporter is not running
  (e.g. during restart or upgrade).  In most cases it's fine to use
  events for purposes like setting up metrics and alerts, but you
  should be aware of the potential inaccuracy.
  ...
  To prevent disturbing your workloads, event exporter does not have
  resources set and is in the best effort QOS class, which means that
  it will be the first to be killed in the case of resource
  starvation.

Although that's talking more about export from etcd -> external
storage, and not about cluster components submitting events to etcd.

[1]: https://kubernetes.io/docs/tasks/debug-application-cluster/events-stackdriver/
[2]: https://github.com/kubernetes/website/pull/4155/files#diff-d8eb69c5436aa38b396d4f3ed75e4792R10
2020-10-27 15:36:37 -04:00
Kubernetes Prow Robot
93fcb22e64 Merge pull request #95687 from tangwz/make_profile_an_interface
scheduler: make Profile an interface.
2020-10-27 11:41:26 -07:00
Renaud Gaubert
969e45f49f Add the pod_resources_endpoint_requests_total metric 2020-10-27 11:23:39 -07:00
Kubernetes Prow Robot
94cedd9f14 Merge pull request #95720 from draveness/feature/topology-manager-format
style: update comments in topology manager
2020-10-27 10:36:38 -07:00
Kubernetes Prow Robot
1cb1005437 Merge pull request #95662 from SergeyKanzhelev/nilInterfaceInShouldRecordEvent
The function shouldRecordEvent will panic when the value of input obj…
2020-10-27 10:36:28 -07:00
Kubernetes Prow Robot
554319cce8 Merge pull request #95410 from benhxy/staticcheck
Fix static check for pkg/controller/podautoscaler
2020-10-27 10:36:14 -07:00
Mike Dame
d9f334683e Change function signature for MatchNodeSelectorTerms
As part of externalizing this function to the k8s.io/component-helpers repo,
this commit simplifies the function signature and makes its 2 helpers private
(nodeSelectorRequirementsAsSelector and nodeSelectorRequirementsAsFieldSelector).
2020-10-27 12:52:06 -04:00
Jan Chaloupka
6822a0ec20 Move pkg/apis/core/v1.IsScalarResourceName under pkg/scheduler/util
IsScalarResourceName is imported only inside pkg/scheduler packages.
2020-10-27 13:40:32 +01:00
Patrick Ohly
5686664a1d PV controller: don't delete PVs when PVC is not known yet
Normally, the PV controller knows about the PVC that triggers the
creation of a PV before it sees the PV, because the PV controller must
set the volume.beta.kubernetes.io/storage-provisioner annotation that
tells an external provisioner to create the PV.

When restarting, the PV controller first syncs its caches, so that
case is also covered.

However, the creator of a PVC might decided to set that annotation
itself to speed up volume creation. While unusual, it's not forbidden
and thus part of the external Kubernetes API. Whether it makes sense
depends on the intentions of the user.

When that is done and there is heavy load, an external provisioner
might see the PVC and create a PV before the PV controller sees the
PVC. If the PV controller then encounters the PV before the PVC, it
incorrectly concludes that the PV needs to be deleted instead of being
bound.

The same issue occurred earlier for external binding and the existing
code for looking up a PVC in the cache or in the apiserver solves the
issue also for volume provisioning, it just needs to be enabled also
for PVs without the pv.kubernetes.io/bound-by-controller annotation.
2020-10-27 11:26:58 +01:00
Sergey Kanzhelev
d974b142d3 follow up for #94109 2020-10-27 07:02:44 +00:00
Kubernetes Prow Robot
47943d5f9c Merge pull request #94109 from derekwaynecarr/cleanup-kubelet-todos
Cleanup kubelet TODOs that are no longer pertinent.
2020-10-26 23:49:59 -07:00
tangwz
5f3efa671d scheduler: make Profile an interface. 2020-10-27 09:13:04 +08:00
Kubernetes Prow Robot
6c5cda5a40 Merge pull request #95473 from troy0820/fix/validate-verb
Validate verb in auth can-i command
2020-10-26 16:23:59 -07:00
Kubernetes Prow Robot
3d6026499b Merge pull request #95235 from andrewsykim/controlplane-egress-selector
apiserver: support 'controlplane' as an egress selector type
2020-10-26 14:45:59 -07:00
Khaled Henidak (Kal)
6675eba3ef dual stack services (#91824)
* api: structure change

* api: defaulting, conversion, and validation

* [FIX] validation: auto remove second ip/family when service changes to SingleStack

* [FIX] api: defaulting, conversion, and validation

* api-server: clusterIPs alloc, printers, storage and strategy

* [FIX] clusterIPs default on read

* alloc: auto remove second ip/family when service changes to SingleStack

* api-server: repair loop handling for clusterIPs

* api-server: force kubernetes default service into single stack

* api-server: tie dualstack feature flag with endpoint feature flag

* controller-manager: feature flag, endpoint, and endpointSlice controllers handling multi family service

* [FIX] controller-manager: feature flag, endpoint, and endpointSlicecontrollers handling multi family service

* kube-proxy: feature-flag, utils, proxier, and meta proxier

* [FIX] kubeproxy: call both proxier at the same time

* kubenet: remove forced pod IP sorting

* kubectl: modify describe to include ClusterIPs, IPFamilies, and IPFamilyPolicy

* e2e: fix tests that depends on IPFamily field AND add dual stack tests

* e2e: fix expected error message for ClusterIP immutability

* add integration tests for dualstack

the third phase of dual stack is a very complex change in the API,
basically it introduces Dual Stack services. Main changes are:

- It pluralizes the Service IPFamily field to IPFamilies,
and removes the singular field.
- It introduces a new field IPFamilyPolicyType that can take
3 values to express the "dual-stack(mad)ness" of the cluster:
SingleStack, PreferDualStack and RequireDualStack
- It pluralizes ClusterIP to ClusterIPs.

The goal is to add coverage to the services API operations,
taking into account the 6 different modes a cluster can have:

- single stack: IP4 or IPv6 (as of today)
- dual stack: IPv4 only, IPv6 only, IPv4 - IPv6, IPv6 - IPv4

* [FIX] add integration tests for dualstack

* generated data

* generated files

Co-authored-by: Antonio Ojea <aojea@redhat.com>
2020-10-26 13:15:59 -07:00
Renaud Gaubert
817bf784d2 Kubelet now implements the V1 podresources API 2020-10-26 12:10:18 -07:00
Kubernetes Prow Robot
5ed903dbfd Merge pull request #95809 from alculquicondor/rebench-spread
Optimize NormalizeScore for PodTopologySpread
2020-10-26 11:23:02 -07:00
Kubernetes Prow Robot
c34a2c44a8 Merge pull request #95866 from JornShen/add_metrics_report_time_permit_change
Report a metric for time taken to perform recursive permission change
2020-10-26 10:25:37 -07:00