Kubernetes 集群尝试基于 Calico 启用 eBPF

前提条件:Ubuntu 版本至少 20.04,确认 BPF 文件系统是否已挂载

mount | grep "/sys/fs/bpf"
none on /sys/fs/bpf type bpf (rw,nosuid,nodev,noexec,relatime,mode=700)

创建 ConfigMap,配置 api-server 的主机名与端口号,calico 通过这个 ConfinMap 获取 api-server 的地址

kubectl create cm kubernetes-services-endpoint -n kube-system
kind: ConfigMap
apiVersion: v1
metadata:
  name: kubernetes-services-endpoint
  namespace: kube-system
data:
  KUBERNETES_SERVICE_HOST: "k8s-api"
  KUBERNETES_SERVICE_PORT: "6443"

如果不知道 api-server 的地址,可以通过下面的命令获取

kubectl get configmap -n kube-system kube-proxy -o yaml | grep server

重新部署 calico pod

kubectl delete pod -n kube-system -l k8s-app=calico-node
kubectl delete pod -n kube-system -l k8s-app=calico-kube-controllers

检查 calico pod 是否运行正常

kubectl get pods -n kube-system | grep calico

禁用 kube-proxy

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

启用 eBPF

calicoctl patch felixconfiguration default --patch='{"spec": {"bpfEnabled": true}}'

确认 eBPF 是否已启用

在 node 服务器上用 tc 命令检查 eBPF 是否正常启用

出现 clsact 说明已经启用。

但问题依旧,NodePort 依然无法正常工作。

Original: https://www.cnblogs.com/dudu/p/16266354.html
Author: dudu
Title: Kubernetes 集群尝试基于 Calico 启用 eBPF

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/546264/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球