# 리눅스 노드 업그레이드

LLMS index: [llms.txt](/llms.txt)

---

<!-- overview -->

이 페이지는 kubeadm으로 생성된 리눅스 노드를 업그레이드하는 방법을 설명한다.

## 시작하기 전에

<p>쿠버네티스 클러스터가 필요하고, kubectl 커맨드-라인 툴이 클러스터와
통신할 수 있도록 설정되어 있어야 한다. 이 튜토리얼은 컨트롤 플레인 호스트가 아닌 노드가 적어도 2개 포함된 클러스터에서 실행하는 것을 추천한다. 만약, 아직 클러스터를 가지고
있지 않다면,
<a href="/ko/docs/tasks/tools/#minikube">minikube</a>를 사용해서 생성하거나
다음 쿠버네티스 플레이그라운드 중 하나를 사용할 수 있다.</p>
<ul>
<li><a href="https://labs.iximiuz.com/playgrounds?category=kubernetes&filter=all">iximiuz Labs</a></li>
<li><a href="https://killercoda.com/playgrounds/scenario/kubernetes">Killercoda</a></li>
<li><a href="https://kodekloud.com/public-playgrounds">KodeKloud</a></li>
</ul>
 
  <p>버전 확인을 위해서, 다음 커맨드를 실행  <code>kubectl version</code>.</p>

* [남은 kubeadm 클러스터를 업그레이드하는 프로세스](/ko/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade)에
익숙해져야 한다.
리눅스 노드를 업그레이드하기 전에 컨트롤 플레인 노드를 업그레이드해야 한다.

<!-- steps -->

## 워커 노드 업그레이드

### kubeadm 업그레이드

 kubeadm을 업그레이드한다.

  <ul class="nav nav-tabs" id="tabs-k8s-install-kubeadm-worker-nodes" role="tablist"><li class="nav-item"><a data-bs-toggle="tab" class="nav-link active" href="#tabs-k8s-install-kubeadm-worker-nodes-0" role="tab" aria-controls="tabs-k8s-install-kubeadm-worker-nodes-0" aria-selected="true">Ubuntu, Debian or HypriotOS</a></li>
	  
		<li class="nav-item"><a data-bs-toggle="tab" class="nav-link" href="#tabs-k8s-install-kubeadm-worker-nodes-1" role="tab" aria-controls="tabs-k8s-install-kubeadm-worker-nodes-1">CentOS, RHEL or Fedora</a></li></ul>

<div class="tab-content" id="tabs-k8s-install-kubeadm-worker-nodes-content"><div class="tab-body tab-pane fadeshow active"
        id="tabs-k8s-install-kubeadm-worker-nodes-0" role="tabpanel" aria-labelledby="tabs-k8s-install-kubeadm-worker-nodes-0-tab" tabindex="k8s-install-kubeadm-worker-nodes"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl"><span class="c1"># 1.36.x-00 에서 x 에 최신 버전을 넣는다.</span>
</span></span><span class="line"><span class="cl">apt-mark unhold kubeadm <span class="o">&amp;&amp;</span> <span class="se">\
</span></span></span><span class="line"><span class="cl">apt-get update <span class="o">&amp;&amp;</span> apt-get install -y <span class="nv">kubeadm</span><span class="o">=</span>1.36.x-00 <span class="o">&amp;&amp;</span> <span class="se">\
</span></span></span><span class="line"><span class="cl">apt-mark hold kubeadm
</span></span></code></pre></div></div><div class="tab-body tab-pane fade"
        id="tabs-k8s-install-kubeadm-worker-nodes-1" role="tabpanel" aria-labelledby="tabs-k8s-install-kubeadm-worker-nodes-1-tab" tabindex="k8s-install-kubeadm-worker-nodes"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl"><span class="c1"># 1.36.x-00 에서 x 에 최신 버전을 넣는다.</span>
</span></span><span class="line"><span class="cl">yum install -y kubeadm-1.36.x-0 --disableexcludes<span class="o">=</span>kubernetes
</span></span></code></pre></div></div></div>


### "kubeadm upgrade" 호출

- 워커 노드의 경우 로컬 kubelet 구성을 업그레이드한다.

  ```shell
  sudo kubeadm upgrade node
  ```

### 노드 드레인

- 노드를 스케줄 불가능한 것으로 표시하고 워크로드를 축출하여 유지 보수할 노드를 준비한다.

  ```shell
  # <node-to-drain> 에 드레인하려는 노드의 이름을 넣는다.
  kubectl drain <node-to-drain> --ignore-daemonsets
  ```

### kubelet과 kubectl 업그레이드

- kubelet과 kubectl 업그레이드.

  <ul class="nav nav-tabs" id="tabs-k8s-kubelet-and-kubectl" role="tablist"><li class="nav-item"><a data-bs-toggle="tab" class="nav-link active" href="#tabs-k8s-kubelet-and-kubectl-0" role="tab" aria-controls="tabs-k8s-kubelet-and-kubectl-0" aria-selected="true">Ubuntu, Debian or HypriotOS</a></li>
	  
		<li class="nav-item"><a data-bs-toggle="tab" class="nav-link" href="#tabs-k8s-kubelet-and-kubectl-1" role="tab" aria-controls="tabs-k8s-kubelet-and-kubectl-1">CentOS, RHEL or Fedora</a></li></ul>

<div class="tab-content" id="tabs-k8s-kubelet-and-kubectl-content"><div class="tab-body tab-pane fadeshow active"
        id="tabs-k8s-kubelet-and-kubectl-0" role="tabpanel" aria-labelledby="tabs-k8s-kubelet-and-kubectl-0-tab" tabindex="k8s-kubelet-and-kubectl"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl"><span class="c1"># 1.36.x-00 에서 x 에 최신 버전을 넣는다.</span>
</span></span><span class="line"><span class="cl">apt-mark unhold kubelet kubectl <span class="o">&amp;&amp;</span> <span class="se">\
</span></span></span><span class="line"><span class="cl">apt-get update <span class="o">&amp;&amp;</span> apt-get install -y <span class="nv">kubelet</span><span class="o">=</span>1.36.x-00 <span class="nv">kubectl</span><span class="o">=</span>1.36.x-00 <span class="o">&amp;&amp;</span> <span class="se">\
</span></span></span><span class="line"><span class="cl">apt-mark hold kubelet kubectl
</span></span></code></pre></div></div><div class="tab-body tab-pane fade"
        id="tabs-k8s-kubelet-and-kubectl-1" role="tabpanel" aria-labelledby="tabs-k8s-kubelet-and-kubectl-1-tab" tabindex="k8s-kubelet-and-kubectl"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl"><span class="c1"># 1.36.x-00 에서 x 에 최신 버전을 넣는다.</span>
</span></span><span class="line"><span class="cl">yum install -y kubelet-1.36.x-0 kubectl-1.36.x-0 --disableexcludes<span class="o">=</span>kubernetes
</span></span></code></pre></div></div></div>

  <br />

- kubelet을 재시작한다.

  ```shell
  sudo systemctl daemon-reload
  sudo systemctl restart kubelet
  ```

### 노드에 적용된 cordon 해제

- 스케줄 가능으로 표시하여 노드를 다시 온라인으로 가져온다.

  ```shell
  # <node-to-uncordon> 에 노드의 이름을 넣는다.
  kubectl uncordon <node-to-uncordon>
  ```

 ## 다음 내용

* [윈도우 노드 업그레이드](/ko/docs/tasks/administer-cluster/kubeadm/upgrading-windows-nodes/)하는 방법을 알아본다.
