Commit Graph

19 Commits

Author SHA1 Message Date
Lionel Jouin
0bb0e8feaf Fix TestEnableDisableServiceCIDR
The wrong clientset was used to create services and an incorrect amount
of services was created.

Signed-off-by: Lionel Jouin <lionel.jouin@est.tech>
2024-09-30 13:15:00 +02:00
Lionel Jouin
8dafdb2cdd Fix ServiceCIDR integration test enable/disable
feature_enable_disable.go was missing the suffix _test.go to be
considered as a test. Without it, TestEnableDisableServiceCIDR was not
executed.

Signed-off-by: Lionel Jouin <lionel.jouin@est.tech>
2024-09-30 12:00:25 +02:00
Abhishek Kr Srivastav
95860cff1c Fix Go vet errors for master golang
Co-authored-by: Rajalakshmi-Girish <rajalakshmi.girish1@ibm.com>
Co-authored-by: Abhishek Kr Srivastav <Abhishek.kr.srivastav@ibm.com>
2024-09-20 12:36:38 +05:30
googs1025
bc514ff68b chore: remove t.Fatal typo 2024-07-20 16:19:47 +08:00
googs1025
a6ee8599f1 chore: use WaitForCacheSync method after sharedInformerFactory Start 2024-07-20 16:17:57 +08:00
Antonio Ojea
ed597316d6 modify tests to use the networking v1beta1 API 2024-06-30 09:48:46 +00:00
Antonio Ojea
194609bd6a fix comment on integration test 2024-06-27 11:45:37 +00:00
Antonio Ojea
9b1bad431b implement dual write on Service ClusterIP allocator
MultiCIDRServiceAllocator implements a new ClusterIP allocator based on
IPAddress object to solve the problems and limitations caused by
existing bitmap allocators.

However, during the rollout of new versions, deployments need to support
a skew of one version between kube-apiservers. To avoid the possible
problem where there are multiple Services requests on the skewed
apiservers and that both allocate the same IP to different Services,
the new allocator will implement a dual-write strategy under the
feature gate DisableAllocatorDualWrite.

After the MultiCIDRServiceAllocator is GA, the DisableAllocatorDualWrite
can be enabled safely as all apiservers will run with the new
allocators. The graduation of DisableAllocatorDualWrite can also
be used to clean up the opaque API object that contains the old bitmaps.

If MultiCIDRServiceAllocator is enabled and DisableAllocatorDualWrite is disable
and is a new environment, there is no bitmap object created, hence, the
apiserver will initialize it to be able to write on it.
2024-06-27 11:33:36 +00:00
Antonio Ojea
8490273979 performance test to compare allocators
The current results with 100 works and 15k services on a (n2-standard-48) vCPU: 48 RAM: 192 GB are:
Old allocator:

perf_test.go:139: [RESULT] Duration 1m9.646167533s: [quantile:0.5  value:0.462886801 quantile:0.9  value:0.496662838 quantile:0.99  value:0.725845905]

New allocator:
perf_test.go:139: [RESULT] Duration 2m12.900694343s: [quantile:0.5  value:0.481814448 quantile:0.9  value:1.3867615469999999 quantile:0.99  value:1.888190671]

The new allocator has higher latency but in contrast allow to use a
larger number of services, when tested with 65k Services the old
allocator etcd crashes with storage exceeded.

The scenario is also not realistic, as a continuous and high load on
Service creation is not expected.
2024-06-27 11:33:36 +00:00
Antonio Ojea
6639411231 add log to migration test 2024-06-27 11:33:36 +00:00
Antonio Ojea
101722249d test enable and disable ServiceCIDR feature 2024-06-27 11:33:36 +00:00
Marek Siarkowicz
3ee8178768 Cleanup defer from SetFeatureGateDuringTest function call 2024-04-24 20:25:29 +02:00
Patrick Ohly
0ed2ad182f test: fix shutdown of test/integration/servicecidr.TestMigrateServiceCIDR
Due to a typo in b584b87a94, the wrong
context got canceled. The test still passes, but it takes an additional minute
before it eventually shuts down.
2024-03-27 09:21:43 +01:00
Patrick Ohly
1d653e6185 test: use cancelation from ktesting
The return type of ktesting.NewTestContext is now a TContext. Code
which combined it WithCancel often didn't compile anymore (cannot overwrite
ktesting.TContext with context.Context). This is a good thing because all of
that code can be simplified to let ktesting handle the cancelation.
2024-03-01 07:51:22 +01:00
Mengjiao Liu
b584b87a94 kube-controller-manager: readjust log verbosity
- Increase the global level for broadcaster's logging to 3 so that users can ignore event messages by lowering the logging level. It reduces information noise.
- Making sure the context is properly injected into the broadcaster, this will allow the -v flag value to be used also in that broadcaster, rather than the above global value.
- test: use cancellation from ktesting
- golangci-hints: checked error return value
2024-02-26 14:51:56 +08:00
Antonio Ojea
5d90d07f2d test integration: use new ServiceCIDR API
Change-Id: I7aaa978842fbe8d75383f8a3159ca4fce01ffdcb
2023-10-31 21:05:57 +00:00
Antonio Ojea
ccbcadb032 add integration test
Since ServiceCIDR and IPAddresses are mostly API driven integration
test will give us a good coverage, exercising real use cases like
the migration from one ServiceCIDR range to a new range.
2023-10-31 21:05:05 +00:00
Kante Yin
a7035f5459 Pass Context to StartTestServer
Signed-off-by: Kante Yin <kerthcet@gmail.com>
2023-05-04 10:25:09 +08:00
Antonio Ojea
23252d70b4 add integration test 2023-03-14 22:58:11 +00:00