mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-22 19:31:44 +00:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
d2fc500f07
@ -1,189 +1,203 @@
|
||||
<!-- BEGIN MUNGE: GENERATED_TOC -->
|
||||
|
||||
- [v1.19.12](#v11912)
|
||||
- [Downloads for v1.19.12](#downloads-for-v11912)
|
||||
- [v1.19.13](#v11913)
|
||||
- [Downloads for v1.19.13](#downloads-for-v11913)
|
||||
- [Source Code](#source-code)
|
||||
- [Client Binaries](#client-binaries)
|
||||
- [Server Binaries](#server-binaries)
|
||||
- [Node Binaries](#node-binaries)
|
||||
- [Changelog since v1.19.11](#changelog-since-v11911)
|
||||
- [Changelog since v1.19.12](#changelog-since-v11912)
|
||||
- [Changes by Kind](#changes-by-kind)
|
||||
- [Feature](#feature)
|
||||
- [Failing Test](#failing-test)
|
||||
- [Bug or Regression](#bug-or-regression)
|
||||
- [Other (Cleanup or Flake)](#other-cleanup-or-flake)
|
||||
- [Dependencies](#dependencies)
|
||||
- [Added](#added)
|
||||
- [Changed](#changed)
|
||||
- [Removed](#removed)
|
||||
- [v1.19.11](#v11911)
|
||||
- [Downloads for v1.19.11](#downloads-for-v11911)
|
||||
- [v1.19.12](#v11912)
|
||||
- [Downloads for v1.19.12](#downloads-for-v11912)
|
||||
- [Source Code](#source-code-1)
|
||||
- [Client Binaries](#client-binaries-1)
|
||||
- [Server Binaries](#server-binaries-1)
|
||||
- [Node Binaries](#node-binaries-1)
|
||||
- [Changelog since v1.19.10](#changelog-since-v11910)
|
||||
- [Changelog since v1.19.11](#changelog-since-v11911)
|
||||
- [Changes by Kind](#changes-by-kind-1)
|
||||
- [API Change](#api-change)
|
||||
- [Feature](#feature-1)
|
||||
- [Failing Test](#failing-test)
|
||||
- [Bug or Regression](#bug-or-regression-1)
|
||||
- [Other (Cleanup or Flake)](#other-cleanup-or-flake)
|
||||
- [Dependencies](#dependencies-1)
|
||||
- [Added](#added-1)
|
||||
- [Changed](#changed-1)
|
||||
- [Removed](#removed-1)
|
||||
- [v1.19.10](#v11910)
|
||||
- [Downloads for v1.19.10](#downloads-for-v11910)
|
||||
- [v1.19.11](#v11911)
|
||||
- [Downloads for v1.19.11](#downloads-for-v11911)
|
||||
- [Source Code](#source-code-2)
|
||||
- [Client binaries](#client-binaries-2)
|
||||
- [Server binaries](#server-binaries-2)
|
||||
- [Node binaries](#node-binaries-2)
|
||||
- [Changelog since v1.19.9](#changelog-since-v1199)
|
||||
- [Important Security Information](#important-security-information)
|
||||
- [CVE-2021-25735: Validating Admission Webhook does not observe some previous fields](#cve-2021-25735-validating-admission-webhook-does-not-observe-some-previous-fields)
|
||||
- [Client Binaries](#client-binaries-2)
|
||||
- [Server Binaries](#server-binaries-2)
|
||||
- [Node Binaries](#node-binaries-2)
|
||||
- [Changelog since v1.19.10](#changelog-since-v11910)
|
||||
- [Changes by Kind](#changes-by-kind-2)
|
||||
- [API Change](#api-change-1)
|
||||
- [API Change](#api-change)
|
||||
- [Feature](#feature-2)
|
||||
- [Bug or Regression](#bug-or-regression-2)
|
||||
- [Dependencies](#dependencies-2)
|
||||
- [Added](#added-2)
|
||||
- [Changed](#changed-2)
|
||||
- [Removed](#removed-2)
|
||||
- [v1.19.9](#v1199)
|
||||
- [Downloads for v1.19.9](#downloads-for-v1199)
|
||||
- [v1.19.10](#v11910)
|
||||
- [Downloads for v1.19.10](#downloads-for-v11910)
|
||||
- [Source Code](#source-code-3)
|
||||
- [Client binaries](#client-binaries-3)
|
||||
- [Server binaries](#server-binaries-3)
|
||||
- [Node binaries](#node-binaries-3)
|
||||
- [Changelog since v1.19.8](#changelog-since-v1198)
|
||||
- [Changelog since v1.19.9](#changelog-since-v1199)
|
||||
- [Important Security Information](#important-security-information)
|
||||
- [CVE-2021-25735: Validating Admission Webhook does not observe some previous fields](#cve-2021-25735-validating-admission-webhook-does-not-observe-some-previous-fields)
|
||||
- [Changes by Kind](#changes-by-kind-3)
|
||||
- [Failing Test](#failing-test-1)
|
||||
- [API Change](#api-change-1)
|
||||
- [Feature](#feature-3)
|
||||
- [Bug or Regression](#bug-or-regression-3)
|
||||
- [Dependencies](#dependencies-3)
|
||||
- [Added](#added-3)
|
||||
- [Changed](#changed-3)
|
||||
- [Removed](#removed-3)
|
||||
- [v1.19.8](#v1198)
|
||||
- [Downloads for v1.19.8](#downloads-for-v1198)
|
||||
- [v1.19.9](#v1199)
|
||||
- [Downloads for v1.19.9](#downloads-for-v1199)
|
||||
- [Source Code](#source-code-4)
|
||||
- [Client binaries](#client-binaries-4)
|
||||
- [Server binaries](#server-binaries-4)
|
||||
- [Node binaries](#node-binaries-4)
|
||||
- [Changelog since v1.19.7](#changelog-since-v1197)
|
||||
- [Changelog since v1.19.8](#changelog-since-v1198)
|
||||
- [Changes by Kind](#changes-by-kind-4)
|
||||
- [API Change](#api-change-2)
|
||||
- [Failing Test](#failing-test-1)
|
||||
- [Bug or Regression](#bug-or-regression-4)
|
||||
- [Other (Cleanup or Flake)](#other-cleanup-or-flake-1)
|
||||
- [Dependencies](#dependencies-4)
|
||||
- [Added](#added-4)
|
||||
- [Changed](#changed-4)
|
||||
- [Removed](#removed-4)
|
||||
- [v1.19.7](#v1197)
|
||||
- [Downloads for v1.19.7](#downloads-for-v1197)
|
||||
- [v1.19.8](#v1198)
|
||||
- [Downloads for v1.19.8](#downloads-for-v1198)
|
||||
- [Source Code](#source-code-5)
|
||||
- [Client binaries](#client-binaries-5)
|
||||
- [Server binaries](#server-binaries-5)
|
||||
- [Node binaries](#node-binaries-5)
|
||||
- [Changelog since v1.19.6](#changelog-since-v1196)
|
||||
- [Changelog since v1.19.7](#changelog-since-v1197)
|
||||
- [Changes by Kind](#changes-by-kind-5)
|
||||
- [API Change](#api-change-2)
|
||||
- [Bug or Regression](#bug-or-regression-5)
|
||||
- [Other (Cleanup or Flake)](#other-cleanup-or-flake-1)
|
||||
- [Dependencies](#dependencies-5)
|
||||
- [Added](#added-5)
|
||||
- [Changed](#changed-5)
|
||||
- [Removed](#removed-5)
|
||||
- [v1.19.6](#v1196)
|
||||
- [Downloads for v1.19.6](#downloads-for-v1196)
|
||||
- [v1.19.7](#v1197)
|
||||
- [Downloads for v1.19.7](#downloads-for-v1197)
|
||||
- [Source Code](#source-code-6)
|
||||
- [Client binaries](#client-binaries-6)
|
||||
- [Server binaries](#server-binaries-6)
|
||||
- [Node binaries](#node-binaries-6)
|
||||
- [Changelog since v1.19.5](#changelog-since-v1195)
|
||||
- [Changelog since v1.19.6](#changelog-since-v1196)
|
||||
- [Changes by Kind](#changes-by-kind-6)
|
||||
- [Feature](#feature-3)
|
||||
- [Bug or Regression](#bug-or-regression-6)
|
||||
- [Other (Cleanup or Flake)](#other-cleanup-or-flake-2)
|
||||
- [Dependencies](#dependencies-6)
|
||||
- [Added](#added-6)
|
||||
- [Changed](#changed-6)
|
||||
- [Removed](#removed-6)
|
||||
- [v1.19.5](#v1195)
|
||||
- [Downloads for v1.19.5](#downloads-for-v1195)
|
||||
- [v1.19.6](#v1196)
|
||||
- [Downloads for v1.19.6](#downloads-for-v1196)
|
||||
- [Source Code](#source-code-7)
|
||||
- [Client binaries](#client-binaries-7)
|
||||
- [Server binaries](#server-binaries-7)
|
||||
- [Node binaries](#node-binaries-7)
|
||||
- [Changelog since v1.19.4](#changelog-since-v1194)
|
||||
- [Changelog since v1.19.5](#changelog-since-v1195)
|
||||
- [Changes by Kind](#changes-by-kind-7)
|
||||
- [Feature](#feature-4)
|
||||
- [Failing Test](#failing-test-2)
|
||||
- [Bug or Regression](#bug-or-regression-7)
|
||||
- [Other (Cleanup or Flake)](#other-cleanup-or-flake-2)
|
||||
- [Dependencies](#dependencies-7)
|
||||
- [Added](#added-7)
|
||||
- [Changed](#changed-7)
|
||||
- [Removed](#removed-7)
|
||||
- [v1.19.4](#v1194)
|
||||
- [Downloads for v1.19.4](#downloads-for-v1194)
|
||||
- [v1.19.5](#v1195)
|
||||
- [Downloads for v1.19.5](#downloads-for-v1195)
|
||||
- [Source Code](#source-code-8)
|
||||
- [Client binaries](#client-binaries-8)
|
||||
- [Server binaries](#server-binaries-8)
|
||||
- [Node binaries](#node-binaries-8)
|
||||
- [Changelog since v1.19.3](#changelog-since-v1193)
|
||||
- [Changelog since v1.19.4](#changelog-since-v1194)
|
||||
- [Changes by Kind](#changes-by-kind-8)
|
||||
- [Feature](#feature-5)
|
||||
- [Failing Test](#failing-test-2)
|
||||
- [Bug or Regression](#bug-or-regression-8)
|
||||
- [Dependencies](#dependencies-8)
|
||||
- [Added](#added-8)
|
||||
- [Changed](#changed-8)
|
||||
- [Removed](#removed-8)
|
||||
- [v1.19.3](#v1193)
|
||||
- [Downloads for v1.19.3](#downloads-for-v1193)
|
||||
- [v1.19.4](#v1194)
|
||||
- [Downloads for v1.19.4](#downloads-for-v1194)
|
||||
- [Source Code](#source-code-9)
|
||||
- [Client binaries](#client-binaries-9)
|
||||
- [Server binaries](#server-binaries-9)
|
||||
- [Node binaries](#node-binaries-9)
|
||||
- [Changelog since v1.19.2](#changelog-since-v1192)
|
||||
- [Changelog since v1.19.3](#changelog-since-v1193)
|
||||
- [Changes by Kind](#changes-by-kind-9)
|
||||
- [Feature](#feature-5)
|
||||
- [Design](#design)
|
||||
- [Bug or Regression](#bug-or-regression-9)
|
||||
- [Other (Cleanup or Flake)](#other-cleanup-or-flake-3)
|
||||
- [Dependencies](#dependencies-9)
|
||||
- [Added](#added-9)
|
||||
- [Changed](#changed-9)
|
||||
- [Removed](#removed-9)
|
||||
- [v1.19.2](#v1192)
|
||||
- [Downloads for v1.19.2](#downloads-for-v1192)
|
||||
- [v1.19.3](#v1193)
|
||||
- [Downloads for v1.19.3](#downloads-for-v1193)
|
||||
- [Source Code](#source-code-10)
|
||||
- [Client binaries](#client-binaries-10)
|
||||
- [Server binaries](#server-binaries-10)
|
||||
- [Node binaries](#node-binaries-10)
|
||||
- [Changelog since v1.19.1](#changelog-since-v1191)
|
||||
- [Changelog since v1.19.2](#changelog-since-v1192)
|
||||
- [Changes by Kind](#changes-by-kind-10)
|
||||
- [API Change](#api-change-3)
|
||||
- [Feature](#feature-6)
|
||||
- [Design](#design)
|
||||
- [Bug or Regression](#bug-or-regression-10)
|
||||
- [Other (Cleanup or Flake)](#other-cleanup-or-flake-4)
|
||||
- [Other (Cleanup or Flake)](#other-cleanup-or-flake-3)
|
||||
- [Dependencies](#dependencies-10)
|
||||
- [Added](#added-10)
|
||||
- [Changed](#changed-10)
|
||||
- [Removed](#removed-10)
|
||||
- [v1.19.1](#v1191)
|
||||
- [Downloads for v1.19.1](#downloads-for-v1191)
|
||||
- [v1.19.2](#v1192)
|
||||
- [Downloads for v1.19.2](#downloads-for-v1192)
|
||||
- [Source Code](#source-code-11)
|
||||
- [Client binaries](#client-binaries-11)
|
||||
- [Server binaries](#server-binaries-11)
|
||||
- [Node binaries](#node-binaries-11)
|
||||
- [Changelog since v1.19.0](#changelog-since-v1190)
|
||||
- [Changelog since v1.19.1](#changelog-since-v1191)
|
||||
- [Changes by Kind](#changes-by-kind-11)
|
||||
- [API Change](#api-change-3)
|
||||
- [Bug or Regression](#bug-or-regression-11)
|
||||
- [Other (Cleanup or Flake)](#other-cleanup-or-flake-5)
|
||||
- [Other (Cleanup or Flake)](#other-cleanup-or-flake-4)
|
||||
- [Dependencies](#dependencies-11)
|
||||
- [Added](#added-11)
|
||||
- [Changed](#changed-11)
|
||||
- [Removed](#removed-11)
|
||||
- [v1.19.1](#v1191)
|
||||
- [Downloads for v1.19.1](#downloads-for-v1191)
|
||||
- [Source Code](#source-code-12)
|
||||
- [Client binaries](#client-binaries-12)
|
||||
- [Server binaries](#server-binaries-12)
|
||||
- [Node binaries](#node-binaries-12)
|
||||
- [Changelog since v1.19.0](#changelog-since-v1190)
|
||||
- [Changes by Kind](#changes-by-kind-12)
|
||||
- [Bug or Regression](#bug-or-regression-12)
|
||||
- [Other (Cleanup or Flake)](#other-cleanup-or-flake-5)
|
||||
- [Dependencies](#dependencies-12)
|
||||
- [Added](#added-12)
|
||||
- [Changed](#changed-12)
|
||||
- [Removed](#removed-12)
|
||||
- [v1.19.0](#v1190)
|
||||
- [Downloads for v1.19.0](#downloads-for-v1190)
|
||||
- [Source Code](#source-code-12)
|
||||
- [Client Binaries](#client-binaries-12)
|
||||
- [Server Binaries](#server-binaries-12)
|
||||
- [Node Binaries](#node-binaries-12)
|
||||
- [Source Code](#source-code-13)
|
||||
- [Client Binaries](#client-binaries-13)
|
||||
- [Server Binaries](#server-binaries-13)
|
||||
- [Node Binaries](#node-binaries-13)
|
||||
- [Changelog since v1.18.0](#changelog-since-v1180)
|
||||
- [What’s New (Major Themes)](#whats-new-major-themes)
|
||||
- [Deprecation warnings](#deprecation-warnings)
|
||||
@ -207,185 +221,263 @@
|
||||
- [Known Issues](#known-issues)
|
||||
- [Urgent Upgrade Notes](#urgent-upgrade-notes)
|
||||
- [(No, really, you MUST read this before you upgrade)](#no-really-you-must-read-this-before-you-upgrade)
|
||||
- [Changes by Kind](#changes-by-kind-12)
|
||||
- [Changes by Kind](#changes-by-kind-13)
|
||||
- [Deprecation](#deprecation)
|
||||
- [API Change](#api-change-4)
|
||||
- [Feature](#feature-6)
|
||||
- [Feature](#feature-7)
|
||||
- [Documentation](#documentation)
|
||||
- [Failing Test](#failing-test-3)
|
||||
- [Bug or Regression](#bug-or-regression-12)
|
||||
- [Bug or Regression](#bug-or-regression-13)
|
||||
- [Other (Cleanup or Flake)](#other-cleanup-or-flake-6)
|
||||
- [Dependencies](#dependencies-12)
|
||||
- [Added](#added-12)
|
||||
- [Changed](#changed-12)
|
||||
- [Removed](#removed-12)
|
||||
- [Dependencies](#dependencies-13)
|
||||
- [Added](#added-13)
|
||||
- [Changed](#changed-13)
|
||||
- [Removed](#removed-13)
|
||||
- [v1.19.0-rc.4](#v1190-rc4)
|
||||
- [Downloads for v1.19.0-rc.4](#downloads-for-v1190-rc4)
|
||||
- [Source Code](#source-code-13)
|
||||
- [Client binaries](#client-binaries-13)
|
||||
- [Server binaries](#server-binaries-13)
|
||||
- [Node binaries](#node-binaries-13)
|
||||
- [Changelog since v1.19.0-rc.3](#changelog-since-v1190-rc3)
|
||||
- [Changes by Kind](#changes-by-kind-13)
|
||||
- [Deprecation](#deprecation-1)
|
||||
- [Bug or Regression](#bug-or-regression-13)
|
||||
- [Other (Cleanup or Flake)](#other-cleanup-or-flake-7)
|
||||
- [Dependencies](#dependencies-14)
|
||||
- [Added](#added-14)
|
||||
- [Changed](#changed-14)
|
||||
- [Removed](#removed-14)
|
||||
- [v1.19.0-rc.3](#v1190-rc3)
|
||||
- [Downloads for v1.19.0-rc.3](#downloads-for-v1190-rc3)
|
||||
- [v1.19.0-rc.4](#v1190-rc4)
|
||||
- [Downloads for v1.19.0-rc.4](#downloads-for-v1190-rc4)
|
||||
- [Source Code](#source-code-14)
|
||||
- [Client binaries](#client-binaries-14)
|
||||
- [Server binaries](#server-binaries-14)
|
||||
- [Node binaries](#node-binaries-14)
|
||||
- [Changelog since v1.19.0-rc.2](#changelog-since-v1190-rc2)
|
||||
- [Changelog since v1.19.0-rc.3](#changelog-since-v1190-rc3)
|
||||
- [Changes by Kind](#changes-by-kind-14)
|
||||
- [API Change](#api-change-5)
|
||||
- [Deprecation](#deprecation-1)
|
||||
- [Bug or Regression](#bug-or-regression-14)
|
||||
- [Other (Cleanup or Flake)](#other-cleanup-or-flake-7)
|
||||
- [Dependencies](#dependencies-15)
|
||||
- [Added](#added-15)
|
||||
- [Changed](#changed-15)
|
||||
- [Removed](#removed-15)
|
||||
- [v1.19.0-rc.2](#v1190-rc2)
|
||||
- [Downloads for v1.19.0-rc.2](#downloads-for-v1190-rc2)
|
||||
- [v1.19.0-rc.3](#v1190-rc3)
|
||||
- [Downloads for v1.19.0-rc.3](#downloads-for-v1190-rc3)
|
||||
- [Source Code](#source-code-15)
|
||||
- [Client binaries](#client-binaries-15)
|
||||
- [Server binaries](#server-binaries-15)
|
||||
- [Node binaries](#node-binaries-15)
|
||||
- [Changelog since v1.19.0-rc.1](#changelog-since-v1190-rc1)
|
||||
- [Changelog since v1.19.0-rc.2](#changelog-since-v1190-rc2)
|
||||
- [Changes by Kind](#changes-by-kind-15)
|
||||
- [API Change](#api-change-6)
|
||||
- [Feature](#feature-7)
|
||||
- [API Change](#api-change-5)
|
||||
- [Bug or Regression](#bug-or-regression-15)
|
||||
- [Other (Cleanup or Flake)](#other-cleanup-or-flake-8)
|
||||
- [Dependencies](#dependencies-16)
|
||||
- [Added](#added-16)
|
||||
- [Changed](#changed-16)
|
||||
- [Removed](#removed-16)
|
||||
- [v1.19.0-rc.1](#v1190-rc1)
|
||||
- [Downloads for v1.19.0-rc.1](#downloads-for-v1190-rc1)
|
||||
- [v1.19.0-rc.2](#v1190-rc2)
|
||||
- [Downloads for v1.19.0-rc.2](#downloads-for-v1190-rc2)
|
||||
- [Source Code](#source-code-16)
|
||||
- [Client binaries](#client-binaries-16)
|
||||
- [Server binaries](#server-binaries-16)
|
||||
- [Node binaries](#node-binaries-16)
|
||||
- [Changelog since v1.19.0-rc.0](#changelog-since-v1190-rc0)
|
||||
- [Urgent Upgrade Notes](#urgent-upgrade-notes-1)
|
||||
- [(No, really, you MUST read this before you upgrade)](#no-really-you-must-read-this-before-you-upgrade-1)
|
||||
- [Changelog since v1.19.0-rc.1](#changelog-since-v1190-rc1)
|
||||
- [Changes by Kind](#changes-by-kind-16)
|
||||
- [Deprecation](#deprecation-2)
|
||||
- [API Change](#api-change-7)
|
||||
- [API Change](#api-change-6)
|
||||
- [Feature](#feature-8)
|
||||
- [Failing Test](#failing-test-4)
|
||||
- [Bug or Regression](#bug-or-regression-16)
|
||||
- [Other (Cleanup or Flake)](#other-cleanup-or-flake-9)
|
||||
- [Other (Cleanup or Flake)](#other-cleanup-or-flake-8)
|
||||
- [Dependencies](#dependencies-17)
|
||||
- [Added](#added-17)
|
||||
- [Changed](#changed-17)
|
||||
- [Removed](#removed-17)
|
||||
- [v1.19.0-beta.2](#v1190-beta2)
|
||||
- [Downloads for v1.19.0-beta.2](#downloads-for-v1190-beta2)
|
||||
- [v1.19.0-rc.1](#v1190-rc1)
|
||||
- [Downloads for v1.19.0-rc.1](#downloads-for-v1190-rc1)
|
||||
- [Source Code](#source-code-17)
|
||||
- [Client binaries](#client-binaries-17)
|
||||
- [Server binaries](#server-binaries-17)
|
||||
- [Node binaries](#node-binaries-17)
|
||||
- [Changelog since v1.19.0-beta.1](#changelog-since-v1190-beta1)
|
||||
- [Changelog since v1.19.0-rc.0](#changelog-since-v1190-rc0)
|
||||
- [Urgent Upgrade Notes](#urgent-upgrade-notes-1)
|
||||
- [(No, really, you MUST read this before you upgrade)](#no-really-you-must-read-this-before-you-upgrade-1)
|
||||
- [Changes by Kind](#changes-by-kind-17)
|
||||
- [Deprecation](#deprecation-3)
|
||||
- [API Change](#api-change-8)
|
||||
- [Deprecation](#deprecation-2)
|
||||
- [API Change](#api-change-7)
|
||||
- [Feature](#feature-9)
|
||||
- [Failing Test](#failing-test-4)
|
||||
- [Bug or Regression](#bug-or-regression-17)
|
||||
- [Other (Cleanup or Flake)](#other-cleanup-or-flake-10)
|
||||
- [Other (Cleanup or Flake)](#other-cleanup-or-flake-9)
|
||||
- [Dependencies](#dependencies-18)
|
||||
- [Added](#added-18)
|
||||
- [Changed](#changed-18)
|
||||
- [Removed](#removed-18)
|
||||
- [v1.19.0-beta.1](#v1190-beta1)
|
||||
- [Downloads for v1.19.0-beta.1](#downloads-for-v1190-beta1)
|
||||
- [v1.19.0-beta.2](#v1190-beta2)
|
||||
- [Downloads for v1.19.0-beta.2](#downloads-for-v1190-beta2)
|
||||
- [Source Code](#source-code-18)
|
||||
- [Client binaries](#client-binaries-18)
|
||||
- [Server binaries](#server-binaries-18)
|
||||
- [Node binaries](#node-binaries-18)
|
||||
- [Changelog since v1.19.0-alpha.3](#changelog-since-v1190-alpha3)
|
||||
- [Urgent Upgrade Notes](#urgent-upgrade-notes-2)
|
||||
- [(No, really, you MUST read this before you upgrade)](#no-really-you-must-read-this-before-you-upgrade-2)
|
||||
- [Changelog since v1.19.0-beta.1](#changelog-since-v1190-beta1)
|
||||
- [Changes by Kind](#changes-by-kind-18)
|
||||
- [API Change](#api-change-9)
|
||||
- [Deprecation](#deprecation-3)
|
||||
- [API Change](#api-change-8)
|
||||
- [Feature](#feature-10)
|
||||
- [Bug or Regression](#bug-or-regression-18)
|
||||
- [Other (Cleanup or Flake)](#other-cleanup-or-flake-11)
|
||||
- [Other (Cleanup or Flake)](#other-cleanup-or-flake-10)
|
||||
- [Dependencies](#dependencies-19)
|
||||
- [Added](#added-19)
|
||||
- [Changed](#changed-19)
|
||||
- [Removed](#removed-19)
|
||||
- [v1.19.0-beta.0](#v1190-beta0)
|
||||
- [Downloads for v1.19.0-beta.0](#downloads-for-v1190-beta0)
|
||||
- [v1.19.0-beta.1](#v1190-beta1)
|
||||
- [Downloads for v1.19.0-beta.1](#downloads-for-v1190-beta1)
|
||||
- [Source Code](#source-code-19)
|
||||
- [Client binaries](#client-binaries-19)
|
||||
- [Server binaries](#server-binaries-19)
|
||||
- [Node binaries](#node-binaries-19)
|
||||
- [Changelog since v1.19.0-alpha.3](#changelog-since-v1190-alpha3-1)
|
||||
- [Changelog since v1.19.0-alpha.3](#changelog-since-v1190-alpha3)
|
||||
- [Urgent Upgrade Notes](#urgent-upgrade-notes-2)
|
||||
- [(No, really, you MUST read this before you upgrade)](#no-really-you-must-read-this-before-you-upgrade-2)
|
||||
- [Changes by Kind](#changes-by-kind-19)
|
||||
- [API Change](#api-change-10)
|
||||
- [API Change](#api-change-9)
|
||||
- [Feature](#feature-11)
|
||||
- [Bug or Regression](#bug-or-regression-19)
|
||||
- [Other (Cleanup or Flake)](#other-cleanup-or-flake-12)
|
||||
- [Other (Cleanup or Flake)](#other-cleanup-or-flake-11)
|
||||
- [Dependencies](#dependencies-20)
|
||||
- [Added](#added-20)
|
||||
- [Changed](#changed-20)
|
||||
- [Removed](#removed-20)
|
||||
- [v1.19.0-alpha.3](#v1190-alpha3)
|
||||
- [Downloads for v1.19.0-alpha.3](#downloads-for-v1190-alpha3)
|
||||
- [v1.19.0-beta.0](#v1190-beta0)
|
||||
- [Downloads for v1.19.0-beta.0](#downloads-for-v1190-beta0)
|
||||
- [Source Code](#source-code-20)
|
||||
- [Client Binaries](#client-binaries-20)
|
||||
- [Server Binaries](#server-binaries-20)
|
||||
- [Node Binaries](#node-binaries-20)
|
||||
- [Changelog since v1.19.0-alpha.2](#changelog-since-v1190-alpha2)
|
||||
- [Urgent Upgrade Notes](#urgent-upgrade-notes-3)
|
||||
- [(No, really, you MUST read this before you upgrade)](#no-really-you-must-read-this-before-you-upgrade-3)
|
||||
- [Client binaries](#client-binaries-20)
|
||||
- [Server binaries](#server-binaries-20)
|
||||
- [Node binaries](#node-binaries-20)
|
||||
- [Changelog since v1.19.0-alpha.3](#changelog-since-v1190-alpha3-1)
|
||||
- [Changes by Kind](#changes-by-kind-20)
|
||||
- [Deprecation](#deprecation-4)
|
||||
- [API Change](#api-change-11)
|
||||
- [API Change](#api-change-10)
|
||||
- [Feature](#feature-12)
|
||||
- [Bug or Regression](#bug-or-regression-20)
|
||||
- [Other (Cleanup or Flake)](#other-cleanup-or-flake-13)
|
||||
- [v1.19.0-alpha.2](#v1190-alpha2)
|
||||
- [Downloads for v1.19.0-alpha.2](#downloads-for-v1190-alpha2)
|
||||
- [Other (Cleanup or Flake)](#other-cleanup-or-flake-12)
|
||||
- [Dependencies](#dependencies-21)
|
||||
- [Added](#added-21)
|
||||
- [Changed](#changed-21)
|
||||
- [Removed](#removed-21)
|
||||
- [v1.19.0-alpha.3](#v1190-alpha3)
|
||||
- [Downloads for v1.19.0-alpha.3](#downloads-for-v1190-alpha3)
|
||||
- [Source Code](#source-code-21)
|
||||
- [Client Binaries](#client-binaries-21)
|
||||
- [Server Binaries](#server-binaries-21)
|
||||
- [Node Binaries](#node-binaries-21)
|
||||
- [Changelog since v1.19.0-alpha.1](#changelog-since-v1190-alpha1)
|
||||
- [Urgent Upgrade Notes](#urgent-upgrade-notes-4)
|
||||
- [(No, really, you MUST read this before you upgrade)](#no-really-you-must-read-this-before-you-upgrade-4)
|
||||
- [Changelog since v1.19.0-alpha.2](#changelog-since-v1190-alpha2)
|
||||
- [Urgent Upgrade Notes](#urgent-upgrade-notes-3)
|
||||
- [(No, really, you MUST read this before you upgrade)](#no-really-you-must-read-this-before-you-upgrade-3)
|
||||
- [Changes by Kind](#changes-by-kind-21)
|
||||
- [API Change](#api-change-12)
|
||||
- [Deprecation](#deprecation-4)
|
||||
- [API Change](#api-change-11)
|
||||
- [Feature](#feature-13)
|
||||
- [Bug or Regression](#bug-or-regression-21)
|
||||
- [Other (Cleanup or Flake)](#other-cleanup-or-flake-14)
|
||||
- [v1.19.0-alpha.1](#v1190-alpha1)
|
||||
- [Downloads for v1.19.0-alpha.1](#downloads-for-v1190-alpha1)
|
||||
- [Other (Cleanup or Flake)](#other-cleanup-or-flake-13)
|
||||
- [v1.19.0-alpha.2](#v1190-alpha2)
|
||||
- [Downloads for v1.19.0-alpha.2](#downloads-for-v1190-alpha2)
|
||||
- [Source Code](#source-code-22)
|
||||
- [Client Binaries](#client-binaries-22)
|
||||
- [Server Binaries](#server-binaries-22)
|
||||
- [Node Binaries](#node-binaries-22)
|
||||
- [Changelog since v1.19.0-alpha.1](#changelog-since-v1190-alpha1)
|
||||
- [Urgent Upgrade Notes](#urgent-upgrade-notes-4)
|
||||
- [(No, really, you MUST read this before you upgrade)](#no-really-you-must-read-this-before-you-upgrade-4)
|
||||
- [Changes by Kind](#changes-by-kind-22)
|
||||
- [API Change](#api-change-12)
|
||||
- [Feature](#feature-14)
|
||||
- [Bug or Regression](#bug-or-regression-22)
|
||||
- [Other (Cleanup or Flake)](#other-cleanup-or-flake-14)
|
||||
- [v1.19.0-alpha.1](#v1190-alpha1)
|
||||
- [Downloads for v1.19.0-alpha.1](#downloads-for-v1190-alpha1)
|
||||
- [Source Code](#source-code-23)
|
||||
- [Client Binaries](#client-binaries-23)
|
||||
- [Server Binaries](#server-binaries-23)
|
||||
- [Node Binaries](#node-binaries-23)
|
||||
- [Changelog since v1.19.0-alpha.0](#changelog-since-v1190-alpha0)
|
||||
- [Urgent Upgrade Notes](#urgent-upgrade-notes-5)
|
||||
- [(No, really, you MUST read this before you upgrade)](#no-really-you-must-read-this-before-you-upgrade-5)
|
||||
- [Changes by Kind](#changes-by-kind-22)
|
||||
- [Changes by Kind](#changes-by-kind-23)
|
||||
- [Deprecation](#deprecation-5)
|
||||
- [API Change](#api-change-13)
|
||||
- [Feature](#feature-14)
|
||||
- [Feature](#feature-15)
|
||||
- [Documentation](#documentation-1)
|
||||
- [Other (Bug, Cleanup or Flake)](#other-bug-cleanup-or-flake)
|
||||
|
||||
<!-- END MUNGE: GENERATED_TOC -->
|
||||
|
||||
# v1.19.13
|
||||
|
||||
|
||||
## Downloads for v1.19.13
|
||||
|
||||
### Source Code
|
||||
|
||||
filename | sha512 hash
|
||||
-------- | -----------
|
||||
[kubernetes.tar.gz](https://dl.k8s.io/v1.19.13/kubernetes.tar.gz) | c33be1c413e38b29fd14740b5444d08896e9919c26f5e56934c1fef8e7cde8c1371b410d2b8fe511e6406bb72b013a4e68ca11efcb90573a56a79626cd74f381
|
||||
[kubernetes-src.tar.gz](https://dl.k8s.io/v1.19.13/kubernetes-src.tar.gz) | d6e243defa828ec38868dab3be654c3c889b948d3d691ec22144a28fb5d9b59f86f917a01a482ce655f12a2065b28ea638c2380b73d8feee12b00e293c69fb1e
|
||||
|
||||
### Client Binaries
|
||||
|
||||
filename | sha512 hash
|
||||
-------- | -----------
|
||||
[kubernetes-client-darwin-amd64.tar.gz](https://dl.k8s.io/v1.19.13/kubernetes-client-darwin-amd64.tar.gz) | fd3b3ae3fb86bffae9504fa2c32791934cac3277f3fa70c1dd18e078d5f97cd9e1842301519de41cfd5835fb7689bc82055e81d25123796ccfcdd70311d8431b
|
||||
[kubernetes-client-linux-386.tar.gz](https://dl.k8s.io/v1.19.13/kubernetes-client-linux-386.tar.gz) | 4e165e93ec9ba8e5a08f34eacafb0b6f87e91f1894719f12a08125417ba505a953b0ab60e5270467be8b6a9b667d90528ed1d837d089ae95db977d154d75d927
|
||||
[kubernetes-client-linux-amd64.tar.gz](https://dl.k8s.io/v1.19.13/kubernetes-client-linux-amd64.tar.gz) | 156fb003f1b29226c1a89fed2231c96071c8c52e428dd16dd24bc4159109e755a3ca1c30aae5ec8fad70467d73e06140c7e794b0f2065832b5d14980b2ba7e36
|
||||
[kubernetes-client-linux-arm.tar.gz](https://dl.k8s.io/v1.19.13/kubernetes-client-linux-arm.tar.gz) | c307e294160cd4105e44ab68ad53515fcd63db4eb0b4c0f26429ca45d15a31f686285f24b6013c22e2bf3f5a73449849db361f066f28a27519809b39c10642a0
|
||||
[kubernetes-client-linux-arm64.tar.gz](https://dl.k8s.io/v1.19.13/kubernetes-client-linux-arm64.tar.gz) | fd5e073e4a823c143637230b950a1255f36d0f84bfb68a09bac2bf79cf58b2d7f61aa1ae507b21182cde13d32482ae8d76cae88b3ebfbd69a29d8485d80030d3
|
||||
[kubernetes-client-linux-ppc64le.tar.gz](https://dl.k8s.io/v1.19.13/kubernetes-client-linux-ppc64le.tar.gz) | 963c435ec3187447ba97769241f77f91a664b1260b4229471765f749b9f6fb796ac6eeb2026d67cc67506f02605c3d681fd6a80ecf94ff5000cf643881120606
|
||||
[kubernetes-client-linux-s390x.tar.gz](https://dl.k8s.io/v1.19.13/kubernetes-client-linux-s390x.tar.gz) | e8f59759d22a616fb844f1ce06eb5420628a16129063cf0ef4d330d3b46cae8dd4147dac64becad26be59708e9c76f4ab8cc0c50e6a35cf7741fad358f719015
|
||||
[kubernetes-client-windows-386.tar.gz](https://dl.k8s.io/v1.19.13/kubernetes-client-windows-386.tar.gz) | c7d44eb3237a5e958b59fc3de0edc12cb6ee9ae7606a095cd1eda834c09801c70d3d28bb0761754e5c367be1e376ea793d1d8f3a9dc067c7b7bd308c0f27c86a
|
||||
[kubernetes-client-windows-amd64.tar.gz](https://dl.k8s.io/v1.19.13/kubernetes-client-windows-amd64.tar.gz) | ae5f5d45bc28b5cff13ede9943705889f42100585e1ec3b94591813d385d737c9635a6c21bec4485bbaa7a52c25330a53bccdaebe784923c28c4d5d6b5f51389
|
||||
|
||||
### Server Binaries
|
||||
|
||||
filename | sha512 hash
|
||||
-------- | -----------
|
||||
[kubernetes-server-linux-amd64.tar.gz](https://dl.k8s.io/v1.19.13/kubernetes-server-linux-amd64.tar.gz) | 2d357be4b62a399a20f3550295852d39f3975699711487d4af46626cc873c8c3cdba8503798fc355985c498b12a9804199a159a38d9aa1a123b72bfcf692ed08
|
||||
[kubernetes-server-linux-arm.tar.gz](https://dl.k8s.io/v1.19.13/kubernetes-server-linux-arm.tar.gz) | fdde608397dc1f64b794759077aa4595a2b13a1787638bd1d0d9bb9efd1534b571e7635ccd7090ea3c9a6f7be0a4ba9152ae2666fa03ffaf350f6e81a58411c5
|
||||
[kubernetes-server-linux-arm64.tar.gz](https://dl.k8s.io/v1.19.13/kubernetes-server-linux-arm64.tar.gz) | 2a4cae1c8a340beecdc2a61486e1da28a7ddac2d4c17cee20e53fcb8103715a516e2735e10bc5cfefe6a109e5d7898d32a508bef076d07249aed0ac1dd6a97d5
|
||||
[kubernetes-server-linux-ppc64le.tar.gz](https://dl.k8s.io/v1.19.13/kubernetes-server-linux-ppc64le.tar.gz) | 7011248d416686d9b5a9ffe8338cf83a450cae616d109bae82152a6dd1d601ccc4f79453851564c10a851f7f8847e2b3ab468c3a0c5649bd5548bc581da93f27
|
||||
[kubernetes-server-linux-s390x.tar.gz](https://dl.k8s.io/v1.19.13/kubernetes-server-linux-s390x.tar.gz) | 3fdb9efa4f1bbfb1646e093624068b4e8cbd95797dbc95dd9c031114c6d290a8adeaf0821b78c5605908deb80aedc04d3bbd9f235f106d00c7476388c4413536
|
||||
|
||||
### Node Binaries
|
||||
|
||||
filename | sha512 hash
|
||||
-------- | -----------
|
||||
[kubernetes-node-linux-amd64.tar.gz](https://dl.k8s.io/v1.19.13/kubernetes-node-linux-amd64.tar.gz) | 48b1e18b04f4f92d022514db15bb3e443cd1524aa5e1d765e7f6bee8f5d3091117c05d4864d01d1562c268d5f75f7cacb9e56ff50c3ced888bbc73af2bf85217
|
||||
[kubernetes-node-linux-arm.tar.gz](https://dl.k8s.io/v1.19.13/kubernetes-node-linux-arm.tar.gz) | f8bfe168792e1e64d45fa72ae935b3b4301674df9320537fe7b1225872c4cde3ad5394141fc4b2fa316b44a4d39dbca7066fe1eeea7dfc62feae7814d6c3fc6d
|
||||
[kubernetes-node-linux-arm64.tar.gz](https://dl.k8s.io/v1.19.13/kubernetes-node-linux-arm64.tar.gz) | d7ae51d076ae73e2ad72a429ad154aebd2b6f969091edbb77dc0e78a7d5c55b5d78b8dab81fdc3d7eb86b96f423a53ef5c184e49fba8f3d000095e1767b885bb
|
||||
[kubernetes-node-linux-ppc64le.tar.gz](https://dl.k8s.io/v1.19.13/kubernetes-node-linux-ppc64le.tar.gz) | ba722cc18ff2216f651a0e4dac24c6a7e3150d273569c4dd84689183b73d8328ad335d77da4fcb0a406e2d25121676510a680ced78ec811cd20a6ac202eddf3c
|
||||
[kubernetes-node-linux-s390x.tar.gz](https://dl.k8s.io/v1.19.13/kubernetes-node-linux-s390x.tar.gz) | ba4da20282c736a650165dec1a2751b67172d36d5deb35c964455590f536afce16119e4f5363a71fabf7ee73a1b168dd5ecd53ca966a5627871902977cf9d82e
|
||||
[kubernetes-node-windows-amd64.tar.gz](https://dl.k8s.io/v1.19.13/kubernetes-node-windows-amd64.tar.gz) | 48f1d7c707c821a7c3ad013d7a887f338456aa4c96c1eb5dcbfc7eab335616f1ad08e4e751cb346db036ea17ff5fe0f5ff6260e2cc32c315e671dd4ef7597500
|
||||
|
||||
## Changelog since v1.19.12
|
||||
|
||||
## Changes by Kind
|
||||
|
||||
### Feature
|
||||
|
||||
- Kubernetes 1.19.x is now built using Go 1.15.14 ([#103705](https://github.com/kubernetes/kubernetes/pull/103705), [@puerco](https://github.com/puerco)) [SIG Cloud Provider, Instrumentation, Release and Testing]
|
||||
- Updates the following images to pick up CVE fixes:
|
||||
- `debian` to v1.8.0
|
||||
- `debian-iptables` to v1.6.5
|
||||
- `setcap` to v2.0.3 ([#103235](https://github.com/kubernetes/kubernetes/pull/103235), [@thejoycekung](https://github.com/thejoycekung)) [SIG API Machinery, Release and Testing]
|
||||
|
||||
### Bug or Regression
|
||||
|
||||
- Fix scoring for NodeResourcesMostAllocated and NodeResourcesBalancedAllocation plugins when nodes have containers with no requests. This was leaving to under-utilization of small nodes. ([#102925](https://github.com/kubernetes/kubernetes/pull/102925), [@alculquicondor](https://github.com/alculquicondor)) [SIG Scheduling]
|
||||
- Fixes a `cannot convert int64 to float64` error seen using server-side apply with certain CRDs in 1.19.10+ ([#103105](https://github.com/kubernetes/kubernetes/pull/103105), [@liggitt](https://github.com/liggitt)) [SIG API Machinery]
|
||||
- Switch scheduler to generate the merge patch on pod status instead of the full pod ([#103133](https://github.com/kubernetes/kubernetes/pull/103133), [@marwanad](https://github.com/marwanad)) [SIG Scheduling]
|
||||
|
||||
## Dependencies
|
||||
|
||||
### Added
|
||||
_Nothing has changed._
|
||||
|
||||
### Changed
|
||||
- sigs.k8s.io/structured-merge-diff/v4: v4.0.3 → v4.1.2
|
||||
|
||||
### Removed
|
||||
_Nothing has changed._
|
||||
|
||||
|
||||
|
||||
# v1.19.12
|
||||
|
||||
|
||||
|
@ -25,7 +25,6 @@ import (
|
||||
|
||||
"k8s.io/api/core/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/fields"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/util/wait"
|
||||
"k8s.io/apimachinery/pkg/watch"
|
||||
@ -56,64 +55,6 @@ func scheduleFailureEvent(podName string) func(*v1.Event) bool {
|
||||
// Action is a function to be performed by the system.
|
||||
type Action func() error
|
||||
|
||||
// observeNodeUpdateAfterAction returns true if a node update matching the predicate was emitted
|
||||
// from the system after performing the supplied action.
|
||||
func observeNodeUpdateAfterAction(c clientset.Interface, nodeName string, nodePredicate func(*v1.Node) bool, action Action) (bool, error) {
|
||||
observedMatchingNode := false
|
||||
nodeSelector := fields.OneTermEqualSelector("metadata.name", nodeName)
|
||||
informerStartedChan := make(chan struct{})
|
||||
var informerStartedGuard sync.Once
|
||||
|
||||
_, controller := cache.NewInformer(
|
||||
&cache.ListWatch{
|
||||
ListFunc: func(options metav1.ListOptions) (runtime.Object, error) {
|
||||
options.FieldSelector = nodeSelector.String()
|
||||
ls, err := c.CoreV1().Nodes().List(context.TODO(), options)
|
||||
return ls, err
|
||||
},
|
||||
WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) {
|
||||
// Signal parent goroutine that watching has begun.
|
||||
defer informerStartedGuard.Do(func() { close(informerStartedChan) })
|
||||
options.FieldSelector = nodeSelector.String()
|
||||
w, err := c.CoreV1().Nodes().Watch(context.TODO(), options)
|
||||
return w, err
|
||||
},
|
||||
},
|
||||
&v1.Node{},
|
||||
0,
|
||||
cache.ResourceEventHandlerFuncs{
|
||||
UpdateFunc: func(oldObj, newObj interface{}) {
|
||||
n, ok := newObj.(*v1.Node)
|
||||
framework.ExpectEqual(ok, true)
|
||||
if nodePredicate(n) {
|
||||
observedMatchingNode = true
|
||||
}
|
||||
},
|
||||
},
|
||||
)
|
||||
|
||||
// Start the informer and block this goroutine waiting for the started signal.
|
||||
informerStopChan := make(chan struct{})
|
||||
defer func() { close(informerStopChan) }()
|
||||
go controller.Run(informerStopChan)
|
||||
<-informerStartedChan
|
||||
|
||||
// Invoke the action function.
|
||||
err := action()
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
|
||||
// Poll whether the informer has found a matching node update with a timeout.
|
||||
// Wait up 2 minutes polling every second.
|
||||
timeout := 2 * time.Minute
|
||||
interval := 1 * time.Second
|
||||
err = wait.Poll(interval, timeout, func() (bool, error) {
|
||||
return observedMatchingNode, nil
|
||||
})
|
||||
return err == nil, err
|
||||
}
|
||||
|
||||
// observeEventAfterAction returns true if an event matching the predicate was emitted
|
||||
// from the system after performing the supplied action.
|
||||
func observeEventAfterAction(c clientset.Interface, ns string, eventPredicate func(*v1.Event) bool, action Action) (bool, error) {
|
||||
|
@ -18,7 +18,6 @@ package scheduling
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"math"
|
||||
"sync"
|
||||
@ -30,7 +29,6 @@ import (
|
||||
_ "github.com/stretchr/testify/assert"
|
||||
|
||||
v1 "k8s.io/api/core/v1"
|
||||
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
||||
"k8s.io/apimachinery/pkg/api/resource"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/labels"
|
||||
@ -43,10 +41,8 @@ import (
|
||||
"k8s.io/kubernetes/test/e2e/framework"
|
||||
e2enode "k8s.io/kubernetes/test/e2e/framework/node"
|
||||
e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
|
||||
e2erc "k8s.io/kubernetes/test/e2e/framework/rc"
|
||||
e2eskipper "k8s.io/kubernetes/test/e2e/framework/skipper"
|
||||
testutils "k8s.io/kubernetes/test/utils"
|
||||
imageutils "k8s.io/kubernetes/test/utils/image"
|
||||
)
|
||||
|
||||
// Resource is a collection of compute resource.
|
||||
@ -73,61 +69,6 @@ var podRequestedResource = &v1.ResourceRequirements{
|
||||
},
|
||||
}
|
||||
|
||||
// addOrUpdateAvoidPodOnNode adds avoidPods annotations to node, will override if it exists
|
||||
func addOrUpdateAvoidPodOnNode(c clientset.Interface, nodeName string, avoidPods v1.AvoidPods) {
|
||||
err := wait.PollImmediate(framework.Poll, framework.SingleCallTimeout, func() (bool, error) {
|
||||
node, err := c.CoreV1().Nodes().Get(context.TODO(), nodeName, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
|
||||
taintsData, err := json.Marshal(avoidPods)
|
||||
framework.ExpectNoError(err)
|
||||
|
||||
if node.Annotations == nil {
|
||||
node.Annotations = make(map[string]string)
|
||||
}
|
||||
node.Annotations[v1.PreferAvoidPodsAnnotationKey] = string(taintsData)
|
||||
_, err = c.CoreV1().Nodes().Update(context.TODO(), node, metav1.UpdateOptions{})
|
||||
if err != nil {
|
||||
if !apierrors.IsConflict(err) {
|
||||
framework.ExpectNoError(err)
|
||||
} else {
|
||||
framework.Logf("Conflict when trying to add/update avoidPods %v to %v with error %v", avoidPods, nodeName, err)
|
||||
return false, nil
|
||||
}
|
||||
}
|
||||
return true, nil
|
||||
})
|
||||
framework.ExpectNoError(err)
|
||||
}
|
||||
|
||||
// removeAvoidPodsOffNode removes AvoidPods annotations from the node. It does not fail if no such annotation exists.
|
||||
func removeAvoidPodsOffNode(c clientset.Interface, nodeName string) {
|
||||
err := wait.PollImmediate(framework.Poll, framework.SingleCallTimeout, func() (bool, error) {
|
||||
node, err := c.CoreV1().Nodes().Get(context.TODO(), nodeName, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
|
||||
if node.Annotations == nil {
|
||||
return true, nil
|
||||
}
|
||||
delete(node.Annotations, v1.PreferAvoidPodsAnnotationKey)
|
||||
_, err = c.CoreV1().Nodes().Update(context.TODO(), node, metav1.UpdateOptions{})
|
||||
if err != nil {
|
||||
if !apierrors.IsConflict(err) {
|
||||
framework.ExpectNoError(err)
|
||||
} else {
|
||||
framework.Logf("Conflict when trying to remove avoidPods to %v", nodeName)
|
||||
return false, nil
|
||||
}
|
||||
}
|
||||
return true, nil
|
||||
})
|
||||
framework.ExpectNoError(err)
|
||||
}
|
||||
|
||||
// nodesAreTooUtilized ensures that each node can support 2*crioMinMemLimit
|
||||
// We check for double because it needs to support at least the cri-o minimum
|
||||
// plus whatever delta between node usages (which could be up to or at least crioMinMemLimit)
|
||||
@ -262,70 +203,6 @@ var _ = SIGDescribe("SchedulerPriorities [Serial]", func() {
|
||||
framework.ExpectNotEqual(labelPod.Spec.NodeName, nodeName)
|
||||
})
|
||||
|
||||
ginkgo.It("Pod should avoid nodes that have avoidPod annotation", func() {
|
||||
nodeName := nodeList.Items[0].Name
|
||||
// make the nodes have balanced cpu,mem usage
|
||||
cleanUp, err := createBalancedPodForNodes(f, cs, ns, nodeList.Items, podRequestedResource, 0.5)
|
||||
defer cleanUp()
|
||||
framework.ExpectNoError(err)
|
||||
ginkgo.By("Create a RC, with 0 replicas")
|
||||
rc := createRC(ns, "scheduler-priority-avoid-pod", int32(0), map[string]string{"name": "scheduler-priority-avoid-pod"}, f, podRequestedResource)
|
||||
// Cleanup the replication controller when we are done.
|
||||
defer func() {
|
||||
// Resize the replication controller to zero to get rid of pods.
|
||||
if err := e2erc.DeleteRCAndWaitForGC(f.ClientSet, f.Namespace.Name, rc.Name); err != nil {
|
||||
framework.Logf("Failed to cleanup replication controller %v: %v.", rc.Name, err)
|
||||
}
|
||||
}()
|
||||
|
||||
ginkgo.By("Trying to apply avoidPod annotations on the first node.")
|
||||
avoidPod := v1.AvoidPods{
|
||||
PreferAvoidPods: []v1.PreferAvoidPodsEntry{
|
||||
{
|
||||
PodSignature: v1.PodSignature{
|
||||
PodController: &metav1.OwnerReference{
|
||||
APIVersion: "v1",
|
||||
Kind: "ReplicationController",
|
||||
Name: rc.Name,
|
||||
UID: rc.UID,
|
||||
Controller: func() *bool { b := true; return &b }(),
|
||||
},
|
||||
},
|
||||
Reason: "some reson",
|
||||
Message: "some message",
|
||||
},
|
||||
},
|
||||
}
|
||||
action := func() error {
|
||||
addOrUpdateAvoidPodOnNode(cs, nodeName, avoidPod)
|
||||
return nil
|
||||
}
|
||||
predicate := func(node *v1.Node) bool {
|
||||
val, err := json.Marshal(avoidPod)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
return node.Annotations[v1.PreferAvoidPodsAnnotationKey] == string(val)
|
||||
}
|
||||
success, err := observeNodeUpdateAfterAction(f.ClientSet, nodeName, predicate, action)
|
||||
framework.ExpectNoError(err)
|
||||
framework.ExpectEqual(success, true)
|
||||
|
||||
defer removeAvoidPodsOffNode(cs, nodeName)
|
||||
|
||||
ginkgo.By(fmt.Sprintf("Scale the RC: %s to len(nodeList.Item)-1 : %v.", rc.Name, len(nodeList.Items)-1))
|
||||
|
||||
e2erc.ScaleRC(f.ClientSet, f.ScalesGetter, ns, rc.Name, uint(len(nodeList.Items)-1), true)
|
||||
testPods, err := cs.CoreV1().Pods(ns).List(context.TODO(), metav1.ListOptions{
|
||||
LabelSelector: "name=scheduler-priority-avoid-pod",
|
||||
})
|
||||
framework.ExpectNoError(err)
|
||||
ginkgo.By(fmt.Sprintf("Verify the pods should not scheduled to the node: %s", nodeName))
|
||||
for _, pod := range testPods.Items {
|
||||
framework.ExpectNotEqual(pod.Spec.NodeName, nodeName)
|
||||
}
|
||||
})
|
||||
|
||||
ginkgo.It("Pod should be preferably scheduled to nodes pod can tolerate", func() {
|
||||
// make the nodes have balanced cpu,mem usage ratio
|
||||
cleanUp, err := createBalancedPodForNodes(f, cs, ns, nodeList.Items, podRequestedResource, 0.5)
|
||||
@ -664,38 +541,6 @@ func getNonZeroRequests(pod *v1.Pod) Resource {
|
||||
return result
|
||||
}
|
||||
|
||||
func createRC(ns, rsName string, replicas int32, rcPodLabels map[string]string, f *framework.Framework, resource *v1.ResourceRequirements) *v1.ReplicationController {
|
||||
rc := &v1.ReplicationController{
|
||||
TypeMeta: metav1.TypeMeta{
|
||||
Kind: "ReplicationController",
|
||||
APIVersion: "v1",
|
||||
},
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: rsName,
|
||||
},
|
||||
Spec: v1.ReplicationControllerSpec{
|
||||
Replicas: &replicas,
|
||||
Template: &v1.PodTemplateSpec{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Labels: rcPodLabels,
|
||||
},
|
||||
Spec: v1.PodSpec{
|
||||
Containers: []v1.Container{
|
||||
{
|
||||
Name: rsName,
|
||||
Image: imageutils.GetPauseImageName(),
|
||||
Resources: *resource,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
rc, err := f.ClientSet.CoreV1().ReplicationControllers(ns).Create(context.TODO(), rc, metav1.CreateOptions{})
|
||||
framework.ExpectNoError(err)
|
||||
return rc
|
||||
}
|
||||
|
||||
func getRandomTaint() v1.Taint {
|
||||
return v1.Taint{
|
||||
Key: fmt.Sprintf("kubernetes.io/e2e-scheduling-priorities-%s", string(uuid.NewUUID()[:23])),
|
||||
|
Loading…
Reference in New Issue
Block a user