{"action":"created","issue":{"url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/7233","labels_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/7233/labels{/name}","comments_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/7233/comments","events_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/7233/events","html_url":"https://github.com/GoogleCloudPlatform/kubernetes/pull/7233","id":70473461,"number":7233,"title":"Node upgrade daemon.","user":{"login":"mbforbes","id":1170062,"avatar_url":"https://avatars.githubusercontent.com/u/1170062?v=3","gravatar_id":"","url":"https://api.github.com/users/mbforbes","html_url":"https://github.com/mbforbes","followers_url":"https://api.github.com/users/mbforbes/followers","following_url":"https://api.github.com/users/mbforbes/following{/other_user}","gists_url":"https://api.github.com/users/mbforbes/gists{/gist_id}","starred_url":"https://api.github.com/users/mbforbes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mbforbes/subscriptions","organizations_url":"https://api.github.com/users/mbforbes/orgs","repos_url":"https://api.github.com/users/mbforbes/repos","events_url":"https://api.github.com/users/mbforbes/events{/privacy}","received_events_url":"https://api.github.com/users/mbforbes/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/labels/area/upgrade","name":"area/upgrade","color":"bfd4f2"},{"url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/labels/cla:%20yes","name":"cla: yes","color":"ECF7EC"},{"url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/labels/team/cluster-lifecycle","name":"team/cluster-lifecycle","color":"d2b48c"},{"url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/labels/team/node","name":"team/node","color":"d2b48c"}],"state":"open","locked":false,"assignee":{"login":"zmerlynn","id":4942464,"avatar_url":"https://avatars.githubusercontent.com/u/4942464?v=3","gravatar_id":"","url":"https://api.github.com/users/zmerlynn","html_url":"https://github.com/zmerlynn","followers_url":"https://api.github.com/users/zmerlynn/followers","following_url":"https://api.github.com/users/zmerlynn/following{/other_user}","gists_url":"https://api.github.com/users/zmerlynn/gists{/gist_id}","starred_url":"https://api.github.com/users/zmerlynn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zmerlynn/subscriptions","organizations_url":"https://api.github.com/users/zmerlynn/orgs","repos_url":"https://api.github.com/users/zmerlynn/repos","events_url":"https://api.github.com/users/zmerlynn/events{/privacy}","received_events_url":"https://api.github.com/users/zmerlynn/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/milestones/6","html_url":"https://github.com/GoogleCloudPlatform/kubernetes/milestones/v1.0","labels_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/milestones/6/labels","id":969317,"number":6,"title":"v1.0","description":"Issues that need to be resolved for v1.0 of Kubernetes.","creator":{"login":"goltermann","id":9358478,"avatar_url":"https://avatars.githubusercontent.com/u/9358478?v=3","gravatar_id":"","url":"https://api.github.com/users/goltermann","html_url":"https://github.com/goltermann","followers_url":"https://api.github.com/users/goltermann/followers","following_url":"https://api.github.com/users/goltermann/following{/other_user}","gists_url":"https://api.github.com/users/goltermann/gists{/gist_id}","starred_url":"https://api.github.com/users/goltermann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/goltermann/subscriptions","organizations_url":"https://api.github.com/users/goltermann/orgs","repos_url":"https://api.github.com/users/goltermann/repos","events_url":"https://api.github.com/users/goltermann/events{/privacy}","received_events_url":"https://api.github.com/users/goltermann/received_events","type":"User","site_admin":false},"open_issues":119,"closed_issues":215,"state":"open","created_at":"2015-02-06T20:27:16Z","updated_at":"2015-04-24T21:28:17Z","due_on":null,"closed_at":null},"comments":10,"created_at":"2015-04-23T18:01:10Z","updated_at":"2015-04-24T23:23:13Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/pulls/7233","html_url":"https://github.com/GoogleCloudPlatform/kubernetes/pull/7233","diff_url":"https://github.com/GoogleCloudPlatform/kubernetes/pull/7233.diff","patch_url":"https://github.com/GoogleCloudPlatform/kubernetes/pull/7233.patch"},"body":"Give a node upgrade must make changes to the node's system, including the kubernetes binaries, it must happen outside of the kubelet itself. Thus, there seem to be two options for doing this:\r\n\r\n0. SSH into the node and run commands that way (affectionately known as _\"blasting bash\"_). This is what we have currently. \r\n\r\n0. Have a daemon running on the node that looks for a trigger to upgrade from some authority. This is what this PR implements, but only for GCE and using the metadata server.\r\n\r\nIn the long term, this should:\r\n- be version-aware (don't try to upgrade across unsupported config changes, like Docker or OS)\r\n- be a Go program\r\n- have a versioned API (both incoming [e.g. upgrade policy] and outgoing [upgrade status])\r\n- be able to upgrade itself\r\n- be provider agnostic\r\n\r\nPlease be careful merging this; I suspect this will be controversial as it's a nontrivial change to node behavior, so my hope was to send this PR out so we could begin throwing chairs around the room.\r\n\r\nThis implements #6099, a basic node upgrade mechanism without any nice-to-haves."},"comment":{"url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/comments/96096297","html_url":"https://github.com/GoogleCloudPlatform/kubernetes/pull/7233#issuecomment-96096297","issue_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/7233","id":96096297,"user":{"login":"davidopp","id":8264113,"avatar_url":"https://avatars.githubusercontent.com/u/8264113?v=3","gravatar_id":"","url":"https://api.github.com/users/davidopp","html_url":"https://github.com/davidopp","followers_url":"https://api.github.com/users/davidopp/followers","following_url":"https://api.github.com/users/davidopp/following{/other_user}","gists_url":"https://api.github.com/users/davidopp/gists{/gist_id}","starred_url":"https://api.github.com/users/davidopp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/davidopp/subscriptions","organizations_url":"https://api.github.com/users/davidopp/orgs","repos_url":"https://api.github.com/users/davidopp/repos","events_url":"https://api.github.com/users/davidopp/events{/privacy}","received_events_url":"https://api.github.com/users/davidopp/received_events","type":"User","site_admin":false},"created_at":"2015-04-24T23:23:13Z","updated_at":"2015-04-24T23:23:13Z","body":"/subscribe"}}