Use Ubuntu 22.04 (Jammy) as the default distro for K8s 1.27+

This commit is contained in:
Ciprian Hacman 2023-06-07 08:14:58 +03:00
parent 36334f41ba
commit 5901a8ae30
7 changed files with 117 additions and 35 deletions

View File

@ -61,11 +61,19 @@ spec:
- name: 099720109477/ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server-20230502
providerID: aws
architectureID: amd64
kubernetesVersion: ">=1.18.0"
kubernetesVersion: ">=1.18.0 <1.27.0"
- name: 099720109477/ubuntu/images/hvm-ssd/ubuntu-focal-20.04-arm64-server-20230502
providerID: aws
architectureID: arm64
kubernetesVersion: ">=1.20.0"
kubernetesVersion: ">=1.20.0 <1.27.0"
- name: 099720109477/ubuntu/images/hvm-ssd/ubuntu-jammy-22.04-amd64-server-20230601
providerID: aws
architectureID: amd64
kubernetesVersion: ">=1.27.0"
- name: 099720109477/ubuntu/images/hvm-ssd/ubuntu-jammy-22.04-arm64-server-20230601
providerID: aws
architectureID: arm64
kubernetesVersion: ">=1.27.0"
- name: cos-cloud/cos-stable-65-10323-99-0
providerID: gce
architectureID: amd64
@ -77,11 +85,19 @@ spec:
- name: ubuntu-os-cloud/ubuntu-2004-focal-v20230302
providerID: gce
architectureID: amd64
kubernetesVersion: ">=1.18.0"
kubernetesVersion: ">=1.18.0 <1.27.0"
- name: ubuntu-os-cloud/ubuntu-2204-jammy-v20230606
providerID: gce
architectureID: amd64
kubernetesVersion: ">=1.27.0"
- name: Canonical:0001-com-ubuntu-server-focal:20_04-lts-gen2:20.04.202303020
providerID: azure
architectureID: amd64
kubernetesVersion: ">=1.20.0"
kubernetesVersion: ">=1.20.0 <1.27.0"
- name: Canonical:0001-com-ubuntu-server-jammy:22_04-lts-gen2:22.04.202306010
providerID: azure
architectureID: amd64
kubernetesVersion: ">=1.27.0"
cluster:
kubernetesVersion: v1.5.8
networking:

View File

@ -61,11 +61,19 @@ spec:
- name: 099720109477/ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server-20230502
providerID: aws
architectureID: amd64
kubernetesVersion: ">=1.18.0"
kubernetesVersion: ">=1.18.0 <1.27.0"
- name: 099720109477/ubuntu/images/hvm-ssd/ubuntu-focal-20.04-arm64-server-20230502
providerID: aws
architectureID: arm64
kubernetesVersion: ">=1.20.0"
kubernetesVersion: ">=1.20.0 <1.27.0"
- name: 099720109477/ubuntu/images/hvm-ssd/ubuntu-jammy-22.04-amd64-server-20230601
providerID: aws
architectureID: amd64
kubernetesVersion: ">=1.27.0"
- name: 099720109477/ubuntu/images/hvm-ssd/ubuntu-jammy-22.04-arm64-server-20230601
providerID: aws
architectureID: arm64
kubernetesVersion: ">=1.27.0"
- name: cos-cloud/cos-stable-65-10323-99-0
providerID: gce
architectureID: amd64
@ -77,11 +85,19 @@ spec:
- name: ubuntu-os-cloud/ubuntu-2004-focal-v20230302
providerID: gce
architectureID: amd64
kubernetesVersion: ">=1.18.0"
kubernetesVersion: ">=1.18.0 <1.27.0"
- name: ubuntu-os-cloud/ubuntu-2204-jammy-v20230606
providerID: gce
architectureID: amd64
kubernetesVersion: ">=1.27.0"
- name: Canonical:0001-com-ubuntu-server-focal:20_04-lts-gen2:20.04.202303020
providerID: azure
architectureID: amd64
kubernetesVersion: ">=1.20.0"
kubernetesVersion: ">=1.20.0 <1.27.0"
- name: Canonical:0001-com-ubuntu-server-jammy:22_04-lts-gen2:22.04.202306010
providerID: azure
architectureID: amd64
kubernetesVersion: ">=1.27.0"
cluster:
kubernetesVersion: v1.5.8
networking:

View File

@ -6,6 +6,8 @@ This is a document to gather the release notes prior to the release.
# Significant changes
* **The default image has been updated to [Ubuntu 22.04 (Jammy)](https://kops.sigs.k8s.io/operations/images/#ubuntu-2204-jammy)**.
* The default retention duration for the etcd backups is now set to 90 days.
This behaviour can be overridden by setting `spec.etcdClusters[*].manager.backupRetentionDays` in the cluster spec.

View File

@ -358,10 +358,13 @@ func RecommendedKubernetesVersion(c *Channel, kopsVersionString string) *semver.
// Returns true if the given image name has the stable or alpha channel images prefix. Otherwise false.
func (c *Channel) HasUpstreamImagePrefix(image string) bool {
return strings.HasPrefix(image, "kope.io/k8s-") ||
strings.HasPrefix(image, "099720109477/ubuntu/images/hvm-ssd/ubuntu-jammy-22.04-") ||
strings.HasPrefix(image, "099720109477/ubuntu/images/hvm-ssd/ubuntu-focal-20.04-") ||
strings.HasPrefix(image, "cos-cloud/cos-stable-") ||
strings.HasPrefix(image, "ubuntu-os-cloud/ubuntu-2004-focal-") ||
strings.HasPrefix(image, "Canonical:0001-com-ubuntu-server-focal:20_04-lts-gen2:")
strings.HasPrefix(image, "ubuntu-os-cloud/ubuntu-2204-jammy-") ||
strings.HasPrefix(image, "Canonical:0001-com-ubuntu-server-focal:20_04-lts-gen2:") ||
strings.HasPrefix(image, "Canonical:0001-com-ubuntu-server-jammy:22_04-lts-gen2:")
}
// GetPackageVersion returns the version for the package, or an error if could not be found.

View File

@ -1526,30 +1526,36 @@ func addCiliumNetwork(cluster *api.Cluster) {
// defaultImage returns the default Image, based on the cloudprovider
func defaultImage(cluster *api.Cluster, channel *api.Channel, architecture architectures.Architecture) (string, error) {
kubernetesVersion, err := util.ParseKubernetesVersion(cluster.Spec.KubernetesVersion)
if err != nil {
return "", fmt.Errorf("unable to parse kubernetes version %q", cluster.Spec.KubernetesVersion)
}
if channel != nil {
var kubernetesVersion *semver.Version
if cluster.Spec.KubernetesVersion != "" {
var err error
kubernetesVersion, err = util.ParseKubernetesVersion(cluster.Spec.KubernetesVersion)
if err != nil {
return "", fmt.Errorf("unable to parse kubernetes version %q", cluster.Spec.KubernetesVersion)
}
}
if channel != nil && kubernetesVersion != nil {
image := channel.FindImage(cluster.Spec.GetCloudProvider(), *kubernetesVersion, architecture)
if image != nil {
return image.Name, nil
}
image := channel.FindImage(cluster.Spec.GetCloudProvider(), *kubernetesVersion, architecture)
if image != nil {
return image.Name, nil
}
}
switch cluster.Spec.GetCloudProvider() {
case api.CloudProviderDO:
return defaultDOImage, nil
case api.CloudProviderHetzner:
return defaultHetznerImage, nil
case api.CloudProviderScaleway:
return defaultScalewayImage, nil
if kubernetesVersion.LT(semver.MustParse("1.27.0")) {
switch cluster.Spec.GetCloudProvider() {
case api.CloudProviderDO:
return defaultDOImageFocal, nil
case api.CloudProviderHetzner:
return defaultHetznerImageFocal, nil
case api.CloudProviderScaleway:
return defaultScalewayImageFocal, nil
}
} else {
switch cluster.Spec.GetCloudProvider() {
case api.CloudProviderDO:
return defaultDOImageJammy, nil
case api.CloudProviderHetzner:
return defaultHetznerImageJammy, nil
case api.CloudProviderScaleway:
return defaultScalewayImageJammy, nil
}
}
return "", fmt.Errorf("unable to determine default image for cloud provider %q and architecture %q", cluster.Spec.GetCloudProvider(), architecture)

View File

@ -400,7 +400,19 @@ func TestDefaultImage(t *testing.T) {
},
},
architecture: architectures.ArchitectureAmd64,
expected: defaultDOImage,
expected: defaultDOImageFocal,
},
{
cluster: &api.Cluster{
Spec: api.ClusterSpec{
KubernetesVersion: "v1.27.0",
CloudProvider: api.CloudProviderSpec{
DO: &api.DOSpec{},
},
},
},
architecture: architectures.ArchitectureAmd64,
expected: defaultDOImageJammy,
},
{
cluster: &api.Cluster{
@ -412,7 +424,19 @@ func TestDefaultImage(t *testing.T) {
},
},
architecture: architectures.ArchitectureAmd64,
expected: defaultHetznerImage,
expected: defaultHetznerImageFocal,
},
{
cluster: &api.Cluster{
Spec: api.ClusterSpec{
KubernetesVersion: "v1.27.0",
CloudProvider: api.CloudProviderSpec{
Hetzner: &api.HetznerSpec{},
},
},
},
architecture: architectures.ArchitectureAmd64,
expected: defaultHetznerImageJammy,
},
{
cluster: &api.Cluster{
@ -424,7 +448,19 @@ func TestDefaultImage(t *testing.T) {
},
},
architecture: architectures.ArchitectureAmd64,
expected: defaultScalewayImage,
expected: defaultScalewayImageFocal,
},
{
cluster: &api.Cluster{
Spec: api.ClusterSpec{
KubernetesVersion: "v1.27.0",
CloudProvider: api.CloudProviderSpec{
Scaleway: &api.ScalewaySpec{},
},
},
},
architecture: architectures.ArchitectureAmd64,
expected: defaultScalewayImageJammy,
},
}

View File

@ -52,9 +52,12 @@ const (
defaultMasterMachineTypeHetzner = "cx21"
defaultMasterMachineTypeScaleway = "DEV1-M"
defaultDOImage = "ubuntu-20-04-x64"
defaultHetznerImage = "ubuntu-20.04"
defaultScalewayImage = "ubuntu_focal"
defaultDOImageFocal = "ubuntu-20-04-x64"
defaultHetznerImageFocal = "ubuntu-20.04"
defaultScalewayImageFocal = "ubuntu_focal"
defaultDOImageJammy = "ubuntu-22-04-x64"
defaultHetznerImageJammy = "ubuntu-22.04"
defaultScalewayImageJammy = "ubuntu_jammy"
)
// TODO: this hardcoded list can be replaced with DescribeInstanceTypes' DedicatedHostsSupported field