K3s에서 Calico 퀵스타트
단일 노드 K3s 클러스터에 Calico Open Source를 약 5분 만에 설치하는 퀵스타트예요. 테스트나 개발용으로 K3s를 띄워보려는 분께 딱 맞아요. 컨트롤 플레인 초기화부터 Calico 설치, 최종 확인까지 순서대로 따라가면 돼요.
출처: 문서
본문
큰 그림
이 퀵스타트로 약 5분 만에 Calico가 설치된 단일 노드 K3s 클러스터를 갖게 돼요. 이 클러스터는 테스트와 개발에 쓸 수 있어요.
가치
이 퀵스타트로 Calico 기능을 빠르고 쉽게 체험해보세요. 프로덕션에 적합한 클러스터를 배포하려면 멀티 노드 설치를 참고하세요.
설치되는 구성의 세부 내용은 다음과 같아요.
| 정책 | IPAM | CNI | 오버레이 | 라우팅 | 데이터스토어 |
|---|---|---|---|---|---|
| Calico | Calico | Calico | VXLAN | Calico | Kubernetes |
?
시작하기 전에
-
다음 요구사항을 충족하는 Linux 호스트가 있는지 확인하세요
- x86-64 프로세서
- CPU 1개
- RAM 1GB
- 여유 디스크 10GB
- Ubuntu 18.04 (amd64), Ubuntu 20.04 (amd64)
SECONDARY: K3s는 ARM 프로세서도 지원하지만, 이 퀵스타트는 x86-64 프로세서 환경에서 테스트됐어요. 자세한 내용은 이 링크를 참고하세요.
방법
단일 노드 K3s 클러스터 만들기
- 다음 명령으로 컨트롤 플레인을 초기화해요.
curl -sfL https://get.k3s.io | K3S_KUBECONFIG_MODE="644" INSTALL_K3S_EXEC="--flannel-backend=none --cluster-cidr=192.168.0.0/16 --disable-network-policy --disable=traefik" sh -
SECONDARY:
네트워크에서 192.168.0.0/16을 이미 사용 중이라면, 위 명령에서 192.168.0.0/16을 다른 파드 네트워크 CIDR로 교체해야 해요.
K3s 설치 프로그램은 제한된 권한으로
etc디렉터리에kubeconfig파일을 생성해요.K3S_KUBECONFIG_MODE환경 변수를 쓰면 이 파일에 필요한 권한을 부여해서 다른 사용자도 접근할 수 있게 돼요.
Calico 설치하기
탭: Operator
- Calico 커스텀 리소스 정의를 설치해요.
클러스터가 Kubernetes 1.36 이상이라면:
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.33.0/manifests/v3_projectcalico_org.yaml
클러스터가 Kubernetes 1.34 또는 1.35라면:
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.33.0/manifests/v3_projectcalico_org-v1beta1.yaml
- Tigera Operator를 설치해요.
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.33.0/manifests/tigera-operator.yaml
- 필요한 커스텀 리소스를 만들어 Calico를 설치해요. 이 매니페스트에서 사용할 수 있는 구성 옵션에 대한 자세한 내용은 Tigera Operator API 레퍼런스를 참고하세요.
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.33.0/manifests/custom-resources.yaml
SECONDARY: 이 매니페스트를 만들기 전에 내용을 읽고 설정이 여러분의 환경에 맞는지 확인하세요. 예를 들어 파드 네트워크 CIDR에 맞추려고 기본 IP 풀 CIDR을 바꿔야 할 수 있어요.
탭: Manifest
다음 명령으로 Calico를 설치해요.
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.33.0/manifests/calico.yaml
SECONDARY: 새 탭에서 YAML 보기도 가능해요.
다음과 같은 출력이 보여야 해요.
configmap/calico-config created
customresourcedefinition.apiextensions.k8s.io/bgpconfigurations.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/bgppeers.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/blockaffinities.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/clusterinformations.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/felixconfigurations.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/globalnetworkpolicies.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/globalnetworksets.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/hostendpoints.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/ipamblocks.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/ipamconfigs.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/ipamhandles.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/ippools.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/kubecontrollersconfigurations.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/networkpolicies.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/networksets.crd.projectcalico.org created
clusterrole.rbac.authorization.k8s.io/calico-kube-controllers created
clusterrolebinding.rbac.authorization.k8s.io/calico-kube-controllers created
clusterrole.rbac.authorization.k8s.io/calico-node created
clusterrolebinding.rbac.authorization.k8s.io/calico-node created
daemonset.apps/calico-node created
serviceaccount/calico-node created
deployment.apps/calico-kube-controllers created
serviceaccount/calico-kube-controllers created
최종 확인
- 다음 명령으로 모든 파드가 실행 중인지 확인해요.
watch kubectl get pods --all-namespaces
- 각 파드의
STATUS가Running이 될 때까지 기다려요.
탭: Operator
NAMESPACE NAME READY STATUS RESTARTS AGE
tigera-operator tigera-operator-c9cf5b94d-gj9qp 1/1 Running 0 107s
calico-system calico-typha-7dcd87597-npqsf 1/1 Running 0 88s
calico-system calico-node-rdwwz 1/1 Running 0 88s
kube-system local-path-provisioner-6d59f47c7-4q8l2 1/1 Running 0 2m14s
kube-system metrics-server-7566d596c8-xf66d 1/1 Running 0 2m14s
kube-system coredns-8655855d6-wfdbm 1/1 Running 0 2m14s
calico-system calico-kube-controllers-89df8c6f8-7hxc5 1/1 Running 0 87s
탭: Manifest
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system calico-node-9hn9z 1/1 Running 0 23m
kube-system local-path-provisioner-6d59f47c7-drznc 1/1 Running 0 38m
kube-system calico-kube-controllers-789f6df884-928lt 1/1 Running 0 23m
kube-system metrics-server-7566d596c8-qxlfz 1/1 Running 0 38m
kube-system coredns-8655855d6-blzl5 1/1 Running 0 38m
-
watch를 종료하려면 CTRL+C를 누르세요. -
다음 명령으로 클러스터에 노드가 생겼는지 확인해요.
kubectl get nodes -o wide
다음과 비슷한 결과가 나와야 해요.
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
k3s-master Ready master 40m v1.18.2+k3s1 172.16.2.128 <none> Ubuntu 18.04.3 LTS 4.15.0-101-generic containerd://1.3.3-k3s2
축하해요! 이제 Calico가 설치된 단일 노드 K3s 클러스터를 갖게 됐어요.
다음 단계
- Kubernetes 네트워크 정책 데모를 실행해서 네트워크 정책이 동작하는 라이브 그래픽 뷰를 확인해보세요
더 알아보기 (Learn more)
퀵스타트가 끝났으면 네트워크 정책 데모로 Calico의 정책 기능을 직접 눈으로 확인해보는 걸 추천해요. 프로덕션 배포는 멀티 노드 설치 문서에서 요구사항과 구성 옵션을 꼼꼼히 확인하고 진행하세요. 설치 방식(Operator vs Manifest)에 따라 관리 명령이 달라진다는 점도 기억해두세요.