k0s에 Cilium 설치하기
k0s에 Cilium 설치하기 (Installation Using k0sctl)
k0sctl을 이용해 k0s에 Cilium을 설치하는 과정을 안내할게요. k0s는 Kubernetes 클러스터를 구축하는 데 필요한 모든 기능이 구성된 오픈소스·올인원 Kubernetes 배포판이에요.
본문
이 가이드는 k0s에 Cilium을 설치하는 과정을 안내해요. k0s는 Kubernetes 클러스터를 구축하는 데 필요한 모든 기능이 구성된 오픈소스이며 올인원 Kubernetes 배포판이에요.
Cilium은 현재 amd64와 arm64 아키텍처를 지원해요.
마스터 노드 설치 (Install a Master Node)
k0sctl 바이너리가 로컬에 설치되어 있는지 확인하세요.
VM을 준비하세요.
이 방법은 이 가이드의 범위를 벗어나므로, 선호하는 가상화 도구를 참고하세요. VM을 배포한 후에는 그 IP 주소를 환경 변수로 내보내세요 (아래 예시 참고). 이 값들은 이후 단계에서 사용돼요.
export node1_IP=192.168.2.1
export node2_IP=192.168.2.2
export node3_IP=192.168.2.3
k0sctl이 사용할 yaml 구성 파일을 준비하세요.
# The following command assumes the user has deployed 3 VMs
# with the default user "k0s" using the default ssh-key (without passphrase)
k0sctl init --k0s -n "myk0scluster" -u "k0s" -i "~/.ssh/id_rsa" -C "1" "${node1_IP}" "${node2_IP}" "${node3_IP}" > k0s-myk0scluster-config.yaml
다음 단계는 k0s-myk0scluster-config.yaml을 편집하는 거예요.
# replace
...
provider: kuberouter
...
# with
...
provider: custom
...
마지막으로 구성 파일을 적용해요.
k0sctl apply --config k0s-myk0scluster-config.yaml --no-wait
참고: kube-proxy 없이 Kubernetes에서 Cilium을 실행한다면(k0s without kube-proxy 모드), k0s 구성 파일에서 kube-proxy를 비활성화하세요.
클러스터 접근 구성 (Configure Cluster Access)
이후 단계에서 Cilium CLI가 클러스터에 접근하려면 kubeconfig 파일을 생성해 ~/.kube/k0s-mycluster.config에 저장하고 KUBECONFIG 환경 변수를 설정해야 해요.
k0sctl kubeconfig --config k0s-myk0scluster-config.yaml > ~/.kube/k0s-mycluster.config
export KUBECONFIG=~/.kube/k0s-mycluster.config
Cilium 설치 (Install Cilium)
Cilium CLI의 최신 버전을 설치해요. Cilium CLI는 Cilium 설치, Cilium 설치 상태 검사, 그리고 다양한 기능(예: clustermesh, Hubble)의 활성화/비활성화에 사용할 수 있어요.
Linux
CILIUM_CLI_VERSION=$(curl -s https://raw.githubusercontent.com/cilium/cilium-cli/main/stable.txt)
CLI_ARCH=amd64
if [ "$(uname -m)" = "aarch64" ]; then CLI_ARCH=arm64; fi
curl -L --fail --remote-name-all https://github.com/cilium/cilium-cli/releases/download/${CILIUM_CLI_VERSION}/cilium-linux-${CLI_ARCH}.tar.gz{,.sha256sum}
sha256sum --check cilium-linux-${CLI_ARCH}.tar.gz.sha256sum
sudo tar xzvfC cilium-linux-${CLI_ARCH}.tar.gz /usr/local/bin
rm cilium-linux-${CLI_ARCH}.tar.gz{,.sha256sum}
macOS
CILIUM_CLI_VERSION=$(curl -s https://raw.githubusercontent.com/cilium/cilium-cli/main/stable.txt)
CLI_ARCH=amd64
if [ "$(uname -m)" = "arm64" ]; then CLI_ARCH=arm64; fi
curl -L --fail --remote-name-all https://github.com/cilium/cilium-cli/releases/download/${CILIUM_CLI_VERSION}/cilium-darwin-${CLI_ARCH}.tar.gz{,.sha256sum}
shasum -a 256 -c cilium-darwin-${CLI_ARCH}.tar.gz.sha256sum
sudo tar xzvfC cilium-darwin-${CLI_ARCH}.tar.gz /usr/local/bin
rm cilium-darwin-${CLI_ARCH}.tar.gz{,.sha256sum}
전체 릴리스 목록은 releases 페이지에서 확인할 수 있어요.
다음을 실행해 Cilium을 설치해요.
cilium install 1.20.2
설치 검증 (Validate the Installation)
Cilium이 제대로 설치됐는지 검증하려면 다음을 실행하면 돼요.
$ cilium status --wait
/¯\
/¯\__/¯\ Cilium: OK
\__/¯\__/ Operator: OK
/¯\__/¯\ Hubble: disabled
\__/¯\__/ ClusterMesh: disabled
\__/
DaemonSet cilium Desired: 2, Ready: 2/2, Available: 2/2
Deployment cilium-operator Desired: 2, Ready: 2/2, Available: 2/2
Containers: cilium-operator Running: 2
cilium Running: 2
Image versions cilium quay.io/cilium/cilium:v1.9.5: 2
cilium-operator quay.io/cilium/operator-generic:v1.9.5: 2
다음 명령을 실행해 클러스터가 올바른 네트워크 연결성을 갖췄는지 검증해요.
$ cilium connectivity test
ℹ️ Monitor aggregation detected, will skip some flow validation steps
✨ [k8s-cluster] Creating namespace for connectivity check...
(...)
---------------------------------------------------------------------------------------------------------------------
📋 Test Report
---------------------------------------------------------------------------------------------------------------------
✅ 69/69 tests successful (0 warnings)
참고: 연결성 테스트는 일부 파드에서 열려 있는 파일이 너무 많아 배포에 실패할 수도 있어요. 이런 오류가 보이면 호스트 머신의 inotify 리소스 한도를 늘려 보세요 (즉, "too many open files"로 인한 파드 오류 참고).
축하해요! 이제 Cilium이 완전히 동작하는 Kubernetes 클러스터를 갖추셨어요. 🎉
다음 단계 (Next Steps)
-
Hubble Observability 설정
-
CLI로 네트워크 플로우 검사
-
Service Map과 Hubble UI
-
Identity-Aware 및 HTTP-Aware 정책 강제
-
Cluster Mesh 설정