# Calico 설치하기

[aws/amazon-vpc-cni-k8s GitHub project](https://github.com/aws/amazon-vpc-cni-k8s)에서 Calico manifest를 적용합니다. 이렇게 하면 kube-system 네임 스페이스에 데몬 세트가 생성됩니다.

```
kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/master/config/v1.6/calico.yaml

```

Calico manifasts의 몇 가지 주요 기능을 살펴 보겠습니다.

1\) 전체적으로 annotation을 봅니다. Annotation은 식별되지 않는 메타 데이터를 개체에 연결하는 방법입니다. 이 메타 데이터는 쿠버네티스에서 내부적으로 사용되지 않으므로 k8s 내에서 식별하는 데 사용할 수 없습니다. 대신 외부 도구 및 라이브러리에서 사용됩니다. Annotation의 예로는 빌드/릴리스 타임 스탬프, 디버깅을 위한 클라이언트 라이브러리 정보 또는 이 경우에는 Calico와 같은 네트워크 정책에서 관리하는 필드가 있습니다.

![](https://1998608250-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MhByD5wv8eUbA5ZbUY5%2F-MhEcPlmhA4UQ64jhKR6%2F-MhEeLPKFqmHPfpkTerD%2Fimage.png?alt=media\&token=6371324b-9786-4ca7-b636-8f1b054bd836)

반대로 쿠버네티스의 [Labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors)은 객체의 **identifying** 속성을 지정하는 데 사용 됩니다. 셀렉터 쿼리 또는 레이블 셀렉터와 함께 사용 됩니다. 쿠버네티스에서 내부적으로 사용 되기 때문에 쿼리를 최적화 하기 위해 키와 값의 구조가 제한됩니다.

2\) manifasts에 tolerations 속성도 확인할 수 있습니다. [Taint와 Tolerations](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/)은 함께 작동하여 파드가 부적절한 노드에 예약되지 않도록 합니다. Taint는 노드에 적용되며 **taint를 tolerate 하는 파드만이 해당 노드에서 실행될 수 있습니다.**

Taint는 키, 값 및 효과로 구성 되며 다음과 같습니다.

* PreferNoSchedule : Taint 노드에 허용되지 않는 파드를 예약하지 않는 것을 선호합니다.
* NoSchedule : Taint 노드에 허용되지 않는 포드를 예약 하지 않습니다.
* NoExecute : 예약하지 않는 것 외에도 노드에서 이미 실행중인 허용되지 않는 파드를 제거 합니다.

Taint와 마찬가지로 toleration에는 연산자가 추가 된 키 값 쌍과 효과가 있습니다. 여기 Calico manifasts에서 toleration에는 **Operator = exists**라는 하나의 속성만 있습니다. 즉, 키 값 쌍이 생략되고 toleration이 모든 taint와 일치하면 모든 노드에서 실행 되도록 합니다.

![](https://1998608250-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MhByD5wv8eUbA5ZbUY5%2F-MhEcPlmhA4UQ64jhKR6%2F-MhEeHUlnwStpGNeySsi%2Fimage.png?alt=media\&token=32b7a0c2-bfa8-48b0-9f76-1e5216120602)

kube-system 데몬 세트를 보고 calico-node 데몬이 READY 상태에서 DESIRED 수의 파드를 갖도록 설정 될 때까지 기다립니다.

```
kubectl get daemonset calico-node --namespace=kube-system
```

예상되는 결과는 다음과 유사합니다.&#x20;

![](https://1998608250-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MhByD5wv8eUbA5ZbUY5%2F-MhEcPlmhA4UQ64jhKR6%2F-MhEebNaYuwU4ibGX19e%2Fimage.png?alt=media\&token=6aa4bc91-91e6-4648-b804-5faceaacca1a)

