Calico IPIP & Calico eBPF

작성자 이경미 수정일 2023-01-26 13:28

#iptables, #calico mode

들어가며

  • Calico mode 를 변경하는 방법에 대해 알 수 있습니다. 



내용

다음 파일을 사용하여 calico mode 를 전환할 수 있습니다. 


IPIP Mode

# 기존에 eBPF Mode 로 사용중이라면 pod 를 삭제해줍니다. 
# Delete eBPF Mode YAML
$ kubectl delete -f ./calico-v3.19-spsd-ebpf.yaml


# eBPF Mode 에 필요한 config map 을 삭제합니다. 
# Delete eBFP configmaps
$ kubectl delete configmaps -n kube-system kubernetes-services-endpoint

# Apply IPIP Mode YAML
$ kubectl apply -f ./calico-v3.19-spsd.yaml

# Tunnel mode 
$ ./calicoctl patch felixconfiguration default --patch='{"spec": {"bpfExternalServiceMode": "Tunnel"}}'

# eBPF mode false 
$ ./calicoctl patch felixconfiguration default --patch='{"spec": {"bpfEnabled": false}}'

# Enable IPIP mode 
$ kubectl patch ds -n kube-system kube-proxy --type merge -p '{"spec":{"template":{"spec":{"nodeSelector":{"non-calico": null}}}}}'

# Restart Calico Controller / Node 
$ kubectl delete pod -n kube-system -l k8s-app=calico-kube-controllers
$ kubectl delete pod -n kube-system -l k8s-app=calico-node

# Check Calico Mode
$ ./calicoctl get ippool -owide

# Check IPTables Chain
$ sudo iptables -t nat -S

eBPF Mode

eBPF mode 를 사용하기 위해 첨부된 ebpf_config.yaml 을 수정합니다. 

# API server 확인 
$ kubectl get endpoints -A -owide |grep kubernetes


- ebpf_config.yaml

sudo vi ebpf_config.yaml


확인한 endpoint api server 와 port 를 입력한 뒤 저장합니다. 

kind: ConfigMap
apiVersion: v1
metadata:
  name: kubernetes-services-endpoint
  namespace: kube-system
data:
  KUBERNETES_SERVICE_HOST: "API-SERVER"
  KUBERNETES_SERVICE_PORT: "API-PORT"


- Apply ebpf mode 

# 기존에 IPIP Mode 를 사용중이라면 중지합니다. 
# Delete IPIP Mode YAML
$ kubectl delete -f ./calico-v3.19-spsd.yaml

# Apply eBPF configmaps 
$ kubectl apply -f ./ebpf_config.yaml

# Apply eBPF Mode YAML
# kubectl apply -f ./calico-v3.19-spsd-ebpf.yaml

# Restart Calico Controller / Node 
$ kubectl delete pod -n kube-system -l k8s-app=calico-kube-controllers
$ kubectl delete pod -n kube-system -l k8s-app=calico-node

# Enable eBPF mode 
$ kubectl patch ds -n kube-system kube-proxy -p '{"spec":{"template":{"spec":{"nodeSelector":{"non-calico": "true"}}}}}'

# IPIP mode false 
$ ./calicoctl patch felixconfiguration default --patch='{"spec": {"bpfEnabled": true}}'

# DSR mode
$ ./calicoctl patch felixconfiguration default --patch='{"spec": {"bpfExternalServiceMode": "DSR"}}'

# Check Calico Mode
./calicoctl get ippool -owide

# Check IPTables Chain
$ sudo iptables -t nat -S


아티클이 유용했나요?

훌륭합니다!

피드백을 제공해 주셔서 감사합니다.

도움이 되지 못해 죄송합니다!

피드백을 제공해 주셔서 감사합니다.

아티클을 개선할 수 있는 방법을 알려주세요!

최소 하나의 이유를 선택하세요
CAPTCHA 확인이 필요합니다.

피드백 전송

소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.

02-558-8300