kubeadm 클러스터에 Windows 노드 추가하기

kubeadm 클러스터에 Windows 노드 추가하기 (Adding Windows nodes to the cluster)

이 페이지에서는 kubeadm 클러스터에 Windows 워커 노드를 추가하는 방법을 설명해요.

출처: 문서

본문

시작하기 전에

Windows 워커 노드 추가하기

클러스터에 Windows 워커 노드를 추가하는 것을 돕기 위해 https://sigs.k8s.io/sig-windows-tools 저장소의 PowerShell 스크립트가 사용됩니다.

각 머신에 대해 다음을 수행한다:

  1. 머신에서 PowerShell 세션을 연다.
  2. 관리자 또는 권한 있는 사용자인지 확인한다.

그런 다음 아래에 설명된 단계를 진행한다.

containerd 설치

containerd를 설치하려면 먼저 다음 명령을 실행한다:

curl.exe -LO https://raw.githubusercontent.com/kubernetes-sigs/sig-windows-tools/master/hostprocess/Install-Containerd.ps1

그런 다음 CONTAINERD_VERSIONcontainerd 저장소의 최근 릴리스로 바꾼 뒤 다음 명령을 실행한다. 버전에는 v 접두사가 없어야 합니다. 예를 들어 v1.7.22 대신 1.7.22를 사용하세요:

.\Install-Containerd.ps1 -ContainerDVersion CONTAINERD_VERSION
  • 필요에 따라 netAdapterName 같은 Install-Containerd.ps1의 다른 파라미터를 조정한다.
  • 머신이 Hyper-V를 지원하지 않고 Hyper-V 격리 컨테이너를 호스팅할 수 없다면 skipHypervisorSupportCheck를 설정한다.
  • Install-Containerd.ps1의 선택적 파라미터 CNIBinPath 및/또는 CNIConfigPath를 변경하면, 설치된 Windows CNI 플러그인을 일치하는 값으로 구성해야 합니다.

kubeadm과 kubelet 설치

다음 명령을 실행해 kubeadm과 kubelet을 설치한다:

curl.exe -LO https://raw.githubusercontent.com/kubernetes-sigs/sig-windows-tools/master/hostprocess/PrepareNode.ps1
.\PrepareNode.ps1 -KubernetesVersion v
  • 필요하면 PrepareNode.ps1KubernetesVersion 파라미터를 조정한다.

kubeadm join 실행

kubeadm init이 출력한 명령을 실행한다. 예:

kubeadm join --token <token> <control-plane-host>:<control-plane-port> --discovery-token-ca-cert-hash sha256:<hash>

kubeadm join에 대한 추가 정보

<control-plane-host>:<control-plane-port>에 IPv6 튜플을 지정하려면 IPv6 주소를 대괄호로 묶어야 합니다. 예: [2001:db8::101]:2073.

토큰이 없다면 컨트롤 플레인 노드에서 다음 명령을 실행해 얻을 수 있습니다:

# Run this on a control plane node
sudo kubeadm token list

출력은 다음과 비슷합니다:

TOKEN                    TTL  EXPIRES              USAGES           DESCRIPTION            EXTRA GROUPS
8ewj1p.9r9hcjoqgajrj4gi  23h  2018-06-12T02:51:28Z authentication,  The default bootstrap  system:
                                                   signing          token generated by     bootstrappers:
                                                                    'kubeadm init'.        kubeadm:
                                                                                           default-node-token

기본적으로 노드 조인 토큰은 24시간 후 만료됩니다. 현재 토큰이 만료된 후 클러스터에 노드를 조인한다면, 컨트롤 플레인 노드에서 다음 명령을 실행해 새 토큰을 만들 수 있습니다:

# Run this on a control plane node
sudo kubeadm token create

출력은 다음과 비슷합니다:

5didvk.d09sbcov8ph2amjw

--discovery-token-ca-cert-hash 값이 없으면 컨트롤 플레인 노드에서 다음 명령을 실행해 얻을 수 있습니다:

sudo cat /etc/kubernetes/pki/ca.crt | openssl x509 -pubkey  | openssl rsa -pubin -outform der 2>/dev/null | \
   openssl dgst -sha256 -hex | sed 's/^.* //'

출력은 다음과 비슷합니다:

8cb2de97839780a412b93877f8507ad6c94f73add17d5d7058e91741c9d5ec78

kubeadm join 명령의 출력은 대략 다음과 같아야 합니다:

[preflight] Running pre-flight checks

... (log output of join workflow) ...

Node join complete:
* Certificate signing request sent to control-plane and response
  received.
* Kubelet informed of new secure connection details.

Run 'kubectl get nodes' on control-plane to see this machine join.

몇 초 후 kubectl get nodes의 출력에서 이 노드를 볼 수 있을 것입니다. (예: 컨트롤 플레인 노드에서 kubectl 실행).

네트워크 구성

Linux와 Windows 노드가 섞인 클러스터의 CNI 설정은 매니페스트 파일에 kubectl apply를 실행하는 것보다 더 많은 단계가 필요합니다. 또한 컨트롤 플레인 노드에서 실행되는 CNI 플러그인은 Windows 워커 노드에서 실행되는 CNI 플러그인을 지원하도록 준비되어 있어야 합니다.

현재 Windows를 지원하는 CNI 플러그인은 몇 개뿐입니다. 아래에서 각각의 개별 설정 지침을 찾을 수 있습니다:

Windows용 kubectl 설치 (선택 사항) {#install-kubectl}

Windows에 kubectl 설치 및 설정 참조.

더 알아보기 (Learn more)