ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Cilium on K3s 安装指南:从零搭建基于 eBPF 的高可用 Kubernetes 集群

Cilium on K3s 安装指南:从零搭建基于 eBPF 的高可用 Kubernetes 集群 Cilium on K3s 安装指南从零搭建基于 eBPF 的高可用 Kubernetes 集群【免费下载链接】ciliumeBPF-based Networking, Security, and Observability项目地址: https://gitcode.com/GitHub_Trending/ci/ciliumK3s 是一款面向生产环境设计的高可用、经认证的 Kubernetes 发行版特别适合无人值守、资源受限的远程环境以及 IoT 设备场景。本文以Documentation/installation/k3s.rst为骨架完整演示如何在 K3s 集群上安装 Cilium用基于 eBPF 的数据面替换默认的 Flannel CNI 与内置网络策略执行器并给出多节点 Agent 扩展、集群访问配置、安装验证与连通性测试的完整可运行步骤。读完本文你将掌握在单机与多节点 K3s 集群上部署 Cilium、调整 Pod CIDR 以匹配 K3s 默认网段、以及通过cilium status与cilium connectivity test验证安装质量的完整实战技能。适用前提Cilium 目前支持 amd64 与 arm64 两种架构本文命令适用于这两种架构的 K3s 集群。K3s 默认配置概览在开始安装前先明确 Cilium 在 K3s 上运行时采用的默认数据面组合见 requirements-k3s.rstDatapath数据面IPAMIP 地址管理Datastore存储后端Encapsulation封装模式Cluster PoolKubernetes CRD也就是说在 K3s 上部署时Cilium 默认启用隧道封装VXLAN 等数据面、使用 Cluster Pool IPAM 从指定 CIDR 中为节点分配 Pod 网段并以 Kubernetes CRD 作为状态存储后端无需外部 etcd。这套组合与 K3s 默认的 Pod CIDR10.42.0.0/16配合良好安装时只需显式指定该网段即可。第一步安装 K3s Master 节点安装 Cilium 的前提是集群内不存在默认 CNI 插件与内置网络策略执行器。K3s 默认内置 Flannel CNI 和基于 Kube Policy 的 network policy 组件必须全部关闭才能把网络职责完整交给 Cilium。在 Master 节点执行curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC--flannel-backendnone --disable-network-policy sh -参数说明--flannel-backendnone禁用 K3s 默认的 Flannel CNICilium 将作为唯一的 CNI 插件接管 Pod 网络--disable-network-policy禁用 K3s 内置的网络策略执行组件Kube Policy网络策略由 Cilium 的 eBPF 数据面实现。kube-proxy-free 模式如果你打算运行 Cilium 的 kube-proxy 替代模式Kubernetes Without kube-proxy即用 Cilium 完全替代 kube-proxy 的 Service 负载均衡能力还需在上述安装命令中追加--disable-kube-proxy选项。该模式依赖 Cilium 的 socket-LB 特性详见 kubeproxy-free.rst。注意kube-proxy 替代与 Cilium 依赖的 socket-LB 能力需要在 eBPF 主机路由等场景下协同工作启用前建议先阅读该文档确认你的内核与集群条件。第二步可选安装 Agent 节点并加入集群K3s 既可以单机独立运行也可以组成多节点集群——后者非常适合在本地测试多节点数据路径如跨节点 Pod 通信、Service 负载均衡等。Agent 节点通过 node-token 加入 Master 节点token 存放于 Master 节点的/var/lib/rancher/k3s/server/node-token。在 Agent 节点上执行如下命令将${MASTER_IP}替换为 Master 节点的 IP${NODE_TOKEN}替换为上面读取到的 tokencurl -sfL https://get.k3s.io | K3S_URLhttps://${MASTER_IP}:6443 K3S_TOKEN${NODE_TOKEN} sh -若安装过程中遇到问题可参考 Kubernetes 网络故障排查文档对应troubleshooting_k8s章节或在 Cilium Slack 社区寻求帮助。同时请对照 Kubernetes 集群要求文档对应k8s_requirements章节确认集群的内核、kubelet 参数等配置满足 Cilium 的运行条件例如内核版本对 eBPF 特性的支持、bpffs挂载等要求。第三步配置集群访问kubeconfig后续所有cilium命令都需要能够访问集群。K3s 的 kubeconfig 位于 Master 节点的/etc/rancher/k3s/k3s.yaml将其通过环境变量暴露给 Cilium CLIexport KUBECONFIG/etc/rancher/k3s/k3s.yaml设置后cilium命令以及kubectl即可读取该 kubeconfig 与集群 API Server 通信。第四步安装 Cilium CLICilium CLI 是安装、检查 Cilium 状态、启停 Hubble/ClusterMesh 等功能的统一入口。按照 cli-download.rst 的说明安装最新版Linuxamd64/arm64 自适应CILIUM_CLI_VERSION$(curl -s https://raw.githubusercontent.com/cilium/cilium-cli/main/stable.txt) CLI_ARCHamd64 if [ $(uname -m) aarch64 ]; then CLI_ARCHarm64; fi curl -L --fail --remote-name-all https://github.com/cilium/cilium-cli/releases/download/${CILIUM_CLI_VERSION}/cilium-linux-${CLI_ARCH}.tar.gz{,.sha256sum} sha256sum --check cilium-linux-${CLI_ARCH}.tar.gz.sha256sum sudo tar xzvfC cilium-linux-${CLI_ARCH}.tar.gz /usr/local/bin rm cilium-linux-${CLI_ARCH}.tar.gz{,.sha256sum}macOSamd64/arm64 自适应CILIUM_CLI_VERSION$(curl -s https://raw.githubusercontent.com/cilium/cilium-cli/main/stable.txt) CLI_ARCHamd64 if [ $(uname -m) arm64 ]; then CLI_ARCHarm64; fi curl -L --fail --remote-name-all https://github.com/cilium/cilium-cli/releases/download/${CILIUM_CLI_VERSION}/cilium-darwin-${CLI_ARCH}.tar.gz{,.sha256sum} shasum -a 256 -c cilium-darwin-${CLI_ARCH}.tar.gz.sha256sum sudo tar xzvfC cilium-darwin-${CLI_ARCH}.tar.gz /usr/local/bin rm cilium-darwin-${CLI_ARCH}.tar.gz{,.sha256sum}以上流程包含下载、校验和sha256校验、解压安装与清理四个步骤。若你使用当前仓库开发版1.21.0-dev见 VERSION进行本地构建需要 clone 仓库后让 Cilium CLI 从 main 分支读取最新的未发布 Helm chart。第五步安装 Cilium关键点K3s 默认的 Pod CIDR 是10.42.0.0/16因此安装时必须通过--set显式覆盖 Cilium 的 Cluster Pool Pod CIDR使其与 K3s 的默认网段一致cilium install --version chart-version --setipam.operator.clusterPoolIPv4PodCIDRList10.42.0.0/16其中chart-version对应你要安装的 Cilium Helm chart 版本例如本文档默认渲染的版本号。参数含义ipam.operator.clusterPoolIPv4PodCIDRListCluster Pool IPAM 模式下Cilium Operator 分配给各节点 Pod 子网所使用的 IPv4 CIDR 列表。根据 helm-values.rst 的说明其默认值为[10.0.0.0/8]类型为 list配套的ipam.operator.clusterPoolIPv4MaskSize默认24控制每个节点分到的掩码大小即每个节点可容纳 256 个 Pod 地址。在 K3s 上必须改为10.42.0.0/16否则 Cilium 的 IPAM 网段与 K3s 预设网段不一致会导致 Pod 地址冲突或路由异常。若你启用了 IPv6对应的参数为ipam.operator.clusterPoolIPv6PodCIDRList默认[fd00::/104]与ipam.operator.clusterPoolIPv6MaskSize默认120。Rancher Desktop 用户如果使用 Rancher Desktop 运行 K3s可能需要额外覆盖 CNI 可执行文件路径追加以下 flag--set cni.binPath/usr/libexec/cnicilium install实际上是在后台以 Helm chart 方式渲染并应用 Cilium 的全部组件DaemonSetcilium、Deploymentcilium-operator、CRD 等具体安装逻辑可参考 cilium-cli 的 install 目录。第六步验证安装与集群连通性1. 检查 Cilium 状态运行以下命令等待 Cilium 就绪并打印状态摘要cilium status --wait预期输出形态如下版本号与副本数以实际安装为准/¯¯\ /¯¯\__/¯¯\ Cilium: OK \__/¯¯\__/ Operator: OK /¯¯\__/¯¯\ Hubble: disabled \__/¯¯\__/ ClusterMesh: disabled \__/ DaemonSet cilium Desired: 2, Ready: 2/2, Available: 2/2 Deployment cilium-operator Desired: 2, Ready: 2/2, Available: 2/2 Containers: cilium-operator Running: 2 cilium Running: 2 Image versions cilium quay.io/cilium/cilium:v1.9.5: 2 cilium-operator quay.io/cilium/operator-generic:v1.9.5: 2--wait会阻塞直到所有组件就绪输出中Cilium: OK与Operator: OK表明数据面与控制面均健康DaemonSet/Deployment 的Ready与Available计数可确认每个节点上的 Agent 都在正常运行。2. 运行连通性测试cilium connectivity test该命令会在集群中临时创建测试命名空间与一组测试 Pod覆盖 Pod-to-Pod、Pod-to-Service、DNS、策略等多项检查最终打印测试报告ℹ️ Monitor aggregation detected, will skip some flow validation steps ✨ [k8s-cluster] Creating namespace for connectivity check... (...) --------------------------------------------------------------------------------------------------------------------- Test Report --------------------------------------------------------------------------------------------------------------------- ✅ 69/69 tests successful (0 warnings)当所有测试成功通过即表示你的 K3s Cilium 集群具备完整的网络连通性。常见问题too many open files连通性测试可能因某个 Pod 中打开文件过多而部署失败。若遇到此报错可调高宿主机上的inotify资源限制后重试。这也是 K3s 等轻量集群在容器并发部署时常遇到的内核参数问题。下一步启用 Hubble 可观测性与集群网格安装并验证完成后可继续探索以下能力详见 next-steps.rstHubble 安装与启用hubble_setup为 Cilium 增加基于 eBPF 的 Service 网格/网络可观测性Hubble CLI 使用hubble_cli通过命令行实时查看流量、策略命中与丢弃事件Hubble UI 可视化hubble_ui以图形化界面展示集群服务依赖图HTTP 安全策略入门gs_http编写并下发 L7 HTTP 安全策略ClusterMesh 集群网格clustermesh将多个 K3s 集群互联实现跨集群 Service 发现与负载均衡。小结本文从 K3s 集群的初始化禁用 Flannel 与内置网络策略、Agent 节点加入、kubeconfig 配置到 Cilium CLI 安装、Pod CIDR 对齐与安装验证形成了一条完整可复现的部署链路。核心要点可归纳为三条安装 K3s 时必须使用--flannel-backendnone --disable-network-policy把网络能力完全让渡给 Cilium安装 Cilium 时必须用--setipam.operator.clusterPoolIPv4PodCIDRList10.42.0.0/16匹配 K3s 默认 Pod CIDR部署完成后务必用cilium status --wait与cilium connectivity test双重验证确保数据面与控制面都处于健康状态。按此流程操作你即可获得一个运行在 K3s 之上、具备 Cilium 全部 eBPF 网络、安全与可观测性能力的生产级 Kubernetes 集群。【免费下载链接】ciliumeBPF-based Networking, Security, and Observability项目地址: https://gitcode.com/GitHub_Trending/ci/cilium创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表