Commit Graph

46313 Commits

Author SHA1 Message Date
Chris Henzie
dbc7d8ded0 feat: support preemption for pods using ReadWriteOncePod PVCs
PVCs using the ReadWriteOncePod access mode can only be referenced by a
single pod. When a pod is scheduled that uses a ReadWriteOncePod PVC,
return "Unschedulable" if the PVC is already in-use in the cluster.

To support preemption, the "VolumeRestrictions" scheduler plugin
computes cycle state during the PreFilter phase. This cycle state
contains the number of references to the ReadWriteOncePod PVCs used by
the pod-to-be-scheduled.

During scheduler simulation (AddPod and RemovePod), we add and remove
reference counts from the cycle state if they use any of these
ReadWriteOncePod PVCs.

In the Filter phase, the scheduler checks if there are any PVC reference
conflicts, and returns "Unschedulable" if there is a conflict.

This is a required feature for the ReadWriteOncePod beta. See for more context:
https://github.com/kubernetes/enhancements/tree/master/keps/sig-storage/2485-read-write-once-pod-pv-access-mode#beta
2023-01-30 10:59:22 -08:00
Kubernetes Prow Robot
ad2a9f2f33 Merge pull request #113863 from msau42/owners
update sig-storage owners
2023-01-30 10:10:50 -08:00
Kubernetes Prow Robot
5681b0da14 Merge pull request #115338 from danwinship/nodeutil.gethostname
Move GetHostname() from k/k/pkg/util/node to k/component-helpers/node/util
2023-01-30 09:07:20 -08:00
Kubernetes Prow Robot
d0584179f4 Merge pull request #114367 from liggitt/kubelet-csr-init
Check for initial kubelet certificates more frequently
2023-01-30 09:07:05 -08:00
Kubernetes Prow Robot
c829397f7a Merge pull request #115354 from pohly/dra-reserved-for-list-type
dynamic resource allocation: avoid apiserver complaint about list content
2023-01-30 06:24:50 -08:00
Kubernetes Prow Robot
7b243cef1a Merge pull request #115368 from tzneal/correct-comment
update comment to match implementation
2023-01-29 17:21:16 -08:00
Kubernetes Prow Robot
232c0de57a Merge pull request #115101 from HirazawaUi/delte-pkg-kubelet-unused-functions
delete unused functions in pkg/kubelet directory
2023-01-29 17:21:08 -08:00
Kubernetes Prow Robot
7f0d1722f5 Merge pull request #115378 from aojea/aojea_allocator
add aojea as approver for networking APIs: services/allocators, netwo…
2023-01-29 16:14:49 -08:00
Kubernetes Prow Robot
5bb7326c36 Merge pull request #114418 from xuzhenglun/master
Reserve Nodeport Ranges For Dynamic And Static Port Allocation
2023-01-29 14:02:35 -08:00
Antonio Ojea
0461c48078 add aojea as approver for networking APIs: services/allocators, networking group, ...
Change-Id: Ia6542b21339f4a92a9c13c2b628038abe737d0f9
2023-01-29 00:10:06 +00:00
Dan Winship
f994ae2521 Move GetHostname() from k/k/pkg/util/node to k/component-helpers/node/util
In fact, this actually uses pkg/util/node's GetHostname() but takes
the unit tests from cmd/kubeadm/app/util's private fork of that
function since they were more extensive. (Of course the fact that
kubeadm had a private fork of this function is a strong argument for
moving it to component-helpers.)
2023-01-27 18:24:38 -05:00
Todd Neal
69f04a2fc1 update comment to match implementation 2023-01-27 13:59:40 -06:00
Fabio Bertinatto
b382148915 Trim out suffix added to backing file path of loopback device
When a block device, say /dev/sdc, is unexpectedly disconnected from a node,
the corresponding backing file path found at /sys/block/loop*/backing_file gets
a "(deleted)" suffix. This patch trims that suffix out, allowing the Kubelet to
unmount the volume correctly.
2023-01-27 10:53:00 -03:00
Kubernetes Prow Robot
4d9e8f7695 Merge pull request #115304 from gnufied/fix-version-skew-for-older-expansion-controller
Use expansion without recovery if allocatedResource/resizeStatus unset
2023-01-27 02:36:25 -08:00
Patrick Ohly
508cd60760 dynamic resource allocation: avoid apiserver complaint about list content
This fixes the following warning (error?) in the apiserver:

E0126 18:10:38.665239   16370 fieldmanager.go:210] "[SHOULD NOT HAPPEN] failed to update managedFields" err="failed to convert new object (test/claim-84; resource.k8s.io/v1alpha1, Kind=ResourceClaim) to smd typed: .status.reservedFor: element 0: associative list without keys has an element that's a map type" VersionKind="/, Kind=" namespace="test" name="claim-84"

The root cause is the same as in e50e8a0c91:
nothing in Kubernetes outright complains about a list of items where the item
type is comparable in Go, but not a simple type. This nonetheless isn't
supposed to be done in the API and can causes problems elsewhere.

For the ReservedFor field, everything seems to work okay except for the
warning. However, it's better to follow conventions and use a map. This is
possible in this case because UID is guaranteed to be a unique key.

Validation is now stricter than before, which is a good thing: previously,
two entries with the same UID were allowed as long as some other field was
different, which wasn't a situation that should have been allowed.
2023-01-27 11:33:05 +01:00
Kubernetes Prow Robot
12240c2a5c Merge pull request #115247 from Volatus/refactor-node-storage-tests
Refactor: cleanup node/storage tests
2023-01-26 17:42:32 -08:00
Kubernetes Prow Robot
6f22d1f1ab Merge pull request #115321 from rphillips/fixes/linger_grpc_probes
Kubelet GRPC probes: improve network resources utilization
2023-01-26 15:56:24 -08:00
Kubernetes Prow Robot
e6170c3883 Merge pull request #114992 from TheOneTheOnlyJJ/skip-failing-unittests-2
Skip failing Windows unit tests (volume)
2023-01-26 14:04:25 -08:00
Ismayil Mirzali
6d484dc037 Refactor: cleanup node/storage tests
Removes some repetitive patterns and simplifies the existing test code.
2023-01-26 23:03:02 +02:00
Kubernetes Prow Robot
97ab147537 Merge pull request #115179 from sunnylovestiramisu/fixPanic
Fix nil pointer error in nodevolumelimits csi logging
2023-01-26 12:06:38 -08:00
Hemant Kumar
402fe4ec9b use expansion without recovery if allocatedResource is not unset 2023-01-26 14:25:00 -05:00
Kubernetes Prow Robot
0e6f4d3a35 Merge pull request #115271 from kevindelgado/field-validation-conformance
Field validation e2e tests and GA graduation
2023-01-26 09:34:26 -08:00
Kevin Delgado
b149b93189 update codegen 2023-01-26 14:31:40 +00:00
Kubernetes Prow Robot
3d6c7efc23 Merge pull request #115322 from aojea/hotfix
Fix panic on ClusterIP allocation for /28 subnets
2023-01-26 00:38:26 -08:00
xuzhenglun
d48dd100bf add kube_apiserver_nodeport_allocator_* to improve observability of ServiceNodePortStaticSubrange 2023-01-26 14:44:16 +08:00
xuzhenglun
c18c6e1b87 allocate nodeport with offset 2023-01-26 14:44:04 +08:00
Kubernetes Prow Robot
538c6c044f Merge pull request #115329 from aojea/disable_probe
skip scale test for probes
2023-01-25 22:02:33 -08:00
Kubernetes Prow Robot
083e0d2be1 Merge pull request #114991 from TheOneTheOnlyJJ/skip-failing-unittests
Skip failing Windows unit tests
2023-01-25 22:02:25 -08:00
Antonio Ojea
3fb4edb257 skip scale test for probes
Change-Id: I215e2cf9211348aadcc0d262da01953d6523794a
2023-01-26 00:02:30 +00:00
Antonio Ojea
ea99593fa1 Fix panic on ClusterIP allocation for /28 subnets
The ClusterIP allocator tries to reserve on part of the ServiceCIDR
to allocate static IPs to the Services.

The heuristic of the allocator to obtain the offset was taking into
account the whole range size, not the IPs available in the range, the
subnet address and the broadcast address for IPv4 are not available.

This caused that for CIDRs with 16 hosts, /28 for IPv4 and /124 for
IPv6, the offset calculated was higher than the max number of available
addresses on the allocator, causing this to panic.

Change-Id: I6c6f527b0a600b3612be37769e405b8fb3dd33a8
2023-01-25 20:32:40 +00:00
Ryan Phillips
12b8944702 kubelet: use custom dialer for grpc probes 2023-01-25 13:28:03 -06:00
Sunny Song
5e2f12e943 Fix nil pointer error in nodevolumelimits csi logging 2023-01-25 09:37:46 -08:00
Kevin Delgado
3b6c4d307f Graduate field validation to GA 2023-01-24 17:48:57 +00:00
Kubernetes Prow Robot
a12dd4189e Merge pull request #115102 from saschagrunert/cri-unavailable
Check for all errors in CRI connection validation
2023-01-24 02:24:17 -08:00
Jurj Andrei George
8f6fa99b49 Skip failing Windows unit tests (volume)
As discussed during the SIG Testing meeting on January 10, 2023, failing
Windows unit tests are now skipped.
These changes should be reverted when the unit tests wil get fixed.
Mentioned SIG Testing meeting:
https://docs.google.com/document/d/1z8MQpr_jTwhmjLMUaqQyBk1EYG_Y_3D4y4YdMJ7V1Kk/edit#heading=h.qwblxf2uhgoo
2023-01-24 11:02:44 +02:00
Kubernetes Prow Robot
674eb36f92 Merge pull request #115249 from thockin/codegen-13-proto-go-packages
Set go_package in all proto files
2023-01-23 12:14:07 -08:00
Tim Hockin
60ffa47f4f Set proto go_package: kubelet example_plugin_apis
This creates some diff to the *.pb.go files to note that
in the "options".

You can dump the gzipped blob with the following program (thanks
StackOverflow!):

```go
package main

import (
	"bytes"
	"compress/gzip"
	"encoding/json"
	"fmt"
	"os"

	"io/ioutil"

	proto "github.com/golang/protobuf/proto"
	dpb "github.com/golang/protobuf/protoc-gen-go/descriptor"
)

func main() {
	m := map[string][]byte{
		"before": blobv1,
		"after": blobv2,
	}
	arg := os.Args[1]
	dump(m[arg])
}

func dump(bytes []byte) {
	fd, err := decodeFileDesc(bytes)
	if err != nil {
		panic(err)
	}
	b, err := json.MarshalIndent(fd, "", "  ")
	if err != nil {
		panic(err)
	}
	fmt.Println(string(b))
}

// decompress does gzip decompression.
func decompress(b []byte) ([]byte, error) {
	r, err := gzip.NewReader(bytes.NewReader(b))
	if err != nil {
		return nil, fmt.Errorf("bad gzipped descriptor: %v", err)
	}
	out, err := ioutil.ReadAll(r)
	if err != nil {
		return nil, fmt.Errorf("bad gzipped descriptor: %v", err)
	}
	return out, nil
}

func decodeFileDesc(enc []byte) (*dpb.FileDescriptorProto, error) {
	raw, err := decompress(enc)
	if err != nil {
		return nil, fmt.Errorf("failed to decompress enc: %v", err)
	}

	fd := new(dpb.FileDescriptorProto)
	if err := proto.Unmarshal(raw, fd); err != nil {
		return nil, fmt.Errorf("bad descriptor: %v", err)
	}
	return fd, nil
}
```
2023-01-23 09:31:18 -08:00
Patrick Ohly
bc6c7fa912 logging: fix names of keys
The stricter checking with the upcoming logcheck v0.4.1 pointed out these names
which don't comply with our recommendations in
https://github.com/kubernetes/community/blob/master/contributors/devel/sig-instrumentation/migration-to-structured-logging.md#name-arguments.
2023-01-23 14:24:29 +01:00
Kubernetes Prow Robot
724497cda4 Merge pull request #114094 from Nanfei-Chen/master
Modifies receiver names for struct FakeProxier to make them the same.
2023-01-22 16:30:09 -08:00
Kubernetes Prow Robot
f212d42086 Merge pull request #115244 from danwinship/nodeport-addresses-1
clean up kube-proxy nodeport address handling (part 1)
2023-01-22 15:26:08 -08:00
Antonio Ojea
dbf178a8d1 add scale test for probes
Change-Id: I1e49943531b569b5e02f82369750a9ca899ae726
2023-01-22 16:57:41 +00:00
Antonio Ojea
bfd8f5178e use custom dialer for http probes 2023-01-22 16:57:41 +00:00
Antonio Ojea
d21f98c6f9 use custom dialer for tcp probes
Change-Id: I323b472606eaf3242b665022afe2a79ecf3b8358
2023-01-22 16:57:41 +00:00
Antonio Ojea
1978008c8f add custom dialer optimized for probes
probe util dial set linger to 1s
2023-01-22 16:57:32 +00:00
Dan Winship
463153fb7c Fix ContainsIPv4Loopback() to match its caller's behavior
ContainsIPv4Loopback() claimed that "::/0" contains IPv4 loopback IPs
(on the theory that listening on "::/0" will listen on "0.0.0.0/0" as
well and thus include IPv4 loopback). But its sole caller (the
iptables proxier) doesn't use listen() to accept connections, so this
theory was completely mistaken; if you passed, eg,
`--nodeport-addresses 192.168.0.0/0,::/0`, then it would not create
any rule that accepted nodeport connections on 127.0.0.1, but it would
nonetheless end up setting route_localnet=1 because
ContainsIPv4Loopback() claimed it needed to. Fix this.
2023-01-21 14:25:08 -05:00
Dan Winship
53b24f4ddf Improve GetNodeAddresses unit test
Add names to the tests and use t.Run() (rather than having them just
be numbered, with number 9 mistakenly being used twice thus throwing
off all the later numbers...)

Remove unnecessary FakeNetwork element from the testCases struct since
it's always the same. Remove the expectedErr value since a non-nil
error is expected if and only if the returned set is nil, and there's
no reason to test the exact text of the error message.

Fix weird IPv6 subnet sizes.

Change the dual-stack tests to (a) actually have dual-stack interface
addrs, and (b) use a routable IPv6 address, not just localhost (given
that we never actually want to use IPv6 localhost for nodeports).
2023-01-21 14:25:08 -05:00
Dan Winship
fe49e3933d Move GetNodeAddresses() and ContainsIPv4Loopback() into a new file
Both sound slightly generic, but implement semantics specific to the
handling of NodePort addresses.

(No changes other than moving code.)
2023-01-21 14:25:07 -05:00
Kubernetes Prow Robot
56a14025b0 Merge pull request #115193 from SataQiu/update-storage-api-20230119
apiserver: update serialization version priority for policy API
2023-01-19 13:44:15 -08:00
Kubernetes Prow Robot
7913e135a5 Merge pull request #112925 from SergeyKanzhelev/addValueOfLimitToErr
added limit value to the pod validation error to simplify debugging
2023-01-19 11:52:15 -08:00
SataQiu
571582b5b2 apiserver: update serialization version priority for policy API 2023-01-19 14:42:26 +08:00