skip to Main Content

아코디언에서 windows kubernetes 연동하기

이번 포스팅에는 쿠버네티스에서 윈도우 컨테이너를 구성하고, 아코디언을 연동하여 보다 편리하게 배포하는 환경을 구축해보겠습니다.

먼저 windows서버를 사용하기 위해 cni를 Flannel으로 선택하였습니다.
windows서버에 kubernetes를 설치하기 위한 기본 환경은 다음과 같습니다.

- vxlan 모드에서 Flannel을 사용한 가상 오버레이 네트워크 구성
- KB4489899 가 설치 된 windows server 2019 또는 Windows Server vnext Insider preview Build 18317 + 가 필요
- WinOverlay 기능 게이트를 사용하도록 설정된 kubernetes 1.14 이상의 버전
- Master서버는 linux로  구성해야 합니다.

네트워크 환경은 다음과 같습니다.

- Service Subnet : 10.96.0.0/12(기본값)
- Cluster Subnet : 10.244.0.0/16 (기본값) 

[Master서버 구성]
– Master서버에 Linux (RHEL 7.4이상) OS 설치를 진행하고 다음단계로 넘어갑니다.

먼저 linux서버에 Flannel cni를 사용하여 Accordion을 설치합니다.
Flannel 설치를 위해 아코디언 설정파일의 Network Setting을 아래와 같이 설정합니다.
(아코디언 설치파일은 홈페이지를 통해 문의가 가능합니다.)

설치를 완료하게 되면, flannel으로 구성된 아코디언 환경을 볼 수 있습니다.

Master서버의 구성이 끝나면, Windows서버를 준비합니다.
상단 요구사항에 맞춰 windows server 2019 최신 업데이트 버전으로 서버를 구성합니다. (사전에 OS 누적 업데이트를 필수로 진행해야 합니다)

설치 된 Windows 서버에 폴더를 생성합니다.
– 경로 : C:\k

Docker, Kubernetes 설치를 위한 powershell 파일과 구성파일을 업로드합니다.

- docker_install.ps1 : docker 설치를 위한 powershell
- kubernetes_install.ps1 : kubernetes 설치를 위한 powershell
- kubeadm, kubectl, kubelet, kube-proxy : 버전에 맞는 kubernetes binary 파일 (예제는 1.14.8로 구성)
- Master서버의 config파일 : Master서버( /root/.kube/config)의 파일을 다운받아 업로드합니다.

[업로드 완료화면]

Windows Powershell을 실행하여 아래 명령어를 실행합니다. (네트워크 환경에 따라, 약 10분정도 소요됩니다)

cd C:\k
.\docker_install.ps1

아래와 같은 화면이 나오면 “Y”를 입력합니다. (powershell 진행 후 재기동됩니다)

Windows Server가 재기동되면, 다시 Powershell을 실행합니다.
아래 커맨드를 통해, docker가 설치된것을 확인합니다.

docker version

powershell을 통해 아래커맨드를 실행하여 결과를 확인합니다.

$env:Path += ";C:\k"
[Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\k", [EnvironmentVariableTarget]::Machine)
$env:KUBECONFIG="C:\k\config"
[Environment]::SetEnvironmentVariable("KUBECONFIG", "C:\k\config", [EnvironmentVariableTarget]::User)
kubectl config view
kubectl get po --all-namespaces

[결과 화면]

위와 같이 화면이 구성되면, kubernetes_install.ps1파일의 설정을 수정합니다.

$MasterIP="10.20.200.73" #Windows Server IP입력
$Hostname="win-oklq2t43kgi" #hostname을 소문자로 입력
$KUBERNETES_VERSION="1.14.8" #kubernetes 버전을 입력

PowerShell에서 아래 커맨드를 실행합니다.

cd C:\k
.\kubernetes_install.ps1

kubernetes_install.ps1 실행중에 위 화면과 같이 Waiting for hns network vxlan0
이라는 메세지가 나오면 Powershell 창을 한개더 실행 후 아래 커맨드를 실행합니다.

chcp 65001
cd C:\k
[Environment]::SetEnvironmentVariable("NODE_NAME", "win-oklq2t43kgi") #hostname을 입력
.\flanneld.exe --kubeconfig-file=c:\k\config --iface=10.20.200.71 --ip-masq=1 --kube-subnet-mgr=1 -etcd-endpoints http://10.20.200.61:2379  # iface= windows server ip, etcd-endpoints= http://MasterIP:2379 입력

flanneld가 실행되면, Waiting for hns network vxlan0 메세지를 더이상 나타내지 않으며, 아래와 같이 kube-proxy가 정상적으로 실행됩니다.

Windows server의 서비스에서도 실행중임을 확인할 수 있습니다.

Master서버에서 아래 커맨드를 실행합니다.

kubectl get nodes

아코디언에 접속하여, Windows 컨테이너를 구성해보겠습니다.
https://MasterIP:30000번으로 접속 후 admin계정으로 접속합니다.

설정 > 템플릿 > 템플릿 생성을 이용해 iis 템플릿을 생성합니다.
아래와 같이 빌드를 해제하고, nodeSelector, image, containerPort를 설정 후 생성합니다.
nodeSelector를 적용하면 해당 템플릿으로 생성 시 앱이 Windows Server로 스케쥴링 됩니다.

앱 > 앱 추가 를 클릭합니다.

위에서 생성한 iis템플릿을 클릭합니다.

앱의 이름을 설정하고, 접근을 위해 NodePort를 31111번 포트로 설정하였습니다.
설정 후 앱을 생성합니다. (최초 앱 생성 시 이미지 다운로드에 시간이 소요됩니다)

위와 같은 화면이 나오면, 컨테이너가 정상적으로 구성된 것입니다.
생성된 앱에 접근해보겠습니다. (http://masterip:nodeport 또는 hosts클릭하여 노드포트로 접속)

정상적으로 앱이 올라온것을 확인하였습니다.

Windows server내부에서 powershell로 다음을 확인합니다.

docker images
docker ps

Master server 내부에서 커맨드로 다음을 확인합니다.

kubectl get po --all-namespaces

위와 같이 windows 컨테이너도 아코디언에서 손쉽게 구성할 수 있습니다.

Back To Top