Commit Graph

241 Commits

Author SHA1 Message Date
Patrick Ohly
2472291790 api: introduce separate VolumeResourceRequirements struct
PVC and containers shared the same ResourceRequirements struct to define their
API. When resource claims were added, that struct got extended, which
accidentally also changed the PVC API. To avoid such a mistake from happening
again, PVC now uses its own VolumeResourceRequirements struct.

The `Claims` field gets removed because risk of breaking someone is low:
theoretically, YAML files which have a claims field for volumes now
get rejected when validating against the OpenAPI. Such files
have never made sense and should be fixed.

Code that uses the struct definitions needs to be updated.
2023-08-21 15:31:28 +02:00
Gunju Kim
6aeff13def
Never drop the terminationGracePeriodSeconds of a probe 2023-07-18 01:34:02 +09:00
Kubernetes Prow Robot
b908e2710a
Merge pull request #113245 from pacoxu/dup-ports-warning
add warning for dup ports in containers[*].ports and service.ports
2023-07-15 00:31:15 -07:00
Paco Xu
df0d51d3b3 add some detailed message for dup container ports(steal from thockin) 2023-07-15 08:02:33 +08:00
Shiming Zhang
14b09c414a Add DownwardAPI validation for status.hostIPs 2023-07-14 09:35:31 +08:00
Shiming Zhang
dacb689002 Add dropDisabledStatusFields 2023-07-14 09:35:30 +08:00
Kubernetes Prow Robot
a9e40bd7c6
Merge pull request #114307 from rphillips/promote_probe_termination_grace_period
ProbeTerminationGracePeriod promote to GA
2023-07-13 13:41:38 -07:00
Patrick Ohly
444d23bd2f dra: generated name for ResourceClaim from template
Generating the name avoids all potential name collisions. It's not clear how
much of a problem that was because users can avoid them and the deterministic
names for generic ephemeral volumes have not led to reports from users. But
using generated names is not too hard either.

What makes it relatively easy is that the new pod.status.resourceClaimStatus
map stores the generated name for kubelet and node authorizer, i.e. the
information in the pod is sufficient to determine the name of the
ResourceClaim.

The resource claim controller becomes a bit more complex and now needs
permission to modify the pod status. The new failure scenario of "ResourceClaim
created, updating pod status fails" is handled with the help of a new special
"resource.kubernetes.io/pod-claim-name" annotation that together with the owner
reference identifies exactly for what a ResourceClaim was generated, so
updating the pod status can be retried for existing ResourceClaims.

The transition from deterministic names is handled with a special case for that
recovery code path: a ResourceClaim with no annotation and a name that follows
the Kubernetes <= 1.27 naming pattern is assumed to be generated for that pod
claim and gets added to the pod status.

There's no immediate need for it, but just in case that it may become relevant,
the name of the generated ResourceClaim may also be left unset to record that
no claim was needed. Components processing such a pod can skip whatever they
normally would do for the claim. To ensure that they do and also cover other
cases properly ("no known field is set", "must check ownership"),
resourceclaim.Name gets extended.
2023-07-11 14:23:48 +02:00
Gunju Kim
5d26bcd468 Sidecar: API changes
- Add SidecarContaienrs feature gate
- Add ContainerRestartPolicy type
- Add RestartPolicy field to the Container
- Drop RestartPolicy field if the feature is disabled
- Add validation for the SidecarContainers
- Allow restartable init containaers to have a startup probe
2023-07-07 21:39:34 +00:00
Giuseppe Scrivano
531d38e323
features: rename UserNamespacesStatelessPodsSupport
now it is called UserNamespacesSupport since all kind of volumes are
supported.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2023-06-22 15:19:50 +02:00
Humble Chirammal
471fd1ae8a deprecate RBD plugin from available in-tree drivers
Based on https://groups.google.com/g/kubernetes-sig-storage/c/h5751_B5LQM, the
consensus was to start the deprecation in v1.28.

This commit start the deprecation process of RBD plugin from in-tree
drivers.

ACTION REQUIRED:
   RBD volume plugin ( `kubernetes.io/rbd`) has been deprecated in this release
   and will be removed in a subsequent release. Alternative is to use RBD CSI driver
   (https://github.com/ceph/ceph-csi/) in your Kubernetes Cluster.

Signed-off-by: Humble Chirammal <humble.devassy@gmail.com>
2023-06-16 19:45:36 +05:30
Kubernetes Prow Robot
d93e1e95ff
Merge pull request #118548 from thockin/remove-warn-dup-volume-names
Remove unreachable warning on volume name dup
2023-06-08 19:44:12 -07:00
Kubernetes Prow Robot
af99df6a6b
Merge pull request #118547 from thockin/fix-dup-env-var-warn
Fix warnings on "duplicate" env vars
2023-06-07 22:58:12 -07:00
Tim Hockin
151509fb74
Remove unreachable warning on volume name dup
Volume names are validated to be unique and always have been.  The cited
issues are all about apply getting messed up, not the aspiserver
allowing dups.

```
$ k create -f /tmp/bad.yaml
The Deployment "bad-volumes-test" is invalid: spec.template.spec.volumes[1].name: Duplicate value: "config"

$ k apply --server-side -f /tmp/bad.yaml
Error from server: failed to create typed patch object (default/bad-volumes-test; apps/v1, Kind=Deployment): .spec.template.spec.volumes: duplicate entries for key [name="config"]

$ k apply -f /tmp/bad.yaml -o json | jq '.spec.template.spec.volumes'
The Deployment "bad-volumes-test" is invalid: spec.template.spec.volumes[1].name: Duplicate value: "config"
```
2023-06-07 17:14:49 -07:00
Tim Hockin
0ddaa7f7c9
Fix warnings on "duplicate" env vars
Some use-cases are not actually wrong
2023-06-07 15:59:36 -07:00
Paco Xu
7a80d7c839 add warning for duplicate containers[*].ports with the same port, protocol, hostPort, and hostIP 2023-06-06 14:52:48 +08:00
Humble Chirammal
c009667c6c deprecate CephFS plugin from available in-tree drivers.
https://groups.google.com/a/kubernetes.io/g/dev/c/g8rwL-qnQhk
based on above, the consensus was to start the deprecation in v1.28.

This commit start the deprecation process of CephFS plugin from
in-tree drivers.

Signed-off-by: Humble Chirammal <humble.devassy@gmail.com>
2023-06-05 23:26:43 +05:30
Paco Xu
64c9070f8d add pod containers[*].port duplicate warning 2023-05-30 10:57:04 +08:00
Ryan Phillips
ae08fe1e19 ProbeTerminationGracePeriod promote to GA 2023-05-05 14:27:54 -05:00
Gunju Kim
b249b4ca9b
Promote ExpandedDNSConfig feature to the GA stage 2023-05-04 20:37:10 +09:00
Kubernetes Prow Robot
c9180e445c
Merge pull request #117025 from sanposhiho/warning-in-empty-selector
feature(pkg/api): warning for Pod with null labelSelector in PodAffinity and TopologySpread
2023-04-13 16:00:39 -07:00
Tim Hockin
bc302fa414
Replace uses of ObjectReflectDiff with cmp.Diff
ObjectReflectDiff is already a shim over cmp.Diff, so no actual output
or behavior changes
2023-04-12 08:48:03 -07:00
Tim Hockin
dd7af241c1
Replace diff.ObjectDiff with cmp.Equal
More obvious and cheaper, and ObjectDiff is already written in terms of
cmp.
2023-04-12 08:45:32 -07:00
Kensei Nakada
e389d140ae fix as suggested 2023-04-01 10:34:57 +00:00
Kensei Nakada
ffcf3ee6f8 feature(pkg/api): warning for Pod with null labelSelector in PodAffinity and TopologySpread 2023-03-31 02:15:04 +00:00
vinay kulkarni
9a805db010 Set default resize policy only for specified resource types, rename RestartNotRequired -> NotRequired 2023-03-12 23:46:40 +00:00
vinay kulkarni
8b23497ae7 Restructure naming of resource resize restart policy 2023-03-12 23:11:32 +00:00
Kubernetes Prow Robot
3c6e419cc3
Merge pull request #116450 from vinaykul/restart-free-pod-vertical-scaling-api
Rename ContainerStatus.ResourcesAllocated to ContainerStatus.AllocatedResources
2023-03-12 16:06:40 -07:00
Daniel Vega-Myhre
86f41dc012 mutable pod scheduling directives 2023-03-10 18:30:09 +00:00
vinay kulkarni
01b96e7704 Rename ContainerStatus.ResourcesAllocated to ContainerStatus.AllocatedResources 2023-03-10 14:49:26 +00:00
Vinay Kulkarni
76962b0fa7 In-place Pod Vertical Scaling - API changes
1. Define ContainerResizePolicy and add it to Container struct.
 2. Add ResourcesAllocated and Resources fields to ContainerStatus struct.
 3. Define ResourcesResizeStatus and add it to PodStatus struct.
 4. Add InPlacePodVerticalScaling feature gate and drop disabled fields.
 5. ResizePolicy validation & defaulting and Resources mutability for CPU/Memory.
 6. Various fixes from code review feedback (originally committed on Apr 12, 2022)
KEP: /enhancements/keps/sig-node/1287-in-place-update-pod-resources
2023-02-24 17:18:04 +00:00
Kubernetes Prow Robot
cfb32121c1
Merge pull request #115928 from pohly/dra-resource-requirements-pvc
DRA resource requirements in PVC
2023-02-24 08:39:35 -08:00
Patrick Ohly
f32302e744 api: drop Resources.Claims from PVC and PVC template
PVC and containers share the same ResourceRequirements struct. The Claims field
in it only makes sense when used in containers. When used in a PVC, the field
should have been rejected by validation. This was overlooked when introducing
it, so now persisted objects might have it set and/or people may have started
to rely on it being accepted even when it has no effect.

Therefore we cannot reject it in validation anymore, but we can still strip
it out on create or update.
2023-02-24 16:32:58 +01:00
Kubernetes Prow Robot
aa98f6f4da
Merge pull request #115606 from wzshiming/fix/termination_grace_period_seconds
`pod.spec.terminationGracePeriodSeconds` is a negative then convert to 1
2023-02-23 07:35:35 -08:00
Shiming Zhang
4bdc1364ea Warn if the terminationGracePeriodSeconds is negative.
Co-authored-by: Jordan Liggitt <jordan@liggitt.net>
2023-02-22 13:36:15 +08:00
Sascha Grunert
0c2136ab54
Graduate DownwardAPIHugePages feature to stable / GA
This update updates the feature documentation for its GA graduation.

Signed-off-by: Sascha Grunert <sgrunert@redhat.com>
2023-02-20 09:52:39 +01:00
Kubernetes Prow Robot
2ca95b4df9
Merge pull request #115035 from xing-yang/update_plugin_warning
Update warnings for removed in-tree plugins
2023-01-13 12:08:26 -08:00
xing-yang
07a1bc5b3e Update warnings for removed in-tree plugins 2023-01-12 16:25:00 -05:00
Sascha Grunert
af1f6a230b
Make seccomp annotations non-functional
This cleanup has been planned to finish the corresponding KEP:
https://github.com/kubernetes/kubernetes/issues/91286

As follow-up on the partly removal of the seccomp annotations in
https://github.com/kubernetes/kubernetes/pull/109819, we now drop
the version skew handling completely, but still warn as well as keep
the validation in place if both (annotation and field) are set.

The Pod Security Admission code has been already changed in
https://github.com/kubernetes/kubernetes/pull/114846.

Signed-off-by: Sascha Grunert <sgrunert@redhat.com>
2023-01-12 17:11:52 +01:00
maao
a796707396 Validate labelSelector in topologySpreadConstraints
Signed-off-by: maao <maao420691301@gmail.com>
2022-11-28 09:46:46 +08:00
Patrick Ohly
7d11b422e3 api: add resource claims to core API
The resource.k8s.io/ClaimTemplate only gets referenced by name, therefore the
changes to the core API are limited.
2022-11-10 20:08:24 +01:00
Jordan Liggitt
fc69084bf1
Update workload selector validation 2022-11-07 20:52:02 -05:00
Manjusaka
0843c4dfca
Add extra value validation for matchExpression field in LabelSelector 2022-11-07 20:48:21 -05:00
Wei Huang
7b6293b6b6
APIs, Validation and condition enforcements
- New API field .spec.schedulingGates
- Validation and drop disabled fields
- Disallow binding a Pod carrying non-nil schedulingGates
- Disallow creating a Pod with non-nil nodeName and non-nil schedulingGates
- Adds a {type:PodScheduled, reason:WaitingForGates} condition if necessary
- New literal SchedulingGated in the STATUS column of `k get pod`
2022-11-03 14:32:34 -07:00
Mark Rossetti
498d065cc5
Promoting WindowsHostProcessContainers to stable
Signed-off-by: Mark Rossetti <marosset@microsoft.com>
2022-11-01 14:06:25 -07:00
Paco Xu
140502af8c add warning for PVC template in statefulset and in pod ephemeral volume source 2022-10-22 09:14:03 +08:00
Jonathan Dobson
5f774832a5 Move CSIInlineVolume feature to GA 2022-08-04 13:06:30 -06:00
Kubernetes Prow Robot
442574f3a7
Merge pull request #111513 from jingxu97/july/localstorage
Promote Local storage capacity isolation feature to GA
2022-08-03 13:05:59 -07:00
Rodrigo Campos
cf8164bccf apis: add validation for HostUsers
This commit just adds a validation according to KEP-127. We check that
only the supported volumes for phase 1 of the KEP are accepted.

Signed-off-by: Rodrigo Campos <rodrigoca@microsoft.com>
2022-08-03 19:53:22 +02:00
jinxu
0064010cdd Promote Local storage capacity isolation feature to GA
This change is to promote local storage capacity isolation feature to GA

At the same time, to allow rootless system disable this feature due to
unable to get root fs, this change introduced a new kubelet config
"localStorageCapacityIsolation". By default it is set to true. For
rootless systems, they can set this configuration to false to disable
the feature. Once it is set, user cannot set ephemeral-storage
request/limit because capacity and allocatable will not be set.

Change-Id: I48a52e737c6a09e9131454db6ad31247b56c000a
2022-08-02 23:45:48 -07:00