kubeadm 클러스터에 Windows 노드 추가하기
kubeadm 클러스터에 Windows 노드 추가하기 (Adding Windows nodes to the cluster)
이 페이지에서는 kubeadm 클러스터에 Windows 워커 노드를 추가하는 방법을 설명해요.
출처: 문서
본문
시작하기 전에
- 관리자 접근 권한이 있는 실행 중인 Windows Server 2022(이상) 인스턴스.
kubeadm init으로 만들고 kubeadm으로 클러스터 생성 문서의 단계를 따른 실행 중인 kubeadm 클러스터.
Windows 워커 노드 추가하기
클러스터에 Windows 워커 노드를 추가하는 것을 돕기 위해 https://sigs.k8s.io/sig-windows-tools 저장소의 PowerShell 스크립트가 사용됩니다.
각 머신에 대해 다음을 수행한다:
- 머신에서 PowerShell 세션을 연다.
- 관리자 또는 권한 있는 사용자인지 확인한다.
그런 다음 아래에 설명된 단계를 진행한다.
containerd 설치
containerd를 설치하려면 먼저 다음 명령을 실행한다:
curl.exe -LO https://raw.githubusercontent.com/kubernetes-sigs/sig-windows-tools/master/hostprocess/Install-Containerd.ps1
그런 다음 CONTAINERD_VERSION을 containerd 저장소의 최근 릴리스로 바꾼 뒤 다음 명령을 실행한다. 버전에는 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.ps1의KubernetesVersion파라미터를 조정한다.
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}
더 알아보기 (Learn more)
- Linux 워커 노드 추가 방법 보기.