Add support for Kubernetes 1.24.4
This adds support for Kubernetes 1.24.4 version. This creates symlinks
to previously defined Docker image versions. This yields the same
versions used for 1.23.1.
This makes the following configuration changes to support 1.24.4:
- removed KubeletConfig feature-gates: HugePageStorageMediumSize: true;
this option was defaulted to true since 1.19, and unconditionally
true since 1.22
- removed kube-apiserver feature-gates RemoveSelfLink=false;
this option was deprecated in 1.21 and is now removed
* NOTE: this breaks RBD-provisioner / PVC (Persistent-Volume-Claims)
using 'storageClassName: general' since it depends on selfLink;
this only breaks the existing PVC for version 1.24, the previous
versions will still have RemoveSelfLink=false and will still work.
- removed kubelet option --cni-bin-dir argument since it is only
applicable to dockershim (which we don't use)
- NOTE: we have reverted upstream changes in kubeadm for
'node-role.kubernetes.io/master' to
'node-role.kubernetes.io/control-plane.
When we adopt this upstream change, we need to make associated changes
for node Taint, and pod nodeSelector/Tolerations spanning all repos.
- removed kube-apiserver feature-gates TTLAfterFinished;
this option has defaulted to "true" since K8s 1.21
- made feature-gates config k8s-version dependent;
apiserver feature-gates has different setting in 1.24;
there is still work in RBD to remove selfLink, hence PVC is
broken in 1.24 until new rbd/ceph app is brought in
- increased wait for controller-0 online state to 150 sec from 50 sec,
since this step was approximately 55 seconds on QEMU system
- moved the definition of kubernetes_long_version to prepare-env
and removed duplicated definitions
Test Plan: Debian
PASS: Fresh install ISO with 1.24.4 up to common/push-docker-images
with successful download/push of k8s.gcr.io/kube-*:v1.24.4.
PASS: Fresh install ISO with 1.23 verify apiserver settings
PASS: Fresh install ISO with 1.23 with custom apiserver settings
PASS: Fresh install ISO with no kubernetes_version override
PASS: AIO-SX Backup and Restore no kubernetes_version override
PASS: AIO-SX Remote replay no kubernetes_version override
Story: 2010301
Task: 46313
Depends-On: https://review.opendev.org/c/starlingx/integ/+/857975
Depends-On: https://review.opendev.org/c/starlingx/integ/+/860206
Depends-On: https://review.opendev.org/c/starlingx/stx-puppet/+/861192
Signed-off-by: Jim Gauld <james.gauld@windriver.com>
Change-Id: Ic925a6178f94a4d6ebd8b285823dd3ad40c8a3c7
This commit is contained in:
@@ -135,7 +135,8 @@
|
||||
- name: Check controller-0 is in online state
|
||||
shell: source /etc/platform/openrc; system host-show controller-0 --column availability --format value
|
||||
register: check_online
|
||||
retries: 10
|
||||
retries: 15
|
||||
delay: 10
|
||||
until: check_online.stdout == "online"
|
||||
|
||||
- name: Set async parameters
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
k8s-v1.22.5
|
||||
@@ -6,7 +6,7 @@
|
||||
# to allow room for platform pods. The user apps are in fact
|
||||
# intended to run after the unlock anyway. During the unlock the correct
|
||||
# value is used, the one generated by sysinv as hieradata.
|
||||
KUBELET_EXTRA_ARGS=--cni-bin-dir={{ kubelet_cni_bin_dir }} \
|
||||
KUBELET_EXTRA_ARGS=\
|
||||
--node-ip={{ node_ip }} \
|
||||
--volume-plugin-dir={{ kubelet_vol_plugin_dir }} \
|
||||
--pod-max-pids 500
|
||||
|
||||
@@ -253,10 +253,47 @@
|
||||
etcd_root_ca_cert: "{{ etcd_root_ca_cert | default('') }}"
|
||||
etcd_root_ca_key: "{{ etcd_root_ca_key | default('') }}"
|
||||
|
||||
# Set the kubernetes_version if the user hasn't overridden it
|
||||
- name: Check if kubernetes_version is specified
|
||||
set_fact:
|
||||
found_kubernetes_version: "{{ kubernetes_version is defined }}"
|
||||
|
||||
- block:
|
||||
- name: Set kubernetes_version for fresh installs.
|
||||
set_fact:
|
||||
kubernetes_version: "{{ fresh_install_k8s_version }}"
|
||||
when: migrate_platform_data is undefined or not migrate_platform_data
|
||||
|
||||
- name: Set kubernetes_version for upgrades.
|
||||
set_fact:
|
||||
kubernetes_version: "{{ upgrade_k8s_version }}"
|
||||
when: migrate_platform_data is defined and migrate_platform_data
|
||||
|
||||
- name: Set kubernetes_version for restores.
|
||||
set_fact:
|
||||
kubernetes_version: "{{ restore_k8s_version }}"
|
||||
when: restore_k8s_version is defined
|
||||
|
||||
when: not found_kubernetes_version
|
||||
|
||||
- block:
|
||||
- name: Set kubernetes long version
|
||||
set_fact:
|
||||
kubernetes_long_version: "{{ kubernetes_version if kubernetes_version.startswith('v')
|
||||
else 'v' + kubernetes_version }}"
|
||||
|
||||
- name: Read in kubernetes versioned configuration parameters
|
||||
include_vars:
|
||||
dir: "vars/k8s-{{ kubernetes_long_version }}"
|
||||
extensions: ['yml']
|
||||
|
||||
when: kubernetes_version is defined
|
||||
|
||||
- name: Combine k8s user overrides and default config parameters
|
||||
set_fact:
|
||||
apiserver_extra_args: "{{ apiserver_extra_args_defaults \
|
||||
| combine(apiserver_extra_args|default({})) }}"
|
||||
| combine({ 'feature-gates': apiserver_feature_gates|default(omit) }, \
|
||||
apiserver_extra_args|default({})) }}"
|
||||
controllermanager_extra_args: "{{ controllermanager_extra_args_defaults \
|
||||
| combine(controllermanager_extra_args|default({})) }}"
|
||||
scheduler_extra_args: "{{ scheduler_extra_args_defaults \
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
---
|
||||
apiserver_feature_gates: RemoveSelfLink=false
|
||||
@@ -0,0 +1,2 @@
|
||||
---
|
||||
apiserver_feature_gates: RemoveSelfLink=false
|
||||
@@ -0,0 +1,2 @@
|
||||
---
|
||||
apiserver_feature_gates: RemoveSelfLink=false
|
||||
@@ -0,0 +1,2 @@
|
||||
---
|
||||
# no customizations for this k8s version
|
||||
@@ -27,7 +27,6 @@ apiserver_extra_args_defaults:
|
||||
encryption-provider-config: "{{ encryption_provider_config }}"
|
||||
default-not-ready-toleration-seconds: "30"
|
||||
default-unreachable-toleration-seconds: "30"
|
||||
feature-gates: "TTLAfterFinished=true,RemoveSelfLink=false"
|
||||
event-ttl: "24h"
|
||||
audit-log-path: "/var/log/kubernetes/audit/audit.log"
|
||||
audit-log-maxage: "3"
|
||||
@@ -38,7 +37,6 @@ controllermanager_extra_args_defaults:
|
||||
node-monitor-period: "2s"
|
||||
node-monitor-grace-period: "20s"
|
||||
pod-eviction-timeout: '30s'
|
||||
feature-gates: "TTLAfterFinished=true"
|
||||
flex-volume-plugin-dir: "{{ kubelet_vol_plugin_dir }}"
|
||||
|
||||
scheduler_extra_args_defaults: { }
|
||||
@@ -49,8 +47,6 @@ kubelet_extra_args_defaults:
|
||||
kubelet_configurations_defaults:
|
||||
nodeStatusUpdateFrequency: "4s"
|
||||
failSwapOn: false
|
||||
featureGates:
|
||||
HugePageStorageMediumSize: true
|
||||
cgroupDriver: "cgroupfs"
|
||||
cgroupRoot: "{{ kubelet_cgroup_root }}"
|
||||
imageGCHighThresholdPercent: 79
|
||||
|
||||
@@ -825,29 +825,6 @@
|
||||
apiserver_oidc.username_claim is defined and
|
||||
apiserver_oidc.groups_claim is defined))
|
||||
|
||||
# Set the kubernetes_version if the user hasn't overridden it
|
||||
- name: Check if kubernetes_version is specified
|
||||
set_fact:
|
||||
found_kubernetes_version: "{{ kubernetes_version is defined }}"
|
||||
|
||||
- block:
|
||||
- name: Set kubernetes_version for fresh installs.
|
||||
set_fact:
|
||||
kubernetes_version: "{{ fresh_install_k8s_version }}"
|
||||
when: migrate_platform_data is undefined or not migrate_platform_data
|
||||
|
||||
- name: Set kubernetes_version for upgrades.
|
||||
set_fact:
|
||||
kubernetes_version: "{{ upgrade_k8s_version }}"
|
||||
when: migrate_platform_data is defined and migrate_platform_data
|
||||
|
||||
- name: Set kubernetes_version for restores.
|
||||
set_fact:
|
||||
kubernetes_version: "{{ restore_k8s_version }}"
|
||||
when: restore_k8s_version is defined
|
||||
|
||||
when: not found_kubernetes_version
|
||||
|
||||
- name: Check overridden kubernetes_version matches the backup.
|
||||
fail:
|
||||
msg: >
|
||||
|
||||
@@ -8,10 +8,13 @@
|
||||
# This role loads variables containing images.
|
||||
#
|
||||
|
||||
- name: Set kubernetes long version
|
||||
set_fact:
|
||||
kubernetes_long_version: "{{ kubernetes_version if kubernetes_version.startswith('v')
|
||||
else 'v' + kubernetes_version }}"
|
||||
- name: Fail if kubernetes_version is not defined
|
||||
fail: msg="The mandatory parameter kubernetes_version is not defined."
|
||||
when: kubernetes_version is not defined
|
||||
|
||||
- name: Fail if kubernetes_long_version is not defined
|
||||
fail: msg="The mandatory parameter kubernetes_long_version is not defined."
|
||||
when: kubernetes_long_version is not defined
|
||||
|
||||
- block:
|
||||
- name: Get the list of kubernetes images
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
k8s-v1.22.5
|
||||
@@ -11,11 +11,6 @@
|
||||
|
||||
when: mode is defined
|
||||
|
||||
- name: Set kubernetes long version
|
||||
set_fact:
|
||||
kubernetes_long_version: "{{ kubernetes_version if kubernetes_version.startswith('v')
|
||||
else 'v' + kubernetes_version }}"
|
||||
|
||||
- name: Initialize variables
|
||||
set_fact:
|
||||
overrides_file: "/tmp/upgrade_overrides.yaml"
|
||||
@@ -25,6 +20,10 @@
|
||||
fail: msg="The mandatory parameter kubernetes_version is not defined."
|
||||
when: kubernetes_version is not defined
|
||||
|
||||
- name: Fail if kubernetes_long_version is not defined
|
||||
fail: msg="The mandatory parameter kubernetes_long_version is not defined."
|
||||
when: kubernetes_long_version is not defined
|
||||
|
||||
- name: Create the upgrade overrides file
|
||||
command: "/usr/bin/sysinv-utils create-host-overrides {{ overrides_file }}"
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
k8s-v1.21.8
|
||||
@@ -0,0 +1 @@
|
||||
k8s-v1.21.8
|
||||
Reference in New Issue
Block a user