Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove support for Kubernetes 1.8 and earlier #8208

Merged
merged 4 commits into from
Jan 12, 2020
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion permalinks/upgrade_k8s.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
# Kubernetes Upgrade Recommended

Kops has established a deprecation policy for Kubernetes version support.
Kops 1.18 will drop support for Kubernetes 1.8 and below.
Kops will drop support for Kubernetes versions as follows:

| kops version | Drops support for Kubernetes version |
|--------------|--------------------------------------|
| 1.18 | 1.8 and below |
| 1.19 | 1.9 |


You are running a version of kubernetes that we recommend upgrading.
Expand Down
15 changes: 13 additions & 2 deletions upup/pkg/fi/cloudup/apply_cluster.go
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,8 @@ var (
CloudupModels = []string{"proto", "cloudup"}
// OldestSupportedKubernetesVersion is the oldest kubernetes version that is supported in Kops
OldestSupportedKubernetesVersion = "1.9.0"
// OldestRecommendedKubernetesVersion is the oldest kubernetes version that is not deprecated in Kops
OldestRecommendedKubernetesVersion = "1.10.0"
Comment on lines +96 to +97
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe it's just me, but I would not recommend any k8s version where the default etcd is not 3.x. Anyone having to got through the upgrade from 2.x to 3.x will be pretty annoyed.

if b.IsKubernetesGTE("1.11") {
etcdCluster.Version = "3.2.18"

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The current policy as I understand it is to remove support from 1.8 and earlier in kops 1.18, then do rolling removals in subsequent versions. That means removing support from 1.9 in kops 1.19. There was generalized talk about narrowing the gap in future releases, but no specific decisions there have been made.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't have anything against supporting these versions, but the name says "recommended" version. I think "non-deprecated" is not quite the same as "recommended".

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am not able to find a better word for "non-deprecated". The code uses "recommended" for "non-deprecated" later in the file, where it's dealing with channels.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we can use "legacy" here.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The word "recommended" is not made visible to the user. The constant only demarcates what is not described as "deprecated".

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, if & when we come up with better words we can rename this constant without affecting anything user-visible!

)

type ApplyClusterCmd struct {
Expand Down Expand Up @@ -1047,13 +1049,22 @@ func (c *ApplyClusterCmd) validateKubernetesVersion() error {
}

if !util.IsKubernetesGTE(OldestSupportedKubernetesVersion, *parsed) {
fmt.Printf("This version of Kubernetes is no longer supported; upgrading Kubernetes is required\n")
fmt.Printf("\n")
fmt.Printf("More information: %s\n", buildPermalink("upgrade_k8s", OldestRecommendedKubernetesVersion))
rifelpet marked this conversation as resolved.
Show resolved Hide resolved
fmt.Printf("\n")
fmt.Printf(starline)
fmt.Printf("\n")
return fmt.Errorf("kubernetes upgrade is required")
}
if !util.IsKubernetesGTE(OldestRecommendedKubernetesVersion, *parsed) {
fmt.Printf("\n")
fmt.Printf(starline)
fmt.Printf("\n")
fmt.Printf("Kops support for this Kubernetes version is deprecated and will be removed in a future release.\n")
fmt.Printf("\n")
fmt.Printf("Upgrading is recommended\n")
fmt.Printf("More information: %s\n", buildPermalink("upgrade_k8s", ""))
fmt.Printf("Upgrading Kubernetes is recommended\n")
fmt.Printf("More information: %s\n", buildPermalink("upgrade_k8s", OldestRecommendedKubernetesVersion))
fmt.Printf("\n")
fmt.Printf(starline)
fmt.Printf("\n")
Expand Down