들어가며
- 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 -SeBPF 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아티클이 유용했나요?
훌륭합니다!
피드백을 제공해 주셔서 감사합니다.
도움이 되지 못해 죄송합니다!
피드백을 제공해 주셔서 감사합니다.
피드백 전송
소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.