본문으로 바로가기 본문 바로가기
WIKI 기술 지식 베이스

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

  1. 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
  1. Tigera Operator를 설치해요.
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.33.0/manifests/tigera-operator.yaml
  1. 필요한 커스텀 리소스를 만들어 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

최종 확인

  1. 다음 명령으로 모든 파드가 실행 중인지 확인해요.
watch kubectl get pods --all-namespaces
  1. 각 파드의 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
  1. watch를 종료하려면 CTRL+C를 누르세요.

  2. 다음 명령으로 클러스터에 노드가 생겼는지 확인해요.

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 클러스터를 갖게 됐어요.

다음 단계

더 알아보기 (Learn more)

퀵스타트가 끝났으면 네트워크 정책 데모로 Calico의 정책 기능을 직접 눈으로 확인해보는 걸 추천해요. 프로덕션 배포는 멀티 노드 설치 문서에서 요구사항과 구성 옵션을 꼼꼼히 확인하고 진행하세요. 설치 방식(Operator vs Manifest)에 따라 관리 명령이 달라진다는 점도 기억해두세요.