Features
- add autogenerated aws instance types for kwok (#1942) #1942 (Reed Schalo)
- Create Unhealthy Disrupted Nodeclaim Metric (#1952) #1952 (Amanuel Engeda)
- support new topologySpread scheduling constraints (#852) #852 (Jason Deal)
- reserved capacity support (#1911) #1911 (Jason Deal)
Bug Fixes
- Fix scheduling benchmarking to not bail due to limits or same UUID (#1930) #1930 (Jonathan Innis)
- Fix heap profile benchmarking (#1946) #1946 (Jonathan Innis)
- BREAKING put karpenter_ignored_pod_count metric under scheduler subsystem (#2015) #2015 (Oleg Vorobev)
- remove registration taint enforcement (#1991) #1991 (Reed Schalo)
Documentation
Performance Improvements
- Remove
Available()
call inside of filterInstanceTypesByRequirements (#1947) #1947 (Jonathan Innis) - Remove deep-copying the allocatable resource list (#1945) #1945 (Jonathan Innis)
- Capture InstanceTypeFilterErrors in error structs and don't print them until the end (#1948) #1948 (Jonathan Innis)
- Don't create new sets when checking compatibility (#1953) #1953 (Jonathan Innis)
- Cache requirements for pods alongside requests (#1950) #1950 (Jonathan Innis)
- Reduce the memory overhead on cluster state
Synced()
(#1966) #1966 (Jonathan Innis) - Add event filter for NodeClaims that have resolved providerIDs (#1967) #1967 (Jonathan Innis)
- Don't DeepCopy DaemonSet Pods (#1968) #1968 (Jonathan Innis)
- Remove using
Difference()
from set creation (#1973) #1973 (Jonathan Innis) - check validity before constructing a new set of requirements (#2011) #2011 (Todd Neal)
- remove the edit distance helper for identifying typos (#2008) #2008 (Todd Neal)
- trade off less verbose errors for faster execution (#2013) #2013 (Todd Neal)
- sort Pods by node name to allow re-use of scheduling requirements (#2012) #2012 (Todd Neal)
Tests
- Fix
ConsolidationState()
test failure in state testing (#1957) #1957 (Jonathan Innis) - Fix DataRace test cleanup ordering (#1958) #1958 (Jonathan Innis)
- Ensure that we don't step the idle duration since this can cause the batcher to exit (#1964) #1964 (Jonathan Innis)
- Expand KOWKNodeClass to Support Generic NodeClass for E2E tests (#1963) #1963 (Amanuel Engeda)
- allow kwok provider deletion to terminate instance (#1996) #1996 (Max Cao)
- increase Eventually timeout in e2e tests (#2010) #2010 (Max Cao)
- Remove drifted reason on Reset() for
fake.CloudProvider
(#2019) #2019 (Jonathan Innis)
Continuous Integration
- fix flaky test for stale instance type drift (#1990) #1990 (Hansuk Hong)
- add a workflow semantic-pr (#2000) #2000 (Hansuk Hong)
Chores
- replace golang.org/x/exp with stdlib (#1931) #1931 (Eng Zer Jun)
- move event reasons to the package and as constants (#1915) #1915 (Hansuk Hong)
- Use non-deprecated TypedRateLimitingQueue (#1933) #1933 (Jonathan Innis)
- deps: bump sigs.k8s.io/controller-runtime from 0.20.0 to 0.20.1 in the k8s-go-deps group (#1936) #1936 (dependabot[bot])
- Bump go minor version to
1.23.5
(#1940) #1940 (Jonathan Innis) - Use self-affinity to ensure all pods schedule (#1938) #1938 (Jonathan Innis)
- deps: bump actions/setup-go from 5.2.0 to 5.3.0 in /.github/actions/install-deps in the action-deps group (#1935) #1935 (dependabot[bot])
- deps: bump the go-deps group across 1 directory with 2 updates (#1941) #1941 (dependabot[bot])
- Update the README with update community meetings times (#1934) #1934 (Amanuel Engeda)
- deps: bump actions/setup-python from 5.3.0 to 5.4.0 in the actions-deps group (#1955) #1955 (dependabot[bot])
- Add more scheduler logging for pods (#1949) #1949 (Jonathan Innis)
- Bump go minor version to 1.23.6 (#1971) #1971 (Jigisha Patil)
- bump go to 1.24.0 (#1985) #1985 (Jason Deal)
- Fix daemonset calculation bug (#1972) #1972 (Jonathan Innis)
- Update nodeclaim finalization flow to not depend on cloudProvider.Get() (#1944) #1944 (Jigisha Patil)
- Ensure that we implement
Unwrap
to supporterrors.As
(#1975) #1975 (Jonathan Innis) - Bump controller-gen to the latest version (#1980) #1980 (Jonathan Innis)
- deps: bump the go-deps group with 2 updates (#1979) #1979 (dependabot[bot])
- clear pod scheduling decisions if there are no valid nodepools (#1982) #1982 (Jigisha Patil)
- fix spelling error in node health log (#1984) #1984 (Reed Schalo)
- deps: bump the k8s-go-deps group with 8 updates (#2003) #2003 (dependabot[bot])
- Ensure that NodeClaim is always logged with Node (#1999) #1999 (Jonathan Innis)
- Ensure we use structured logging when returning disruption commands (#1998) #1998 (Jonathan Innis)
- Install toolchain files to location provided in KUBEBUILDER_ASSETS if set (#1756) #1756 (Jeremy Bopp)
- Update the scheduling metric name to be
karpenter_pods_provisioning_scheduling_undecided_time_seconds
(#2024) #2024 (Amanuel Engeda) - deps: bump actions/cache from 4.2.0 to 4.2.1 in /.github/actions/install-deps in the action-deps group (#2026) #2026 (dependabot[bot])
- deps: bump the go-deps group with 2 updates (#2027) #2027 (dependabot[bot])