시간은 없고 내용은 많으니 TL;DR 하겠습니다
결론
1. 실제로 프로덕트 환경에서는 안쓰일거같다 왜냐하면 컨테이너 개발이 상당히 어려울거같기 떄문..
반박 시 님들말이 맞습니다. ㅎㅎ
이번에는 폐쇄망 환경에서 윈도우즈 2019 서버를 클러스터에 노드로 추가해보겠습니다.
개념은 온라인 설치와 똑같습니다
CalicoNode와 CalicoFelix 서비스를 설치한 뒤 Kubelet과 Kube-proxy를 설치하면 클러스터에 붙습니다.
대신 폐쇄망이므로 온라인설치에 필요한 모든 파일을 사전에 다운로드 받아 노드로 추가할 윈도우즈 서버에 옮겨야 합니다.
시작해보겠습니다
필요 파일 리스트
* 7zip.msi (압축풀기용으로 필요)
(https://www.7-zip.org/download.html)
* Containers 설치 파일
(https://github.com/containerd/containerd/blob/main/docs/getting-started.md 에서 Windows검색하여 최신버전 받을 수 있음)
* calico-windows(v3.27.0버전 사용)
(https://docs.tigera.io/calico/latest/getting-started/kubernetes/windows-calico/manual-install/standard 에서 최신버전의 Calico 설치 스크립트를 받을 수 있습니다)
* kubernetes-node-windows-amd64(k8s 요소 설치 관련)
* helper.psm1, helper.psm1, hns.psm1(calico install script에서 필요 모듈 파일)
(helperv2 -> https://raw.githubusercontent.com/Microsoft/SDN/master/Kubernetes/windows/helper.v2.psm1
helper -> https://raw.githubusercontent.com/Microsoft/SDN/master/Kubernetes/windows/helper.psm1
hns -> https://github.com/microsoft/SDN/blob/master/Kubernetes/windows/hns.psm1 )
* install-calico-windows.ps1(calico install 스크립트)
(https://github.com/projectcalico/calico/blob/master/node/windows-packaging/install-calico-windows.ps1)
* kube config 파일 (calico 설치시 필요)
(마스터의 ~/.kube/config 파일입니다.)
위 파일들을 모두 받아 윈도우즈 서버 C:\k 디렉토리로 옮겨둡니다(k 디렉토리가 없으면 생성해줍니다).
사전작업
1. HNS 서비스 활성화 하기
Install-WindowsFeature -Name containers
Restart-Computer -Force
위 명령어를 윈도우 powershell에 입력하여 HNS서비스를 활성해 좁니다.
(인터넷 없어도 실행됩니다)
2. 2개 폴더를 생성해 줍니다.
mkdir "C:\Program Files\containerd\cni\bin"
mkdir "C:\k"
해당 폴더가 자동으로 생성되지 않으므로 사전에 생성해둠
“C:\k” 폴더는 calico설치시 사용되는 폴더이므로 인터넷에서 받은 파일을 넣어줍니다
본작업
1. 7zip.msi를 설치해 줍니다
2. ContainerD 설치
# *인터넷필요*
# 인터넷에서 해당 파일을 받고 폐쇄망 서버로 옮긴다. 이 단계 이후 설치 방법은 내용을 참조
# [ContainerD버전]를 받은 버전으로 수정한다
curl.exe -L https://github.com/containerd/containerd/releases/download/v[ContainerD버전]/containerd-[ContainerD버전]-windows-amd64.tar.gz -o containerd-windows-amd64.tar.gz
tar.exe xvf .\containerd-windows-amd64.tar.gz
#____________________________________________________
# Copy and configure
Copy-Item -Path ".\bin" -Destination "$Env:ProgramFiles\containerd" -Recurse -Container:$false -Force
cd $Env:ProgramFiles\containerd\
.\containerd.exe config default | Out-File config.toml -Encoding ascii
# Review the configuration. Depending on setup you may want to adjust:
# - the sandbox_image (Kubernetes pause image)
# - cni bin_dir and conf_dir locations
Get-Content config.toml
# Register and start service
.\containerd.exe --register-service
Start-Service containerd
3. Calico 설치
1. Install-calico-windows.ps1 스크립트를 참조하여 인터넷으로 다운로드 받는 파일들을 미리 폐쇄망에 옮겨놓는다
-> Line 48, 49, 54, 56, 주석처리한다 [스크립트에 인터넷을 사용하여 다운로드 하는 코드를 주석처리 한다]
-> 스크립트 처음 Param부분에서 $RelaseFile, $KubeVersion, $ServiceCidr, $DNSServerIPs를 알맞게 수정
2. kubectl 파일 미리 받아둠 - 7zipFM으로 압축풀기 (인스톨스크립트에서 인터넷에서 소스땡겨오는부분 주석처리)
-> kubernetes-node-windows-amd64.tar 파일을 7zip으로 압축풀어 내용물을 k 폴더에 넣어놓는다
3. k8s마스터 노드의 /root/.kube/config 파일 k 폴더로 옮기기
4. calico-windows.zip 파일을 C:\로 옮긴다
5. Install-calico-windows.ps1 스크립트를 실행한다
6. CalicoNode, CalicoFelix 서비스가 정상적으로 실행되는지 확인한다
[Get-Service 명령어 사용]
4. Calico 설치 이후 C:\CalicoWindows\Kubernetes 내부 install-kube-services.ps1 스크립트를 실행하여 Kubelet, kube-proxy 설치 후 실행까지 확인
5. K8s Master에서 Windows노드가 정상적으로 추가되었는지 확인
아쉽게도 아직 윈도우 노드와 빌드가 맞게 생성된 pod이 없어서 pod이 올라가는지 테스트는 못해봤지만 노드가 정상적으로 추가되는것을 확인했습니다.
궁금하시거나 이상하다 하시는점 있으시면 알려주세요!
'Docker & K8s' 카테고리의 다른 글
Windows 2019 인터넷망 K8s(Kubernetes) 노드 추가 방법 (0) | 2024.02.13 |
---|---|
ubuntu 20.04 K8s 설치 노트 (0) | 2024.01.08 |