{"action":"created","issue":{"url":"https://api.github.com/repos/kubernetes/enhancements/issues/1403","repository_url":"https://api.github.com/repos/kubernetes/enhancements","labels_url":"https://api.github.com/repos/kubernetes/enhancements/issues/1403/labels{/name}","comments_url":"https://api.github.com/repos/kubernetes/enhancements/issues/1403/comments","events_url":"https://api.github.com/repos/kubernetes/enhancements/issues/1403/events","html_url":"https://github.com/kubernetes/enhancements/issues/1403","id":535872656,"node_id":"MDU6SXNzdWU1MzU4NzI2NTY=","number":1403,"title":"Implement Node Maintenance Lease for disruptive operations","user":{"login":"michaelgugino","id":6255238,"node_id":"MDQ6VXNlcjYyNTUyMzg=","avatar_url":"https://avatars0.githubusercontent.com/u/6255238?v=4","gravatar_id":"","url":"https://api.github.com/users/michaelgugino","html_url":"https://github.com/michaelgugino","followers_url":"https://api.github.com/users/michaelgugino/followers","following_url":"https://api.github.com/users/michaelgugino/following{/other_user}","gists_url":"https://api.github.com/users/michaelgugino/gists{/gist_id}","starred_url":"https://api.github.com/users/michaelgugino/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/michaelgugino/subscriptions","organizations_url":"https://api.github.com/users/michaelgugino/orgs","repos_url":"https://api.github.com/users/michaelgugino/repos","events_url":"https://api.github.com/users/michaelgugino/events{/privacy}","received_events_url":"https://api.github.com/users/michaelgugino/received_events","type":"User","site_admin":false},"labels":[{"id":413888548,"node_id":"MDU6TGFiZWw0MTM4ODg1NDg=","url":"https://api.github.com/repos/kubernetes/enhancements/labels/sig/cluster-lifecycle","name":"sig/cluster-lifecycle","color":"d2b48c","default":false,"description":"Categorizes an issue or PR as relevant to sig-cluster-lifecycle."},{"id":413888892,"node_id":"MDU6TGFiZWw0MTM4ODg4OTI=","url":"https://api.github.com/repos/kubernetes/enhancements/labels/sig/node","name":"sig/node","color":"d2b48c","default":false,"description":"Categorizes an issue or PR as relevant to sig-node."},{"id":820252779,"node_id":"MDU6TGFiZWw4MjAyNTI3Nzk=","url":"https://api.github.com/repos/kubernetes/enhancements/labels/tracked/no","name":"tracked/no","color":"e04338","default":false,"description":null}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2019-12-10T17:18:58Z","updated_at":"2020-01-14T02:12:12Z","closed_at":null,"author_association":"NONE","body":"# Enhancement Description\r\n- One-line enhancement description (can be used as a release note): Implement Node Maintenance Lease to coordinate disruptive node maintenance operations\r\n- Kubernetes Enhancement Proposal: (link to kubernetes/enhancements file, if none yet, link to PR)\r\n- Primary contact (assignee):\r\n- Responsible SIGs:\r\n- Enhancement target (which target equals to which milestone):\r\n  - Alpha release target (x.y)\r\n  - Beta release target (x.y)\r\n  - Stable release target (x.y)\r\n\r\n_Please to keep this description up to date. This will help the Enhancement Team track efficiently the evolution of the enhancement_\r\n\r\n# User Story\r\n\r\nAs a cluster administrator, I would like to deploy multiple components that perform automated, disruptive actions against a particular node.  I would like these components to be well behaved to prevent multiple components from taking disruptive action against a node at once.\r\n\r\n## Example Usecase Scenario 1\r\n\r\nI have a configuration management system that requires the node to be online to perform configuration updates.\r\n\r\nI have an automated-snapshot system that stops an instance and takes a snapshot for backup / data retention purposes.\r\n\r\nI do not want snapshots to happen during an update.\r\n\r\n## Example Usecase Scenario 2\r\n\r\nI am investigating a problem with the node.  I don't want the node to be disrupted by automation while I'm performing my investigation or fixes.  Having a standard way to signal other components to disable operations rather than building an annotation per component, stopping the components, etc, is a nicer UX.\r\n\r\n# Proposal\r\n\r\nImplement a node-maintenance-lease similar to the lease object for the Node itself: https://kubernetes.io/docs/concepts/architecture/nodes/#heartbeats\r\n\r\nhttps://kubernetes.io/docs/reference/generated/kubernetes-api/v1.17/#lease-v1-coordination-k8s-io\r\n\r\nWe can utilize the same namespace, clients can implement a 'get or create' method.  Should be 1 lease per node; otherwise we could create these objects by default.  We should implement a method to ensure the objects are cleaned up if a node goes away, possibly an ownerRef.\r\n\r\nClients should respect the lease, and not take operation unless they are the owner of the lease.\r\n"},"comment":{"url":"https://api.github.com/repos/kubernetes/enhancements/issues/comments/573965545","html_url":"https://github.com/kubernetes/enhancements/issues/1403#issuecomment-573965545","issue_url":"https://api.github.com/repos/kubernetes/enhancements/issues/1403","id":573965545,"node_id":"MDEyOklzc3VlQ29tbWVudDU3Mzk2NTU0NQ==","user":{"login":"kikisdeliveryservice","id":6187843,"node_id":"MDQ6VXNlcjYxODc4NDM=","avatar_url":"https://avatars2.githubusercontent.com/u/6187843?v=4","gravatar_id":"","url":"https://api.github.com/users/kikisdeliveryservice","html_url":"https://github.com/kikisdeliveryservice","followers_url":"https://api.github.com/users/kikisdeliveryservice/followers","following_url":"https://api.github.com/users/kikisdeliveryservice/following{/other_user}","gists_url":"https://api.github.com/users/kikisdeliveryservice/gists{/gist_id}","starred_url":"https://api.github.com/users/kikisdeliveryservice/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kikisdeliveryservice/subscriptions","organizations_url":"https://api.github.com/users/kikisdeliveryservice/orgs","repos_url":"https://api.github.com/users/kikisdeliveryservice/repos","events_url":"https://api.github.com/users/kikisdeliveryservice/events{/privacy}","received_events_url":"https://api.github.com/users/kikisdeliveryservice/received_events","type":"User","site_admin":false},"created_at":"2020-01-14T02:12:12Z","updated_at":"2020-01-14T02:12:12Z","author_association":"MEMBER","body":"Hi @michaelgugino  -- 1.18 Enhancements shadow here. I wanted to check in and see if you think this Enhancement will be graduating to alpha|beta|stable in 1.18?\r\n\r\nThe current release schedule is:\r\nMonday, January 6th - Release Cycle Begins\r\nTuesday, January 28th EOD PST - Enhancements Freeze\r\nThursday, March 5th, EOD PST - Code Freeze\r\nMonday, March 16th - Docs must be completed and reviewed\r\nTuesday, March 24th - Kubernetes 1.18.0 Released\r\n\r\nTo be included in the release, this enhancement must have a merged KEP in the implementable status. The KEP must also have graduation criteria and a Test Plan defined.\r\nIf you would like to include this enhancement, once coding begins please list all relevant k/k PRs in this issue so they can be tracked properly. 👍\r\n\r\nWe'll be tracking enhancements here: http://bit.ly/k8s-1-18-enhancements\r\nThanks!"}}
{"actor":{"display_login":"kikisdeliveryservice"}}