<p dir="auto">Forked from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="57521563" data-permission-text="Title is private" data-url="https://github.com/kubernetes/kubernetes/issues/4396" data-hovercard-type="pull_request" data-hovercard-url="/kubernetes/kubernetes/pull/4396/hovercard" href="https://github.com/kubernetes/kubernetes/pull/4396">#4396</a> and probably other issues.</p>
<p dir="auto">Nodes and other infrastructure resources (e.g., persistent volumes) should go into a namespace, such as kubernetes. Not putting them into a namespaces, creates special cases everywhere.</p>
<p dir="auto"><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/derekwaynecarr/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/derekwaynecarr">@derekwaynecarr</a> <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/smarterclayton/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/smarterclayton">@smarterclayton</a> <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/lavalamp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/lavalamp">@lavalamp</a> <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thockin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thockin">@thockin</a> <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/erictune/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/erictune">@erictune</a> <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/markturansky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/markturansky">@markturansky</a></p>
<p dir="auto">See issue <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="64830457" data-permission-text="Title is private" data-url="https://github.com/kubernetes/kubernetes/issues/6079" data-hovercard-type="issue" data-hovercard-url="/kubernetes/kubernetes/issues/6079/hovercard" href="https://github.com/kubernetes/kubernetes/issues/6079">#6079</a> as the roll-up for node upgrades.</p>
<p dir="auto">This issue is to do an in-place upgrade of the kubelet and kube-proxy binaries while a node is running. Docker and the kernel/OS are not changed. This upgrade can only be performed if the requested new version of kubelet and kube-proxy are compatible with the existing Docker and kernel/OS version; see <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="59120791" data-permission-text="Title is private" data-url="https://github.com/kubernetes/kubernetes/issues/4855" data-hovercard-type="issue" data-hovercard-url="/kubernetes/kubernetes/issues/4855/hovercard" href="https://github.com/kubernetes/kubernetes/issues/4855">#4855</a> for more details on versioning.</p>
<p dir="auto">We simply want to download the new (kube*) node binaries, stop the old ones, and start the new ones (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="44849533" data-permission-text="Title is private" data-url="https://github.com/kubernetes/kubernetes/issues/1573" data-hovercard-type="issue" data-hovercard-url="/kubernetes/kubernetes/issues/1573/hovercard" href="https://github.com/kubernetes/kubernetes/issues/1573">#1573</a>). That way, the pods continue to run, and we don't have to migrate any storage. Possible complications include:</p>
<ul dir="auto">
<li><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="53803962" data-permission-text="Title is private" data-url="https://github.com/kubernetes/kubernetes/issues/3333" data-hovercard-type="issue" data-hovercard-url="/kubernetes/kubernetes/issues/3333/hovercard" href="https://github.com/kubernetes/kubernetes/issues/3333">#3333</a> leftover state or configuration of the VM will cause unwanted side effects after the upgrade is complete</li>
<li>the configuration of the node (environment variables, flags passed to kube_, something salt does) might change between kube_ versions</li>
<li>when kube* binaries are stopped, the master might think the pods are all gone, and schedule new copies of the pods elsewhere throughout the cluster</li>
</ul>
<p dir="auto">The following requirements follow:</p>
<ul dir="auto">
<li>smart salt stanzas: idempotency, can run on a previously salted node</li>
<li>must have an upgrade grace period where the pods are considered alive even if they cannot be health-checked by kubernetes</li>
</ul>
<p dir="auto">The tests for this feature are tracked in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="70520944" data-permission-text="Title is private" data-url="https://github.com/kubernetes/kubernetes/issues/7256" data-hovercard-type="issue" data-hovercard-url="/kubernetes/kubernetes/issues/7256/hovercard" href="https://github.com/kubernetes/kubernetes/issues/7256">#7256</a>.</p>
<p dir="auto">References:</p>
<ul dir="auto">
<li><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="59120791" data-permission-text="Title is private" data-url="https://github.com/kubernetes/kubernetes/issues/4855" data-hovercard-type="issue" data-hovercard-url="/kubernetes/kubernetes/issues/4855/hovercard" href="https://github.com/kubernetes/kubernetes/issues/4855">#4855</a> cluster versioning</li>
<li><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="53803962" data-permission-text="Title is private" data-url="https://github.com/kubernetes/kubernetes/issues/3333" data-hovercard-type="issue" data-hovercard-url="/kubernetes/kubernetes/issues/3333/hovercard" href="https://github.com/kubernetes/kubernetes/issues/3333">#3333</a> lively debate about kubelet &amp; kube-proxy upgrades, specifically in-place <em>vs</em> fresh-node</li>
<li><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="44849533" data-permission-text="Title is private" data-url="https://github.com/kubernetes/kubernetes/issues/1573" data-hovercard-type="issue" data-hovercard-url="/kubernetes/kubernetes/issues/1573/hovercard" href="https://github.com/kubernetes/kubernetes/issues/1573">#1573</a> online kubelet upgrades; the original issue for this work item</li>
</ul>