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

Promoting cloud provider labels to GA #839

Merged
merged 1 commit into from
Jul 22, 2019

Conversation

andrewsykim
Copy link
Member

@andrewsykim andrewsykim commented Feb 15, 2019

Enhancement issue: #837

This is a KEP proposing we promote the following beta labels to GA:

  • beta.kubernetes.io/instance-type -> node.kubernetes.io/instance-type
  • failure-domain.beta.kubernetes.io/zone -> topology.kubernetes.io/zone
  • failure-domain.beta.kubernetes.io/region -> topology.kubernetes.io/region

From what I can tell, this has implications for nodes and volumes.

/assign @dims @liggitt @msau42 @saad-ali @thockin

@k8s-ci-robot k8s-ci-robot added cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. kind/kep Categorizes KEP tracking issues and PRs modifying the KEP directory sig/architecture Categorizes an issue or PR as relevant to SIG Architecture. sig/cloud-provider Categorizes an issue or PR as relevant to SIG Cloud Provider. labels Feb 15, 2019
@k8s-ci-robot k8s-ci-robot added approved Indicates a PR has been approved by an approver from all required OWNERS files. sig/pm size/L Denotes a PR that changes 100-499 lines, ignoring generated files. labels Feb 15, 2019
@andrewsykim
Copy link
Member Author

/hold

@k8s-ci-robot k8s-ci-robot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Feb 15, 2019

## Design Details

### Test Plan
Copy link
Member Author

Choose a reason for hiding this comment

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

Will fill this out in more detail once we agree to move forward


TBD

### Graduation Criteria
Copy link
Member Author

Choose a reason for hiding this comment

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

Will fill this out in more detail once we agree to move forward


**Note:** Generally we also wait at least 2 releases between beta and GA/stable, since there's no opportunity for user feedback, or even bug reports, in back-to-back releases.

### Upgrade / Downgrade Strategy
Copy link
Member Author

Choose a reason for hiding this comment

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

There were a lot more edge cases here than I had originally thought. Happy to list them out in more detail once we agree to move forward with this.

4) [v1.15] continue to promote usage of GA labels over beta labels.
5) [v1.16] continue to promote usage of GA labels over beta labels.
6) [v1.17] continue to promote usage of GA labels over beta labels.
7) [v1.18] stop applying beta labels to new resources, existing resources will continue to have those labels unless manually removed.
Copy link
Member

Choose a reason for hiding this comment

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

Is there a timeframe for when the controllers can stop handling beta labels? If so, do we expect that users will need to manually update existing objects update/add the GA label, or will this be automated? I'm running into a similar issue trying to deprecate and remove the VolumeZone scheduling predicate

Copy link
Member Author

@andrewsykim andrewsykim Feb 19, 2019

Choose a reason for hiding this comment

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

For this KEP I was thinking by v1.18 it would be okay to remove logic for it in the controllers because we can assume that at least the GA label is there. I think it would be safer to not have any automation in place for removing beta labels though as users can be using those labels in their custom tooling/controllers.

Copy link
Member

Choose a reason for hiding this comment

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

Sorry, I didn't mean automation for removing beta labels. I meant automation for adding GA labels to existing objects with the beta label.

@thockin do these labels apply to the api deprecation policy? It mentions annotations but not labels.

Copy link
Member Author

Choose a reason for hiding this comment

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

Ahh I see sorry, yes I think we need to update kubelet/controllers to automatically add the GA labels to existing objects.

@thockin
Copy link
Member

thockin commented Feb 19, 2019

Do we have any appetite for dropping "failure-domain" ? I sort of hate that we have codified support for region/zone and not arbitrary other topologies, but I don't see that changing at the same time.

@andrewsykim
Copy link
Member Author

/assign @mtaufen

@msau42
Copy link
Member

msau42 commented Feb 19, 2019

I sort of hate that we have codified support for region/zone and not arbitrary other topologies, but I don't see that changing at the same time.

I had a similar thought. @andrewsykim is there anything besides the volume zone scheduling predicate that uses these zone/region labels? I want to deprecate and replace that predicate with PV.NodeAffinity, but I need to figure out how to backfill the PV.NodeAffinity from the existing zone labels. That way we can move away from codifying first-class support for zones/regions.

@andrewsykim
Copy link
Member Author

@andrewsykim is there anything besides the volume zone scheduling predicate that uses these zone/region labels?

The failure domain region/zone labels are also applied to nodes (with cloud provider enabled)

@msau42
Copy link
Member

msau42 commented Feb 19, 2019

The failure domain region/zone labels are also applied to nodes (with cloud provider enabled)

Are there any core Kubernetes components (besides scheduler volume zone predicate) that use those labels?

@andrewsykim
Copy link
Member Author

Are there any core Kubernetes components (besides scheduler volume zone predicate) that use those labels?

IIRC I don't think any other core component consumes though labels aside from scheduler. Though worth noting those labels are widely used by resources created by users (node selectors, node affinity rules, etc)

@andrewsykim
Copy link
Member Author

Do we have any appetite for dropping "failure-domain" ? I sort of hate that we have codified support for region/zone and not arbitrary other topologies, but I don't see that changing at the same time.

No objections from me to drop failure-domain from the label names.

@thockin
Copy link
Member

thockin commented Feb 19, 2019 via email

@msau42
Copy link
Member

msau42 commented Feb 19, 2019

I should also note that the auto-population (via pvl admission or dynamic provisioning) of zone/region labels only happens for in-tree volumes.

CSI drivers need to implement topology, which will add cloud-specific labels to the Node object (which should map 1-1 with the general zone labels). PVs created through dynamic provisioning will have the cloud-specific labels added in PV.NodeAffinity, but not as PV labels. If users manually create PVs for CSI volumes, there are no admission controllers that will automatically add the zone/region labels. Maybe the cloud-specific controllers could do this if we wanted to keep the zone labeling.

@andrewsykim
Copy link
Member Author

andrewsykim commented Apr 29, 2019

BTW, I have no objections to pushing this back to v1.16. It seems like we need to solidify the story for topology labels for PVs. IMO removing support for them is not an option, but that discussion needs to be had. cc @msau42 @saad-ali

@justaugustus
Copy link
Member

/remove-sig architecture pm

@k8s-ci-robot k8s-ci-robot removed sig/architecture Categorizes an issue or PR as relevant to SIG Architecture. sig/pm labels May 26, 2019
@alculquicondor
Copy link
Member

alculquicondor commented Jul 3, 2019

Hi @andrewsykim, what's the status of this PR? I'm starting to take over kubernetes/kubernetes#75274

@andrewsykim
Copy link
Member Author

I think the only outstanding concern was next steps for volume topology. @saad-ali and @msau42 mentioned moving away from using labels but I'm not sure removing those labels is feasible. One path forward I see is to continue to label PVs but don't consume that for volume scheduling in the scheduler. Can you comment @saad-ali @msau42?

Either way, I think we mostly have consensus on this KEP for node labels, I'd like to merge this early in the cycle if possible. Time boxing this until July 17th with lazy consensus. Will merge then if there are no objections and follow-up on for volumes if needed.

@dims
Copy link
Member

dims commented Jul 8, 2019

/unassign

Copy link
Member

@msau42 msau42 left a comment

Choose a reason for hiding this comment

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

lgtm from a storage side. In the detailed design, we will need to figure out how to update existing PVs using beta labels in PV.NodeAffinity to use the GA labels to support nodes that don't have the beta label on them.


Today, the cloud provider specific labels are:
* `beta.kubernetes.io/instance-type`
* `failure-domain.beta.kubernetes.io/zone`
Copy link
Member

Choose a reason for hiding this comment

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

Considering there seems to already be "failure-domain.kubernetes.io/" labels defined, how do we reconcile them with the "topology.kubernetes.io" labels being proposed here?


## Summary

When node and volume resources are created in Kubernetes, labels may be applied based on the underlying cloud provider of the Kubernetes cluster.
Copy link
Member

Choose a reason for hiding this comment

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

nit. on the may, should, must scale (https://www.ietf.org/rfc/rfc2119.txt) it seems like this is a should.


Here is a break down of the implementation steps:

1) [v1.14] update components to apply both the GA and beta labels to nodes & volumes.
Copy link
Member

Choose a reason for hiding this comment

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

I think these minor release numbers need to be updated?

Copy link
Member

@cheftako cheftako left a comment

Choose a reason for hiding this comment

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

Couple of nits.

@cheftako
Copy link
Member

/lgtm

@k8s-ci-robot k8s-ci-robot added the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Jul 19, 2019
@hogepodge
Copy link

/lgtm

@k8s-ci-robot k8s-ci-robot removed the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Jul 22, 2019
@andrewsykim
Copy link
Member Author

Minor comments addressed, PTAL again

/hold cancel

@k8s-ci-robot k8s-ci-robot removed the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Jul 22, 2019
Copy link
Member

@cheftako cheftako left a comment

Choose a reason for hiding this comment

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

/lgtm

@k8s-ci-robot k8s-ci-robot added the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Jul 22, 2019
@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: andrewsykim, cheftako, hogepodge, jagosan

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@k8s-ci-robot k8s-ci-robot merged commit 735aef1 into kubernetes:master Jul 22, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved Indicates a PR has been approved by an approver from all required OWNERS files. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. kind/kep Categorizes KEP tracking issues and PRs modifying the KEP directory lgtm "Looks good to me", indicates that a PR is ready to be merged. sig/cloud-provider Categorizes an issue or PR as relevant to SIG Cloud Provider. size/L Denotes a PR that changes 100-499 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.