Cilium v1.10.6 安装部署

网友投稿 422 2022-09-11

Cilium v1.10.6 安装部署

先决条件

1.系统要求

​​系统要求​​

​​host-routing 内核要求​​

Requirements:

Kernel >= 5.10Direct-routing configuration or tunnelingeBPF-based kube-proxy replacementeBPF-based masquerading

总结建议:

采用 Ubuntu 20.04 Desktop 版本,kernel = 5.13.0安装 k8s 时,使用​​--skip-phases=addon/kube-proxy​​ 选项来跳过 kube-proxy 安装默认关闭防火墙,​​ufw status​​ 进行确认是否为 disable 状态默认使用kubeadm部署集群,可以忽略​​Key-Value store​​ etcd >= 3.1.0 or consul >= 0.6.4

2. kubeadm 部署 k8s 1.23.5

kubeadm 部署 kubernetes 之前需要跳过 kube-proxy 的安装

​​Without kube-proxy​​

具体部署步骤:​​kubeadm 部署 k8s​​

kubeadm init --image-repository=registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16 --kubernetes-version=1.23.5 --apiserver-advertise-address=$(hostname -i) --skip-phases=addon/kube-proxy

cilium 部署

1.预先安装 cilium-cli 工具

​​cilium-cli​​

2.使用 Helm 部署 cilium

添加 helm repo 仓库

helm repo add cilium repo update

下载 cilium 1.10.6 包至本地,并修改如下内容

helm pull cilium/cilium --version 1.10.6tar -xf cilium-1.10.6.tgz# 更换镜像下载地址为 docker hub 镜像下载站sed -i "s/quay.io/docker.io/g" cilium/values.yaml

通过 Helm template 渲染 yaml 进行二次更改(debug 模式需要更改)

helm template --namespace kube-system cilium/ > 1.10.6.yaml

添加 ​​debug-verbose​​ 参数为 datapath 和修改 ​​monitor-aggregation​​ 参数为 none

如果就像一次进入到 BPF 的模式,则需要多添加一行参数,在 debug 或者 monitor-aggregation 下添加即可,如果未添加也无妨,下边有步骤会进行添加   enable-bpf-masquerade: "true"

部署 cilium

kubectl apply -f 1.10.6.yaml

使用 cilium 命令查看部署情况

# 进入任意一个 cilium 的 pod 中kubectl exec -it cilium-2md6v -- bash# 查看 cilium 的状态# 发现为 Legacy ,说明配置还是有问题# 依旧使用 IPTables root@master:~/test# kubectl exec -it cilium-2md6v -- bashDefaulted container "cilium-agent" out of: cilium-agent, mount-cgroup (init), clean-cilium-state (init)root@master:/home/cilium# cilium statusKVStore: Ok DisabledKubernetes: Ok 1.23 (v1.23.5) [linux/amd64]Kubernetes APIs: ["cilium/v2::CiliumClusterwideNetworkPolicy", "cilium/v2::CiliumEndpoint", "cilium/v2::CiliumNetworkPolicy", "cilium/v2::CiliumNode", "core/v1::Namespace", "core/v1::Node", "core/v1::Pods", "core/v1::Service", "discovery/v1::EndpointSlice", "networking.k8s.io/v1::NetworkPolicy"]KubeProxyReplacement: Strict [ens33 192.168.0.110 (Direct Routing)]Cilium: Ok 1.10.6 (v1.10.6-17d3d15)NodeMonitor: Listening for events on 128 CPUs with 64x4096 of shared memoryCilium health daemon: Ok IPAM: IPv4: 4/254 allocated from 10.0.2.0/24, BandwidthManager: DisabledHost Routing: LegacyMasquerading: IPTables [IPv4: Enabled, IPv6: Disabled]Controller Status: 27/27 healthyProxy Status: OK, ip 10.0.2.233, 0 redirects active on ports 10000-20000Hubble: Ok Current/Max Flows: 4095/4095 (100.00%), Flows/s: 37.29 Metrics: DisabledEncryption: DisabledCluster health: 3/3 reachable (2022-04-28T06:10:11Z)# 通过 iptables-save 查看到有许多 cilium 的链,这说明默认还是用 iptables 做的转发,并没有使用 BPF 的特性

再次修改 cilium 配置

# 通过 Falling 关键字,查看是否降级root@master:~# kubectl logs cilium-2md6v | grep -i falllevel=info msg=" --enable-xt-socket-fallback='true'" subsys=daemonlevel=debug msg="Skipping Leases support fallback discovery" subsys=k8slevel=info msg="BPF host routing requires enable-bpf-masquerade. Falling back to legacy host routing (enable-host-legacy-routing=true)." subsys=daemon

monitor-aggregation: "none"  enable-bpf-masquerade: "true"

# 修改完以后,需要先删除然后重新部署 ciliumkubectl delete -f 1.10.6.yamlkubectl apply -f 1.10.6.yaml# 查看任意一个 cilium 是否还有 Falling 的日志# kubectl logs cilium-fxdkr | grep -i falllevel=info msg=" --enable-xt-socket-fallback='true'" subsys=daemonlevel=debug msg="Skipping Leases support fallback discovery" subsys=k8s# 确认 cilium 是否使用 bpf 进行源目的地址转换# kubectl exec -it cilium-fxdkr -- bashroot@node-2:/home/cilium# cilium status

验证 BPF

在master 节点查看有多少个 pod 被 cilium 管理

cilium status

# 创建 deploymentkubectl create deploy --name test-nginx --image=nginx:latest --replicas=1# 创建 svc kubectl expose deployment test-nginx --port=80 --target-port=80 --type=NodePor

iptables-save | grep "test-nginx"

部署完毕

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:全媒派:《谭谈交通》:笑点密集的民生节目里,尽是无比真实的人生!
下一篇:kubeadm init cannot find network namespace 错误
相关文章

 发表评论

暂时没有评论,来抢沙发吧~