Commit Graph

1019 Commits

Author SHA1 Message Date
Antonio Ojea
566fad5eda add metrics to the ipallocator repair loop
The repair loop are great for saving us of leaks, but the side effect
is that bugs can go unnoticed for a long time, so we need some
signal to be able to identify those errors proactivily.

Add two new metrics to identify:
- errors on the reconcile loop
- errors per clusterip
2023-09-30 15:46:06 +00:00
Antonio Ojea
4eff70dcf9 add metrics to the nodeport allocator repair loop
The repair loop are great for saving us of leaks, but the side effect
is that bugs can go unnoticed for a long time, so we need some
signal to be able to identify those errors proactivily.

Add two new metrics to identify:
- errors on the reconcile loop
- errors per nodeport
2023-09-30 15:46:06 +00:00
Antonio Ojea
21e26486ac sync Service API status rest storage
The Service API Rest implementation is complex and has to use different
hooks on the REST storage. The status store was making a shallow copy of
the storage before adding the hooks, so it was not inheriting the hooks.

The status store must have the same hooks as the rest store to be able
to handle correctly the allocation and deallocation of ClusterIPs and
nodePorts.

Change-Id: I44be21468d36017f0ec41a8f912b8490f8f13f55
Signed-off-by: Antonio Ojea <aojea@google.com>
2023-09-13 11:35:42 +00:00
tao.yang
b35357b6c0 cleanup: omit comparison with bool constants
Signed-off-by: tao.yang <tao.yang@daocloud.io>
2023-09-05 10:24:38 +08:00
Quan Tian
2b69daa960 Allow specifying ExternalTrafficPolicy for ClusterIP Services with ExternalIPs
When defining a ClusterIP Service, we can specify externalIP, and the
traffic policy of externalIP is subject to externalTrafficPolicy.
However, the policy can't be set when type is not NodePort or
LoadBalancer, and will default to Cluster when kube-proxy processes the
Service.

This commit updates the defaulting and validation of Service to allow
specifying ExternalTrafficPolicy for ClusterIP Services with
ExternalIPs.

Signed-off-by: Quan Tian <qtian@vmware.com>
2023-08-30 23:56:47 +08:00
Kubernetes Prow Robot
370c85f5ab Merge pull request #118493 from kerthcet/cleanup/pod-status-reason
Remove reasons from PodConditionType
2023-08-30 01:40:47 -07:00
Kubernetes Prow Robot
df8bfdf55e Merge pull request #120102 from p0lyn0mial/upstream-storage-etcd-new-params
storage/factory: extend the Create method by newList and resourcePrefix params
2023-08-24 05:22:32 -07:00
Lukasz Szaszkiewicz
ccabc01093 storage/factory: extend the Create method by newList and resourcePrefix params 2023-08-24 11:23:05 +02:00
Kubernetes Prow Robot
c034f321f9 Merge pull request #119879 from togettoyou/cleanup
Fix receiver names in legacyProvider
2023-08-23 08:07:29 -07:00
Kubernetes Prow Robot
c0691f3784 Merge pull request #119789 from thockin/deprecate_svc_lb_ingress_with_clusterip
Gate: disallow .status.loadBalancer on non-LB svc
2023-08-22 10:02:55 -07:00
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
Tim Hockin
a930892769 Gate: disallow .status.loadBalancer on non-LB svc
The fact that the .status.loadBalancer field can be set while .spec.type
is not "LoadBalancer" is a flub.  Any spec update will already clear
.status.ingress, so it's hard to really rely on this.  After this
change, updates which try to set this combination will fail validation.

Existing cases of this will not be broken.  Any spec/metadata update
will clear it (no error) and this is the only stanza of status.

New gate "AllowServiceLBStatusOnNonLB" is off by default, but can be
enabled if this change actually breaks someone, which seems exceeedingly
unlikely.
2023-08-20 16:40:41 -07:00
Kubernetes Prow Robot
ee265c92fe Merge pull request #119937 from RyanAoh/kep-1860-dev
Make Kubernetes aware of the LoadBalancer behaviour
2023-08-17 14:00:28 -07:00
Kubernetes Prow Robot
fd4109d5f6 Merge pull request #119732 from sairameshv/pdb-fix
Fix to honor PDB with an empty selector `{}`
2023-08-15 19:44:00 -07:00
Aohan Yang
3ac2899d2b Add IP mode field 2023-08-14 11:24:49 +08:00
Junhao Zou
509ffe2938 Fix receiver names in legacyProvider 2023-08-10 14:59:46 +08:00
Mark Rossetti
0d90d1ffa5 Revert "Merge pull request #118895 from RyanAoh/kep-1860"
This reverts commit 890a6c8f70, reversing
changes made to 4f60a8d493.
2023-08-09 15:51:20 -07:00
Sai Ramesh Vanka
a6329ac453 Fix to honor PDB with an empty selector {}
PDB with an empty selector `{}` is selecting all the pods in a namespace.
But, during the `drain`, all the pods are getting evicted which is not expected.
This change should fix the issue and honor the pdb before evicting the pods.

Signed-off-by: Sai Ramesh Vanka <svanka@redhat.com>
2023-08-08 17:28:48 +05:30
Kubernetes Prow Robot
f3a070f9c6 Merge pull request #116469 from RomanBednar/pv-phase-transition-time
PersistentVolume last phase transition time
2023-07-21 16:10:07 -07:00
Roman Bednar
a9c3444a47 test: add coverage for pv status update and create strategy 2023-07-21 21:39:16 +02:00
Roman Bednar
aa65bab426 implement pv last phase transition time 2023-07-21 20:42:25 +02:00
Roman Bednar
a31fee98f0 rename function for dropping disabled fields
The function should indicate it is specific for dropping spec fields.
2023-07-21 17:19:11 +02:00
Marek Siarkowicz
03aad1f823 Fix the semantic meaning of etcd server within component statuses and metrics.
Instead of numerating all the etcd endpoints known by apiserver, we will
group them by purpose. `etcd-0` will be the default etcd, `etcd-1` will
be the first resource override, `etcd-2` will be the second override and
so on.
2023-07-20 15:08:41 +02:00
Aohan Yang
e6863757f4 Add IP mode field 2023-07-17 15:51:40 +08:00
Dr. Stefan Schimanski
f1f2fa9da8 kube-apiserver/corerest: split apart generic code 2023-07-12 14:13:10 +02:00
Dr. Stefan Schimanski
a34e06e74c kube-apiserver/corerest: structure Config 2023-07-11 17:27:20 +02:00
Dr. Stefan Schimanski
75e3576523 kube-apiserver: rewire service controllers: kubernetesservice + IP repair 2023-07-11 17:27:20 +02:00
Dr. Stefan Schimanski
c733c57962 pkg/controlplane: wire core storage as RESTStorageProvider 2023-07-05 16:46:40 +02:00
Dr. Stefan Schimanski
68aee61d4f SPLIT: kube-apiserver/corerest: split out service IP setup logic 2023-07-05 11:00:37 +02:00
Dr. Stefan Schimanski
dad3e4d211 SPLIT: kube-apiserver/corerest: split constructor 2023-07-05 09:45:20 +02:00
Dr. Stefan Schimanski
616c959988 FIXUP: pkg/controlplane: move bootstrap controller to controllers/kubernetesservice 2023-07-04 16:38:14 +02:00
Dr. Stefan Schimanski
19cb6d036a kube-apiserver/corerest: remove redundant interface 2023-07-03 15:27:09 +02:00
Kubernetes Prow Robot
a8cc22f416 Merge pull request #118680 from danwinship/not-that-kind-of-proxying
move an apiserver helper function out of pkg/proxy
2023-07-03 02:28:51 -07:00
Dan Winship
bb0c3a0818 Remove proxyutil.IsProxyableIP / IsProxyableHostname
These don't belong in pkg/proxy/util; they involve a completely
unrelated definition of proxying.

Since each is only used from one place, just inline them at the
callers.
2023-07-01 08:49:38 -04:00
Antonio Ojea
e4f93d8a82 ipallocator bug if ips has leading zeros
The ipallocator for the new IPAddress object use the golang big.Int
library for some math operations, like adding an offset to an IP
address.

We use the bytes array to convert between big.Int and IP addresses,
however, IP addresses are always represented as 4 or 16 bytes arrays.
Big int bytes representations just return the byte array until the
most representative number, this requires that we need to prepend
these extra bytes for IPs with leading zeros.

Change-Id: I9d539f582cae1f9f4e373b28c5b94d7a342f09c7
Signed-off-by: Antonio Ojea <aojea@google.com>
2023-06-25 13:14:46 +00:00
Marek Siarkowicz
a60314c47e Make etcd component status consistent with health probes
Co-authored-by: Antonio Ojea <antonio.ojea.garcia@gmail.com>
2023-06-13 10:10:29 +02:00
kerthcet
96ab232f5f Remove reasons from PodConditionType
Signed-off-by: kerthcet <kerthcet@gmail.com>
2023-06-07 11:47:47 +08:00
Tobias Klauser
0f5535ea25 registry/core/service: remove incorrect comments
These interface methods are not only used for testing. Remove the
incorrect comments.
2023-05-22 12:35:43 +02:00
Tim Hockin
4bbf611773 Retool validation for pod HostNetwork ports
This will ensure that HostPort == ContainerPort for pods and that
HostPort == 0 || HostPort == ContainerPort for embedded PodSpecs.
2023-05-09 18:10:44 -07:00
Stephen Kitt
026e7c7cb3 registry: replace intstr.FromInt with intstr.FromInt32
This touches cases where FromInt() is used on numeric constants, or
values which are already int32s, or int variables which are defined
close by and can be changed to int32s with little impact.

Signed-off-by: Stephen Kitt <skitt@redhat.com>
2023-05-01 09:17:45 +02:00
Kubernetes Prow Robot
25a25e27a9 Merge pull request #110477 from halfcrazy/feat/hostnetwork-fieldsel
support fieldSelector spec.hostNetwork
2023-04-21 18:13:11 -07:00
Yan Zhu
7fb88eec73 support fieldSelector spec.hostNetwork
Signed-off-by: Yan Zhu <hackzhuyan@gmail.com>
2023-04-17 13:19:35 +08: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
29c0b73d64 Replace uses of diff.ObjectDiff with cmp.Diff
ObjectDiff is already a shim over cmp.Diff, so no actual output or
behavior changes
2023-04-12 08:46:12 -07:00
Paco Xu
b83600de01 fix nil pointer dereference panic for deprecated metrics 2023-03-24 18:50:43 +08:00
Kubernetes Prow Robot
15894cfc85 Merge pull request #116550 from alculquicondor/fix-bind-uid
Preserve UID and ResourceVersion in BindingREST
2023-03-20 08:49:20 -07:00
Aldo Culquicondor
62889f416c Preserve UID/ResourceVersion in the BindingREST endpoint
Change-Id: If4023da10c455963a320fdb9fc2a73c099bea3db
2023-03-20 10:29:25 -04:00
Kubernetes Prow Robot
fe91bc257b Merge pull request #116554 from atiratree/eviction-resource-version-fix
API-initiated eviction: handle deleteOptions correctly
2023-03-17 16:59:15 -07:00
Filip Křepinský
51c0e2374f API-initiated eviction: handle deleteOptions correctly
when adding a DisruptionTarget condition into a pod that will be deleted

- handle ResourceVersion and Preconditions correctly
- handle DryRun option correctly

Co-authored-by: Jordan Liggitt jordan@liggitt.net
2023-03-17 22:18:07 +01:00
Antonio Ojea
756f1bfe99 add repair loop
Change-Id: I63464bdd5db706ddf7dc5d828b8d03ad532d7981
2023-03-14 22:58:11 +00:00