Update the kubernetes bind mounts based on the desired versions

This reverts commit e92359c370, which
is a revert of 8218da9391.

Originally the puppet code changes were approved but we had missed a
dependency on having Kubernetes packaged up in a versioned subdirectory.
That code has now merged, so it's time to bring back this commit.

Story: 2008972
Task: 42880
Change-Id: I3f44473caf35de81e0e598f059c6fe2d5daad9b3
Signed-off-by: Chris Friesen <chris.friesen@windriver.com>
This commit is contained in:
Chris Friesen 2021-08-18 09:09:40 -06:00
parent 824b725242
commit 0b4d8e1183
1 changed files with 52 additions and 0 deletions

View File

@ -4,6 +4,8 @@ class platform::kubernetes::params (
$upgrade_to_version = undef,
# K8S version running on a host
$version = undef,
$kubeadm_version = undef,
$kubelet_version = undef,
$node_ip = undef,
$service_domain = undef,
$dns_service_ip = undef,
@ -68,6 +70,38 @@ class platform::kubernetes::configuration {
}
}
class platform::kubernetes::bindmounts {
include ::platform::kubernetes::params
$kubeadm_version = $::platform::kubernetes::params::kubeadm_version
$kubelet_version = $::platform::kubernetes::params::kubelet_version
# In the following two bind mounts, the "remounts" option *must* be
# set to 'false' otherwise it doesn't work reliably. In my testing
# (as of July 2021) it will update /etc/fstab but any existing
# mounts will be left untouched. This sort of makes sense, as
# the mount man page specifies that the "remount" option does not
# change device or mount point and we may want to change the device.
notice("setting stage1 bind mount, kubeadm_version is ${kubeadm_version}")
mount { '/usr/local/kubernetes/current/stage1':
ensure => mounted,
device => "/usr/local/kubernetes/${kubeadm_version}/stage1",
fstype => 'none',
options => 'rw,bind',
remounts => false,
}
notice("setting stage2 bind mount, kubelet_version is ${kubelet_version}")
mount { '/usr/local/kubernetes/current/stage2':
ensure => mounted,
device => "/usr/local/kubernetes/${kubelet_version}/stage2",
fstype => 'none',
options => 'rw,bind',
remounts => false,
}
}
class platform::kubernetes::cgroup::params (
$cgroup_root = '/sys/fs/cgroup',
$cgroup_name = 'k8s-infra',
@ -149,6 +183,9 @@ class platform::kubernetes::kubeadm {
include ::platform::kubernetes::params
include ::platform::params
# Update kubeadm/kubelet bindmounts if needed.
require platform::kubernetes::bindmounts
$node_ip = $::platform::kubernetes::params::node_ip
$host_labels = $::platform::kubernetes::params::host_labels
$k8s_platform_cpuset = $::platform::kubernetes::params::k8s_platform_cpuset
@ -634,6 +671,9 @@ class platform::kubernetes::pre_pull_control_plane_images
include ::platform::dockerdistribution::params
# Update kubeadm bindmount if needed
require platform::kubernetes::bindmounts
$local_registry_auth = "${::platform::dockerdistribution::params::registry_username}:${::platform::dockerdistribution::params::registry_password}" # lint:ignore:140chars
exec { 'pre pull images':
@ -647,6 +687,9 @@ class platform::kubernetes::upgrade_first_control_plane
include ::platform::params
# Update kubeadm bindmount if needed.
require platform::kubernetes::bindmounts
# The --allow-*-upgrades options allow us to upgrade to any k8s release if necessary
exec { 'upgrade first control plane':
command => "kubeadm --kubeconfig=/etc/kubernetes/admin.conf upgrade apply ${version} --allow-experimental-upgrades --allow-release-candidate-upgrades -y", # lint:ignore:140chars
@ -677,6 +720,9 @@ class platform::kubernetes::upgrade_first_control_plane
class platform::kubernetes::upgrade_control_plane
inherits ::platform::kubernetes::params {
# Update kubeadm bindmount if needed.
require platform::kubernetes::bindmounts
# control plane is only upgraded on a controller (which has admin.conf)
exec { 'upgrade control plane':
command => 'kubeadm --kubeconfig=/etc/kubernetes/admin.conf upgrade node',
@ -687,6 +733,9 @@ class platform::kubernetes::upgrade_control_plane
class platform::kubernetes::master::upgrade_kubelet
inherits ::platform::kubernetes::params {
# Update kubeadm/kubelet bindmounts if needed.
require platform::kubernetes::bindmounts
exec { 'restart kubelet':
command => '/usr/local/sbin/pmon-restart kubelet'
}
@ -697,6 +746,9 @@ class platform::kubernetes::worker::upgrade_kubelet
include ::platform::dockerdistribution::params
# Update kubeadm/kubelet bindmounts if needed.
require platform::kubernetes::bindmounts
# workers use kubelet.conf rather than admin.conf
$local_registry_auth = "${::platform::dockerdistribution::params::registry_username}:${::platform::dockerdistribution::params::registry_password}" # lint:ignore:140chars