Cilium Helm 安装完全指南:OCI Registry 与多平台 Kubernetes 集群实战
发布时间:2026/9/14 7:52:54 作者:尧图编辑部 阅读量:1,286

Cilium Helm 安装完全指南OCI Registry 与多平台 Kubernetes 集群实战【免费下载链接】ciliumeBPF-based Networking, Security, and Observability项目地址: https://gitcode.com/GitHub_Trending/ci/cilium本指南以 Cilium 官方文档 k8s-install-helm.rst 为骨架讲解如何在 Kubernetes 集群中通过 Helm 安装 eBPF-based 网络、安全与可观测性组件 Cilium。你将掌握两种 Helm 安装方式OCI Registry 与传统仓库、多平台GKE/AKS/EKS/k3s/Talos Linux 等的专属配置、升级与迁移流程以及安装后的验证与故障排查方法。读完即可在真实集群中完成一次从零到可用的 Cilium 部署。Cilium 是一个基于 eBPF 的 CNI 插件提供网络、安全和可观测性能力。与一键式快速安装cilium install不同Helm 安装要求你根据自身环境手动选择最佳的数据路径Datapath与 IPAM 模式因而更可控、更适合生产环境。当前仓库中的 Helm Chart 位于 install/kubernetes/cilium其 Chart.yaml 声明了kubeVersion: 1.21.0-0即 Chart 本身要求 Kubernetes 1.21 及以上版本。两种 Helm 安装方式总览Cilium 可以通过 Helm 以两种方式安装OCI Registry推荐——直接从 OCI 容器镜像仓库安装无需添加 Helm 仓库传统 Helm 仓库——使用经典的https://helm.cilium.io/仓库地址。两种方式均受官方完全支持你可以根据自己的工具链与合规要求任选其一。使用 OCI Registry推荐Cilium 的 Helm Charts 直接发布在 OCI 容器镜像仓库中省去了独立的 Helm 仓库管理。提示无需执行helm repo add直接用oci://quay.io/cilium/charts/cilium引用 Chart 即可。OCI 方式的优势签名 Chart——所有 Chart 均使用 cosign 签名可验证来源更简单的配置——无需配置仓库摘要固定Digest pinning——可通过 SHA 引用精确的 Chart 版本保证可复现性统一工具链——镜像与 Chart 共用同一套镜像仓库基础设施。OCI 快速开始helm install cilium oci://quay.io/cilium/charts/cilium \ --version VERSION \ --namespace kube-system将VERSION替换为目标版本例如1.15.0请注意 Chart 的 SemVer 版本号不带v前缀。查找可用版本OCI 仓库不支持helm search可以通过以下方式找到可用版本浏览 Quay.io 的 tags 列表使用命令行工具crane查询crane ls quay.io/cilium/charts/cilium查看 Cilium 的 GitHub releases 页面。重要版本号格式。Helm Chart 版本遵循 SemVer 2.0不带v前缀如1.15.0而容器镜像 tag带v如v1.15.0。执行 Helm 命令时请使用不带v的版本号这也是下文 Troubleshooting 中 chart not found 错误最常见的诱因。校验 Chart 签名所有 Chart 均使用 cosign 签名安装前可以验证cosign verify \ --certificate-identity-regexphttps://github.com/cilium/cilium/.* \ --certificate-oidc-issuerhttps://token.actions.githubusercontent.com \ quay.io/cilium/charts/cilium:VERSIONcosign可通过 Sigstore 官方安装文档安装。命令中的两个参数分别匹配签发证书的 identity 与 OIDC issuer确认 Chart 由 Cilium 官方 CIGitHub Actions签名。按摘要Digest固定版本为保证部署的可复现性可以放弃 tag 而改用 digest 固定 Chart# 先获取 digest helm pull oci://quay.io/cilium/charts/cilium --version VERSION # 用 digest 安装 helm install cilium oci://quay.io/cilium/charts/ciliumsha256:DIGEST \ --namespace kube-system这种方式保证每次拉取到完全相同的 Chart 内容。使用传统 Helm 仓库如果偏好传统方式可以添加官方 Helm 仓库后安装具体步骤见 k8s-install-download-release.rsthelm repo add cilium https://helm.cilium.io/OCI 与传统仓库对比特性OCI Registry传统仓库安装前配置无需任何配置需helm repo addChart 签名支持cosign不支持Digest 固定支持有限支持离线Air-gapped安装标准 OCI 镜像同步工具即可需单独同步 Chart 镜像两种方式均保持完全支持选择取决于你的部署与合规场景。通用前置条件在开始安装前需要满足以下条件详见 requirements-generic.rstKubernetes 必须配置为使用 CNI参见 Kubernetes 官方 Network Plugin RequirementsLinux 内核版本 ≥ 5.10。更详细的系统要求可参考 Cilium 文档中的 system requirements 章节。在各主流 Kubernetes 平台上安装官方文档为不同平台提供了 tabs 化的专属安装指引每个平台都有理想的默认配置组合Datapath / IPAM / Datastore。Datastore 统一使用Kubernetes CRD即 kvstore 存于 Kubernetes 自定义资源而非外部 etcd。通用Generic集群适用于任意 Kubernetes 集群的通用安装使用默认配置DatapathIPAMDatastoreEncapsulation封装Cluster PoolKubernetes CRD安装 Ciliumhelm install cilium oci://quay.io/cilium/charts/cilium \ --version VERSION \ --namespace kube-systemGKEGoogle Kubernetes EngineGKE 平台的默认配置组合DatapathIPAMDatastoreDirect Routing直接路由Kubernetes PodCIDRKubernetes CRD**前置要求**创建集群时应使用--node-taints选项打上node.cilium.io/agent-not-readytrue:NoExecute污点taint。关于污点效应与未托管 Pod 的深入讨论请参阅 taints.rst。安装步骤先提取 Cluster CIDR 以启用 native routingNATIVE_CIDR$(gcloud container clusters describe ${NAME} --zone ${ZONE} --format value(clusterIpv4Cidr)) echo $NATIVE_CIDR然后通过 Helm 部署helm install cilium oci://quay.io/cilium/charts/cilium \ --version VERSION \ --namespace kube-system \ --set nodeinit.enabledtrue \ --set nodeinit.reconfigureKubelettrue \ --set nodeinit.removeCbrBridgetrue \ --set cni.binPath/home/kubernetes/bin \ --set gke.enabledtrue \ --set ipam.modekubernetes \ --set ipv4NativeRoutingCIDR$NATIVE_CIDRNodeInit DaemonSet 在节点加入集群时是必需的它会执行以下动作重新配置 kubelet 运行在 CNI 模式挂载 eBPF 文件系统。从仓库源码看nodeinit 相关的配置项定义在 Helm Chart 的 values.yamlnodeinit键对应的启动脚本模板位于 install/kubernetes/cilium/files/nodeinitstartup.bash、prestop.bash实际落地为cilium-nodeinitDaemonSet模板见 templates/cilium-nodeinit。AKSAzure Kubernetes ServiceAKS 平台的默认配置组合DatapathIPAMDatastoreEncapsulationCluster PoolKubernetes CRD**前置要求**在 AKS 上Cilium 有两种部署方式管理员通过Bring your own CNIBYOCNI手动安装或由 AKS 通过Azure CNI Powered by Cilium自动安装。本指南的 Helm 安装方式仅适用于 BYOCNI 集群不支持 Azure CNI Powered by Cilium 集群后者请参考 AKS 专属安装指南。此外AKS 集群必须以--network-plugin none创建建议为 Cluster Pool IPAM 设置一个与 AKS 默认 Service CIDR 不重叠的 Pod CIDR例如--helm-set ipam.operator.clusterPoolIPv4PodCIDRList192.168.0.0/16。安装 Ciliumhelm install cilium oci://quay.io/cilium/charts/cilium \ --version VERSION \ --namespace kube-system \ --set aksbyocni.enabledtrueEKSAmazon Elastic Kubernetes ServiceEKS 平台的默认配置组合DatapathIPAMDatastoreDirect Routing (ENI)AWS ENIKubernetes CRD**前置要求**EKS Managed Nodegroups 需要正确打污点确保应用 Pod 在 Cilium 就绪前不会被调度。以下是使用 eksctlClusterConfig文件创建带污点节点组的示例apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig # ... managedNodeGroups: - name: ng-1 # ... # taint nodes so that application pods are # not scheduled/executed until Cilium is deployed. taints: - key: node.cilium.io/agent-not-ready value: true effect: NoExecutePatch VPC CNIaws-node DaemonSetCilium 将接管 ENI 管理因此必须 patchaws-nodeDaemonSet 以避免行为冲突kubectl -n kube-system patch daemonset aws-node --typestrategic -p{spec:{template:{spec:{nodeSelector:{io.cilium/aws-node-enabled:true}}}}}安装 Ciliumhelm install cilium oci://quay.io/cilium/charts/cilium \ --version VERSION \ --namespace kube-system \ --set eni.enabledtrue此命令设置eni.enabledtrue意味着 Cilium 将为每个 Pod 分配一个完全可路由的 AWS ENI IP 地址行为类似 Amazon VPC CNI 插件。该模式依赖 EC2 API 的一组权限。EKS 上的 Overlay 模式Cilium 也可以运行在 overlay 模式下为 Pod 提供非 VPC 可路由 IP从而突破每个工作节点受 ENI 数量限制的 Pod 上限。但有以下注意事项Pod 到集群外资源如 VPC 内的 VM 或 AWS 托管服务的流量会被 Cilium 伪装SNAT为工作节点的 VPC IPEKS API Server 无法将数据包路由到 overlay 网络因此任何需要被访问的 webhook 必须使用 host network或通过 Service / Ingress 暴露。配置 overlay 模式的步骤在 Helm 命令中去掉eni.enabledtrue这一行即使用 overlay 路由模式Helm 默认清理由 VPC CNI 添加的 iptables 规则iptables -t nat -F AWS-SNAT-CHAIN-0 \ iptables -t nat -F AWS-SNAT-CHAIN-1 \ iptables -t nat -F AWS-CONNMARK-CHAIN-0 \ iptables -t nat -F AWS-CONNMARK-CHAIN-1**限制**AWS ENI 集成目前仅支持 IPv4。如需 IPv6请使用 ENI 之外的数据路径 / IPAM 模式。OpenShiftOpenShift 的默认配置组合DatapathIPAMDatastoreEncapsulationCluster PoolKubernetes CRD前置要求为OpenShift 4.x。Cilium 是 OpenShift 认证的 CNI 插件最佳实践是在使用 OpenShift installer 创建集群时一并安装具体请参考 OpenShift/OKD 专属安装指南k8s-install-openshift-okd.rst。RKE对于独立的 RKE1 / RKE2 集群请遵循 RKE 专属安装指南k8s-install-rke.rst如果集群由 Rancher 管理非独立部署则遵循 Rancher 托管 RKE 集群的安装指南。k3sk3s 的默认配置组合DatapathIPAMDatastoreEncapsulationCluster PoolKubernetes CRD**前置要求**安装 k3s 时需要禁用默认 CNI 插件与内置网络策略执行器以便在其上安装 Ciliumcurl -sfL https://get.k3s.io | INSTALL_K3S_EXEC--flannel-backendnone --disable-network-policy sh -后续步骤中 Cilium CLI 需要访问集群请通过KUBECONFIG环境变量指向 k3s 的 kubeconfigexport KUBECONFIG/etc/rancher/k3s/k3s.yaml安装 Ciliumhelm install cilium oci://quay.io/cilium/charts/cilium \ --version VERSION \ --namespace $CILIUM_NAMESPACE \ --set operator.replicas1Rancher Desktop在 Rancher Desktop 上安装 Cilium需要先禁用默认 CNI 并用 Cilium 替换。通过 YAML 配置文件完成配置参考 rancher-desktop-configure.rst首先以containerd运行时启动 Rancher Desktop并创建 override.yamlenv: # needed for cilium INSTALL_K3S_EXEC: --flannel-backendnone --disable-network-policy provision: # needs root to mount - mode: system script: | #!/bin/sh set -e # needed for cilium mount bpffs -t bpf /sys/fs/bpf mount --make-shared /sys/fs/bpf mkdir -p /run/cilium/cgroupv2 mount -t cgroup2 none /run/cilium/cgroupv2 mount --make-shared /run/cilium/cgroupv2/该脚本为 Cilium 挂载了 eBPF 文件系统bpffs与 cgroupv2并将其设为共享挂载供容器继承使用。将文件移动到 Rancher Desktop 的lima/_config目录# Linux cp override.yaml ~/.local/share/rancher-desktop/lima/_config/override.yaml # macOS cp override.yaml ~/Library/Application\ Support/rancher-desktop/lima/_config/override.yaml最后打开 Rancher Desktop UI进入 Troubleshooting 面板点击 Reset Kubernetes。几分钟后 Rancher Desktop 会重启并准备好安装 Cilium。安装 Ciliumhelm install cilium oci://quay.io/cilium/charts/cilium \ --version VERSION \ --namespace $CILIUM_NAMESPACE \ --set operator.replicas1 \ --set cni.binPath/usr/libexec/cniTalos Linux在 Talos Linux 上安装 Cilium 有若干前置条件与限制详见 k8s-install-talos-linux.rstCilium 的 Talos 支持仅针对 Talos 1.5.0版本做过测试由于 Talos 不允许 Kubernetes 工作负载加载内核模块需要从 Cilium 默认 capabilities 列表中移除SYS_MODULETalos 的 Forwarding kube-dns to Host DNS 功能Talos 1.8 默认启用与 Cilium 的 eBPF Host Routing 不兼容必须设置bpf.hostLegacyRoutingtrue否则 DNS 无法工作。**配置 Talos Linux**安装前需要调整两个 Talos Kubernetes 配置确保未部署其他 CNIcluster.network.cni.name: none并禁用 Kube-Proxycluster.proxy.disabled: true。准备patch.yamlcluster: network: cni: name: none proxy: disabled: true生成 Talos 集群配置talosctl gen config \ my-cluster https://mycluster.local:6443 \ --config-patch patch.yaml**安装 Cilium**启用 Kube-Proxy replacement 需要配置k8sServiceHost和k8sServicePort指向 Kubernetes API。Talos 提供 KubePrism 功能可在每个节点通过 host networking 以localhost:7445访问 API无需外部负载均衡器helm install cilium oci://quay.io/cilium/charts/cilium \ --version VERSION \ --namespace $CILIUM_NAMESPACE \ --set ipam.modekubernetes \ --set kubeProxyReplacementtrue \ --set securityContext.capabilities.ciliumAgent{CHOWN,KILL,NET_ADMIN,NET_RAW,IPC_LOCK,SYS_ADMIN,SYS_RESOURCE,DAC_OVERRIDE,FOWNER,SETGID,SETUID} \ --set securityContext.capabilities.cleanCiliumState{NET_ADMIN,SYS_ADMIN,SYS_RESOURCE} \ --set cgroup.autoMount.enabledfalse \ --set cgroup.hostRoot/sys/fs/cgroup \ --set k8sServiceHostlocalhost \ --set k8sServicePort7445其中去掉了SYS_MODULE权限以适配 Talos 限制并复用了 Talos 已提供的 cgroupv2 挂载。阿里云 ACKAlibaba Cloud ACK在 ACK 上安装 Cilium 需要执行额外步骤详见 alibabacloud-eni.rst。**禁用 ACK CNI**Cilium 将接管 ENI 管理因此需删除可能冲突的 DaemonSetkube-flannel-ds、terway、terway-eni、terway-eniipkubectl -n kube-system delete daemonset terway注意如果使用带 Flannel 的 ACK 集群Cloud Controller ManagerCCM会在 VPC 中创建 Pod CIDR 路由托管集群无法禁用该行为建议考虑新建集群。随后删除terway*相关 CRDkubectl delete crd \ ciliumclusterwidenetworkpolicies.cilium.io \ ciliumendpoints.cilium.io \ ciliumidentities.cilium.io \ ciliumnetworkpolicies.cilium.io \ ciliumnodes.cilium.io \ bgpconfigurations.crd.projectcalico.org \ clusterinformations.crd.projectcalico.org \ felixconfigurations.crd.projectcalico.org \ globalnetworkpolicies.crd.projectcalico.org \ globalnetworksets.crd.projectcalico.org \ hostendpoints.crd.projectcalico.org \ ippools.crd.projectcalico.org \ networkpolicies.crd.projectcalico.org**创建 AlibabaCloud Secrets**安装前需要在集群中创建携带阿里云令牌的 Secret供 Cilium 调用阿里云 API 实现 ToGroups 策略。Access Key 需要具备以下 RAM 权限{ Version: 1, Statement: [{ Action: [ ecs:CreateNetworkInterface, ecs:DescribeNetworkInterfaces, ecs:AttachNetworkInterface, ecs:DetachNetworkInterface, ecs:DeleteNetworkInterface, ecs:DescribeInstanceAttribute, ecs:DescribeInstanceTypes, ecs:AssignPrivateIpAddresses, ecs:UnassignPrivateIpAddresses, ecs:DescribeInstances, ecs:DescribeSecurityGroups, ecs:ListTagResources ], Resource: [ * ], Effect: Allow }, { Action: [ vpc:DescribeVSwitches, vpc:ListTagResources, vpc:DescribeVpcs ], Resource: [ * ], Effect: Allow } ] }创建 Secret各空字符串需替换为 base64 编码后的真实值apiVersion: v1 kind: Secret metadata: name: cilium-alibabacloud namespace: kube-system type: Opaque data: ALIBABA_CLOUD_ACCESS_KEY_ID: ALIBABA_CLOUD_ACCESS_KEY_SECRET: 可以使用base64命令生成值$ echo -n access_key | base64 YWNjZXNzX2tleQ然后创建该 Secret$ kubectl create -f cilium-secret.yaml安装 Ciliumhelm install cilium oci://quay.io/cilium/charts/cilium \ --version VERSION \ --namespace kube-system \ --set alibabacloud.enabledtrue \ --set ipam.modealibabacloud \ --set enableIPv4Masqueradefalse \ --set routingModenative注意必须确保 Pod ENIeth1、eth2……关联的安全组允许出站流量离开 VPC。默认情况下Pod ENI 的安全组继承自主 ENIeth0。关于节点池污点与未托管 Pod 的说明在 GKE、EKS 等平台上安装时多个平台的安装步骤都提到了node.cilium.io/agent-not-ready污点详见 taints.rst其工作机制为集群管理员在未初始化的节点上放置特定污点阻止没有匹配 toleration 的 Pod 在该节点上被调度或运行Cilium 在节点上启动、完成初始化后移除该污点此后 Pod 开始在节点上调度运行其网络由 Cilium 管理如果 Cilium 暂时从节点上移除Operator 会重新施加该污点但仅使用 NoSchedule 效果。默认污点键为node.cilium.io/agent-not-ready可通过agent-not-ready-taint-key选项调整例如使用 Cluster Autoscaler 且无法配置其 flags 时需使用以ignore-taint.cluster-autoscaler.kubernetes.io/开头的键让 Cluster Autoscaler 在模拟调度时忽略它从而允许集群扩容。污点效果的选择需要权衡NoSchedulePod 在 Cilium 移除污点前不会被调度到节点。但若外部进程如重启重置了 CNI 配置已调度的 Pod 会在节点下次重启时与 Cilium 并发启动可能变成未托管NoExecutePod 在 Cilium 移除污点前不会被执行也不会被调度。外部进程如升级或例行操作重新施加污点时Pod 会被驱逐直到 Cilium 移除污点。官方文档在整个 Cilium 文档体系中推荐NoExecute因为它被认为是对用户影响最小的部署模式能最大程度避免未托管 Pod 的出现未托管可能导致流量丢弃等故障同时需在个别云厂商异常重新施加污点导致意外驱逐可能导致应用宕机之间做出权衡。升级 Cilium通过 OCI Registry 升级helm upgrade cilium oci://quay.io/cilium/charts/cilium \ --version NEW_VERSION \ --namespace kube-system从传统仓库迁移到 OCI如果你正在使用传统仓库https://helm.cilium.io/切换到 OCI 非常简单因为 Chart 内容完全一致helm upgrade cilium oci://quay.io/cilium/charts/cilium \ --version VERSION \ --namespace kube-system \ --reuse-values--reuse-values会保留你现有的配置。验证安装安装完成后可以通过 Cilium CLI 或纯 kubectl 两种方式验证详见 k8s-install-validate.rst。方式一使用 Cilium CLI安装 Cilium CLILinuxCILIUM_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}macOSCILIUM_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}其他平台请查看 cilium-cli 的 releases 页面。Cilium CLI 可以用于安装 Cilium、检查 Cilium 安装状态以及启用/禁用各种功能如 clustermesh、Hubble。其命令实现位于仓库的 cilium-cli 目录下。检查状态$ 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运行连通性测试$ cilium connectivity test ℹ️ Monitor aggregation detected, will skip some flow validation steps ✨ [k8s-cluster] Creating namespace for connectivity check... (...) --------------------------------------------------------------------------------------------------------------------- Test Report --------------------------------------------------------------------------------------------------------------------- ✅ 69/69 tests successful (0 warnings)注意连通性测试可能因某个 Pod 打开文件过多而部署失败。若遇到此错误可在宿主机上调高inotify资源限制。方式二使用 kubectl 手动验证观察组件启动$ kubectl -n kube-system get pods --watch NAME READY STATUS RESTARTS AGE cilium-operator-cb4578bc5-q52qk 0/1 Pending 0 8s cilium-s8w5m 0/1 PodInitializing 0 7s coredns-86c58d9df4-4g7dd 0/1 ContainerCreating 0 8m57s coredns-86c58d9df4-4l6b2 0/1 ContainerCreating 0 8m57s所有组件可能需要几分钟才能就绪cilium-operator-cb4578bc5-q52qk 1/1 Running 0 4m13s cilium-s8w5m 1/1 Running 0 4m12s coredns-86c58d9df4-4g7dd 1/1 Running 0 13m coredns-86c58d9df4-4l6b2 1/1 Running 0 13m部署 connectivity-check 测试 Pod建议为测试创建独立命名空间kubectl create ns cilium-test部署检查清单该清单位于仓库 examples/kubernetes/connectivity-check/connectivity-check.yaml另有 hostport、proxy、netpol-only、single-node 等变体可参考kubectl apply -n cilium-test -f https://raw.githubusercontent.com/cilium/cilium/v1.15.0/examples/kubernetes/connectivity-check/connectivity-check.yaml它会部署一系列 Deployment通过各种连通路径含/不含 Service 负载均衡以及多种 NetworkPolicy 组合互相连接。Pod 名称指示连通性变体就绪与存活探针指示测试成败$ kubectl get pods -n cilium-test NAME READY STATUS RESTARTS AGE echo-a-76c5d9bd76-q8d99 1/1 Running 0 66s echo-b-795c4b4f76-9wrrx 1/1 Running 0 66s echo-b-host-6b7fc94b7c-xtsff 1/1 Running 0 66s host-to-b-multi-node-clusterip-85476cd779-bpg4b 1/1 Running 0 66s host-to-b-multi-node-headless-dc6c44cb5-8jdz8 1/1 Running 0 65s pod-to-a-79546bc469-rl2qq 1/1 Running 0 66s pod-to-a-allowed-cnp-58b7f7fb8f-lkq7p 1/1 Running 0 66s pod-to-a-denied-cnp-6967cb6f7f-7h9fn 1/1 Running 0 66s pod-to-b-intra-node-nodeport-9b487cf89-6ptrt 1/1 Running 0 65s pod-to-b-multi-node-clusterip-7db5dfdcf7-jkjpw 1/1 Running 0 66s pod-to-b-multi-node-headless-7d44b85d69-mtscc 1/1 Running 0 66s pod-to-b-multi-node-nodeport-7ffc76db7c-rrw82 1/1 Running 0 65s pod-to-external-1111-d56f47579-d79dz 1/1 Running 0 66s pod-to-external-fqdn-allow-google-cnp-78986f4bcf-btjn7 1/1 Running 0 66s注意在单节点集群中检查多节点功能的 Pod 会一直停留在Pending状态这是预期行为因为这些 Pod 至少需要 2 个节点才能被调度。测试完成后清理命名空间kubectl delete ns cilium-test重启未托管的 Pod如果你创建集群时没有给节点打上node.cilium.io/agent-not-ready污点那么未托管的 Pod 需要手动重启。重启所有非 host-network 模式下已在运行的 Pod确保 Cilium 开始管理它们保证 Cilium 部署前就已存在的 Pod 拥有 Cilium 提供的网络连通性且 NetworkPolicy 对其生效$ kubectl get pods --all-namespaces -o custom-columnsNAMESPACE:.metadata.namespace,NAME:.metadata.name,HOSTNETWORK:.spec.hostNetwork --no-headerstrue | grep none | awk {print -n $1 $2} | xargs -L 1 -r kubectl delete pod pod event-exporter-v0.2.3-f9c896d75-cbvcz deleted pod fluentd-gcp-scaler-69d79984cb-nfwwk deleted pod heapster-v1.6.0-beta.1-56d5d5d87f-qw8pv deleted pod kube-dns-5f8689dbc9-2nzft deleted pod kube-dns-5f8689dbc9-j7x5f deleted pod kube-dns-autoscaler-76fcd5f658-22r72 deleted pod kube-state-metrics-7d9774bbd5-n6m5k deleted pod l7-default-backend-6f8697844f-d2rq2 deleted pod metrics-server-v0.3.1-54699c9cc8-7l5w2 deleted注意macOS 上xargs不支持-r参数命令可能报错。此时可以安全地去掉-r运行副作用是如果没有 Pod 需要重启命令会挂起可按Ctrl-C停止。故障排查failed to authorize: failed to fetch anonymous token这通常意味着网络或仓库连接问题。先测试访问curl https://quay.io/v2/chart not found请仔细检查版本号。记住Helm 版本号不带v前缀。下一步安装验证完成后可以继续探索Hubble 的安装与配置可观测性Hubble CLI 与 Hubble UIHTTP 层网络策略L7 Policy入门ClusterMesh 多集群互联。相关文档入口可参考 next-steps.rst对应的 Hubble、ClusterMesh 等组件源码与 Helm 模板也位于仓库的 hubble、clustermesh-apiserver 等目录中便于进一步研究其实现细节。附仓库内的 Helm Chart 结构Cilium 官方 Helm Chart 位于仓库 install/kubernetes/cilium其中Chart.yamlChart 元数据与依赖声明支持 Kubernetes 1.21values.yaml全部可配置参数nodeinit、eni、gke、aksbyocni、alibabacloud、ipam、bpf、kubeProxyReplacement、securityContext、cgroup等均在此定义values.schema.jsonvalues 的 JSON Schema 校验templates渲染 DaemonSet、Deployment、ConfigMap、CRD 等资源的模板filesnodeinit、Spire、Hubble 等组件的辅助脚本与配置。安装时传入的每一个--set参数最终都会反映到 agent/operator 的配置项中例如ipam.mode决定 Cilium 使用何种 IP 分配后端kubeProxyReplacement决定是否以 eBPF 完全替代 kube-proxy理解这些参数与 Chart 模板的对应关系有助于在生产环境中做出正确的部署决策。【免费下载链接】ciliumeBPF-based Networking, Security, and Observability项目地址: https://gitcode.com/GitHub_Trending/ci/cilium创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考