Calico

Calico Installation in Operator Mode

  • kkumtree

2024-09-18T20:52:16+09:00

CloudNet@์—์„œ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” K8s Advanced Network Study(์ดํ•˜, KANS)๋ฅผ ํ†ตํ•ด ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์Šคํ„ฐ๋”” ์ง„ํ–‰ ์‹œ, Manifests๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Calico๋ฅผ ์„ค์น˜ํ•˜์˜€์œผ๋‚˜,
Operator๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๊ณผ์ œ๋Š” ์•„๋‹ˆ์—ˆ์ง€๋งŒ, ์š”์ƒˆ ๋‹ค๋“ค Operator Framework๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋งˆ๋ผ์ƒน๊ถˆ ๋ณถ๋“ฏ์ด
Operator๋ฅผ ์ง€์ง€๊ณ  ๋ณถ๋Š” ๊ฒƒ ๊ฐ™์•„์„œ ํ˜ธ๊ธฐ์‹ฌ์— ์ •๋ฆฌํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ Manifests๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์น˜ ์‹œ, 50๊ฐœ์˜ ๋…ธ๋“œ[1]๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ๊ฒฝ์šฐ Typha๋ฅผ ๊ตฌ์„ฑํ•˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Calico ์„ค์น˜ ํ™˜๊ฒฝ : AWS EC2(No EKS), kubeadm[2], pod-network-cidr=172.16.0.0/16, IPIP Mode

1. Calico Routing Mode

์œ„์— ์–ธ๊ธ‰๋œ IPIP Mode๋ฅผ ์ดํ•ดํ•˜๋ ค๋ฉด Calico์˜ Routing Mode๋ฅผ ํ›‘์„ ํ•„์š”์„ฑ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
ํŒŒ๋“œ๊ฐ„ ํ†ต์‹  ์‹œ ๋…ธ๋“œ ๊ฐ„์— encapsulation์˜ ์ „๋žต์„ ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋‰˜์–ด ๋ณผ ์ˆ˜ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค.

Calico ๋ฐ ๋ฉ”ํŠธ๋ฆญ ์ˆ˜์ง‘ ๊ตฌ์„ฑ

  • kkumtree

2024-09-15T18:40:22+09:00

CloudNet@์—์„œ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” K8s Advanced Network Study(์ดํ•˜, KANS)๋ฅผ ํ†ตํ•ด ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

1. Calico ์„ค์น˜

์Šคํ„ฐ๋””์—์„œ AWS CF ๋ฐ Calico ์„ค์น˜ ์Šคํฌ๋ฆฝํŠธ(Manifest)๋ฅผ ์ œ๊ณตํ•˜์˜€๊ธฐ์—, ์ด ๋ถ€๋ถ„์€ ์ฐธ๊ณ ๋งŒ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

CNI๊ฐ€ ์„ค์น˜๋˜์ง€ ์•Š์•˜๊ธฐ์— NotReady ์ƒํƒœ์— ์žˆ๋‹ค๊ฐ€, Calico ์„ค์น˜ํ•˜๋ฉด CoreDNS๊ฐ€ ์„ค์ •๋˜๋ฉฐ, Ready ์ƒํƒœ๋กœ ๋ณ€๊ฒฝ๋œ๋‹ค.

  • Calico ์„ค์น˜ ์ „

    # Control Plane and worker nodes are not ready
    (โŽˆ|HomeLab:default) root@k8s-m:~# kubectl get nodes
    NAME     STATUS     ROLES           AGE   VERSION
    k8s-m    NotReady   control-plane   32m   v1.30.5
    k8s-w0   NotReady   <none>          31m   v1.30.5
    k8s-w1   NotReady   <none>          31m   v1.30.5
    k8s-w2   NotReady   <none>          31m   v1.30.5
    
    # Count for iptalbes rules for comparison
    (โŽˆ|HomeLab:default) root@k8s-m:~# iptables -t filter -L | wc -l
    50
    (โŽˆ|HomeLab:default) root@k8s-m:~# iptables -t nat -L | wc -l
    48
    
    (โŽˆ|HomeLab:default) root@k8s-m:~# kubectl get pod -A --sort-by=.metadata.creationTimestamp
    NAMESPACE     NAME                            READY   STATUS    RESTARTS   AGE
    kube-system   etcd-k8s-m                      1/1     Running   0          35m
    kube-system   kube-apiserver-k8s-m            1/1     Running   0          35m
    kube-system   kube-controller-manager-k8s-m   1/1     Running   0          35m
    kube-system   kube-scheduler-k8s-m            1/1     Running   0          35m
    kube-system   coredns-55cb58b774-bscbt        0/1     Pending   0          35m
    kube-system   coredns-55cb58b774-w22zq        0/1     Pending   0          35m
    kube-system   kube-proxy-5hgmn                1/1     Running   0          35m
    kube-system   kube-proxy-bnv77                1/1     Running   0          35m
    kube-system   kube-proxy-xf8q7                1/1     Running   0          35m
    kube-system   kube-proxy-hzsnk                1/1     Running   0          35m
    
  • Calico ์„ค์น˜ ํ›„

Init Calico from quay registry

  • kkumtree

2023-07-25T00:40:14+09:00

Written in 25 July 2023.
It could be different when you read this article.

Error I met

I met error message like Init:ImagePullBackOff when I tried to create calico pod.

kubectl get pods --all-namespaces
NAMESPACE     NAME                                                     READY   STATUS                  RESTARTS   AGE   
kube-system   calico-kube-controllers-xxxxxxxxxx-yyyyy                 1/1     Running                 1          13h   
kube-system   calico-node-xxxxx                                        0/1     Init:ImagePullBackOff   0          13h

Why it happened

Yes, it’s because of changed docker hub policy. Recently, I’m in an environment that about 20~30 people use 4 public IP addresses. So, it’s easy to reach docker hub pull rate limit.

kkumtree

Source code on GitHub

ยฉ 2025 kkumtree and contributors All rights reserved.
Licensed under
CC BY-NC-ND 4.0