当前位置:首页>Linux>基于Rocky Linux 9 通过kubeadm部署Kubernetes + containerd + Cilium + Kube-vip高可用集群应用实践

基于Rocky Linux 9 通过kubeadm部署Kubernetes + containerd + Cilium + Kube-vip高可用集群应用实践

  • 2026-06-30 20:48:23
基于Rocky Linux 9 通过kubeadm部署Kubernetes + containerd + Cilium + Kube-vip高可用集群应用实践

基于Rocky Linux 9 通过kubeadm部署Kubernetes + containerd + Cilium + Kube-vip高可用集群应用实践


一、整体架构设计与组件选型

1.1 设计目标

目标维度
具体要求
高可用
控制平面多副本部署,任一节点故障集群仍可正常工作
高性能
基于eBPF的Cilium替代kube-proxy,降低网络延迟和CPU开销
可扩展
支持工作节点水平扩展,网络插件支持大规模集群
安全性
网络策略、eBPF观测能力、运行时安全防护
易运维
声明式部署,组件版本可管理,升级路径清晰

1.2 集群整体逻辑架构

1.3 三主高可用集群运维系统架构拓扑

以下拓扑图展示了三主高可用集群中每个节点的核心组件部署关系,包括控制平面节点和工作节点上运行的各类进程及其交互方式。

拓扑要点说明:

  • kube-vip
    :三个控制平面节点均运行kube-vip,同一时刻仅Leader持有VIP(虚线表示浮动关系),Follower通过Raft协议监听Leader状态
  • etcd集群
    :三个etcd实例两两互联构成Raft共识集群,任一节点故障不影响数据一致性
  • API Server本地etcd
    :每个apiserver优先连接本地etcd,减少网络跳转
  • 工作节点kubelet
    :通过VIP:6443连接控制平面,VIP故障切换时自动重连至新Leader
  • Cilium Agent
    :每个节点均运行Cilium Agent,负责向内核注入eBPF程序并维护跨节点隧道
  • eBPF程序
    :运行在内核态,替代kube-proxy处理Service负载均衡和DNAT

1.4 网络请求流转示意图

以下示意图展示了集群中各类网络请求的完整流转路径,包括外部访问API Server、Pod间通信、Service负载均衡等核心场景。

请求流转说明:

场景
请求路径
关键技术
外部访问API Server
客户端→VIP→ARP解析→Leader节点→kube-apiserver→etcd
kube-vip ARP模式、TLS双向认证
Pod访问ClusterIP
Pod→eBPF tc→Service后端表查找→DNAT→目标Pod
Cilium eBPF完全替代kube-proxy
跨节点Pod通信
Pod→eBPF egress→VXLAN封装→物理网络→eBPF ingress→目标Pod
Cilium VXLAN/Geneve隧道或Direct Routing
NodePort外部访问
外部流量→NodePort→eBPF拦截→SNAT+DNAT→目标Pod
Cilium eBPF NodePort处理,bpf_masquerade
kubelet与API Server
kubelet→VIP:6443上报状态;API Server→:10250回调
TLS Bootstrap证书认证、Watch长连接

1.5 组件交互与数据流架构

1.6 网络拓扑与流量路径

1.7 组件版本矩阵与操作系统兼容性

组件
推荐版本
最低版本
作用
el7兼容性
el8兼容性
el9兼容性
备注
操作系统
Rocky Linux 9 / RHEL 9
Rocky Linux 8 / RHEL 8
基础运行环境
⚠️ 不推荐
✅ 支持
✅ 推荐
el7内核过旧,Cilium eBPF功能受限
Linux内核
5.14+
5.4+
eBPF与容器基础
❌ 3.10不满足
✅ 4.18需升级
✅ 5.14原生
el7默认3.10内核不支持Cilium高级特性
Kubernetes
v1.36.0
v1.31.0
容器编排核心
❌ 不支持
⚠️ 需内核升级
✅ 完整支持
v1.36不再对el7提供官方支持
containerd
v2.0.2
v1.7.0
容器运行时-CRI
❌ v2.0不支持
✅ 完整支持
✅ 完整支持
v2.0需glibc≥2.28,el7仅glibc 2.17;v1.7可用但非推荐
Cilium
v1.16.0
v1.14.0
CNI网络插件
❌ eBPF不可用
⚠️ 功能受限
✅ 完整支持
需内核5.4+,推荐5.10+
kube-vip
v0.8.0
v0.7.0
控制平面高可用
✅ 支持
✅ 支持
✅ 支持
无特殊内核依赖
etcd
v3.6.x
v3.5.0
分布式键值存储
⚠️ v3.5可用
✅ 支持
✅ 支持
随K8s发布包附带
crun
v1.17+
v1.14+
OCI运行时
⚠️ 需编译
✅ 支持
✅ dnf安装
替代runc,性能更优
runc
v1.2.x
v1.1.0
OCI运行时-默认
✅ 支持
✅ 支持
✅ 支持
containerd默认OCI运行时

关键说明:

  • CentOS 7 / RHEL 7(el7)
    :默认内核3.10,无法支持Cilium eBPF数据平面;更重要的是,el7默认glibc版本为2.17,而containerd v2.0+要求glibc ≥ 2.28,这意味着即使通过ELRepo升级内核至5.x解决了eBPF问题,el7仍无法运行containerd v2.0+,从根本上不具备部署本方案的条件。仅可使用containerd v1.7(非推荐版本),且需面对内核与CNI的双重限制
  • CentOS 8 Stream / Rocky Linux 8 / RHEL 8(el8)
    :默认内核4.18、glibc 2.28,glibc满足containerd v2.0+要求,但内核需通过dnf update kernel或ELRepo升级至5.x以支持Cilium eBPF完整功能
  • Rocky Linux 9 / RHEL 9(el9)
    :默认内核5.14+、glibc 2.34,原生满足所有组件的内核与C库版本要求,为推荐操作系统
  • Ubuntu 22.04/24.04
    :内核5.15/6.8、glibc 2.35/2.39,同样完整支持,可替代使用

glibc版本与containerd兼容性速查:

操作系统
glibc版本
containerd v1.7
containerd v2.0+
说明
el7(CentOS 7 / RHEL 7)
2.17
✅ 可运行
❌ 不支持
glibc 2.17 < 2.28,编译链接失败
el8(Rocky Linux 8 / RHEL 8)
2.28
✅ 可运行
✅ 可运行
glibc 2.28刚好满足最低要求
el9(Rocky Linux 9 / RHEL 9)
2.34
✅ 可运行
✅ 可运行
glibc 2.34 > 2.28,完全满足
Ubuntu 22.04
2.35
✅ 可运行
✅ 可运行
完全满足
Ubuntu 24.04
2.39
✅ 可运行
✅ 可运行
完全满足

1.8 组件选型对比与决策依据

选型维度
本方案选择
备选方案
选择理由
容器运行时
containerd
CRI-O, Docker
社区主流、性能优异、K8s原生支持、v2.0版本CRI接口稳定
CNI网络
Cilium
Calico, Flannel, Weave
eBPF高性能数据平面、可替换kube-proxy、支持L3-L7网络策略、Hubble可观测
高可用LB
kube-vip
HAProxy+Keepalived, Nginx+Keepalived
原生K8s集成、静态Pod部署、ARP/BGP双模式、零外部依赖
部署工具
kubeadm
k3s, RKE2, 二进制
官方推荐、社区支持好、升级路径清晰、配置灵活
OCI运行时
crun/runc
kata-containers
crun性能更优体积更小;kata适用于强隔离场景
网络入口
Service NodePort → Gateway API
ingress-nginx, Traefik
ingress-nginx已列入退役计划,需尽早规划Gateway API选型(Envoy Gateway/Istio Gateway/Kong等);初期可用Service NodePort

二、关键技术原理说明

2.1 kube-vip高可用原理

kube-vip提供Kubernetes控制平面的高可用虚拟IP(VIP),支持两种工作模式:

ARP模式(本方案采用)

核心原理详解:

  • Raft选举
    :kube-vip在所有控制平面节点间运行Raft一致性协议,选举出唯一Leader持有VIP
  • Gratuitous ARP
    :Leader节点主动发送免费ARP报文,通知网络中所有设备VIP的MAC地址已更新
  • 静态Pod方式部署
    :kube-vip作为静态Pod运行在/etc/kubernetes/manifests/目录下,由kubelet直接管理,不依赖集群API Server
  • Service LB
    :同时支持为Kubernetes Service提供负载均衡VIP,替代外部LoadBalancer

BGP模式(可选)

适用于大规模数据中心环境,kube-vip通过BGP协议向路由器发布VIP路由,实现跨子网负载均衡。配置方式为将--arp替换为--bgp并指定BGP参数。

2.2 Cilium eBPF网络原理

核心原理详解:

  • eBPF(Extended Berkeley Packet Filter)
    :在Linux内核中安全执行沙盒程序的技术,无需修改内核源码即可扩展内核功能
  • 数据平面替换
    :Cilium将eBPF程序挂载到网络设备的tc(traffic control)ingress/egress钩子上,在内核态直接处理网络包,跳过iptables规则链
  • kube-proxy替换
    kubeProxyReplacement=strict模式下,Cilium完全接管Service的负载均衡和DNAT,移除所有iptables规则
  • 网络策略
    :支持L3/L4网络策略(IP和端口)和L7网络策略(HTTP/gRPC/Kafka等协议),在eBPF层直接执行,性能远优于iptables实现
  • Hubble可观测
    :基于eBPF事件流提供服务依赖图、网络流量监控、故障诊断能力
  • 封装模式
    :支持VXLAN、Geneve封装或直接路由(Direct Routing)模式实现跨节点Pod通信

2.3 etcd Raft共识原理

核心原理详解:

  • Raft协议
    :etcd使用Raft一致性协议保证分布式数据的一致性,要求多数节点(Quorum)确认写入才算成功
  • Leader选举
    :集群中只有一个Leader处理写入请求,Follower转发写请求给Leader
  • 日志复制
    :Leader将每次写操作作为日志条目复制到所有Follower,多数确认后提交
  • 脑裂防护
    :奇数节点部署(3或5),确保网络分区时最多只有一个分区拥有多数节点
  • 数据持久化
    :每个etcd节点将数据持久化到磁盘,建议使用SSD以保证写入性能

2.4 containerd CRI接口原理

核心原理详解:

  • CRI(Container Runtime Interface)
    :Kubernetes定义的容器运行时接口标准,kubelet通过gRPC调用CRI
  • containerd架构
    :containerd内置CRI Plugin,无需额外安装CRI shim(dockershim已弃用)
  • SystemdCgroup
    :containerd的cgroup驱动必须与kubelet一致,均设为systemd以避免资源管理冲突
  • 镜像管理
    :containerd通过ctrcrictl命令行工具管理镜像,crictl为CRI标准CLI
  • 命名空间隔离
    :containerd使用namespace隔离不同客户端的容器和镜像,K8s默认使用k8s.io命名空间

2.5 kube-proxy后端模式与内核模块依赖

Kubernetes Service的负载均衡由kube-proxy实现,kube-proxy支持三种后端模式,每种模式对内核模块有不同的强依赖:

三种后端模式对比:

维度
iptables模式
nftables模式
IPVS模式
eBPF模式(Cilium)
Kubernetes默认
✅ v1.36仍默认
v1.29+可选
需手动启用
需安装Cilium strict
规则查找复杂度
O(n)线性遍历
O(n)但优化规则集
O(1)哈希查找
O(1)哈希查找
Service规模
<5000 Service
<10000 Service
>10000 Service
无上限(内核eBPF)
规则更新延迟
秒级(全量刷写)
增量更新,毫秒级
增量更新,毫秒级
增量更新,微秒级
内核模块依赖
ip_tables, iptable_nat, nf_conntrack
nf_tables, nft_compat, nf_conntrack
ip_vs, ip_vs_rr/wrr/sh, nf_conntrack_ipv4
CONFIG_BPF, bpf_jit_enable
conntrack依赖
✅ 强依赖
✅ 强依赖
✅ 强依赖
❌ eBPF绕过conntrack
el9内核支持
✅ 5.14+完整
✅ 5.14+原生nftables
✅ 5.14+完整
✅ 5.14+完整eBPF
el8内核支持
✅ 4.18可用
⚠️ 需确认nft_compat
✅ 4.18可用
⚠️ 需升级至5.4+
推荐场景
小规模集群/兼容
中等规模/过渡方案
大规模Service场景
本方案首选

关键说明:

  1. iptables/nftables内核模块强依赖:即使本方案使用Cilium eBPF完全替代kube-proxy,集群初始化阶段(kubeadm init)和kube-proxy删除之前,iptables相关模块仍须加载。未加载ip_tables/iptable_nat/nf_conntrack模块会导致kube-proxy启动失败,进而影响集群初始化

  2. nftables迁移趋势:Kubernetes社区自v1.29引入nftables后端(Alpha),v1.31+进入Beta,v1.36+推荐作为iptables的替代。nftables解决了iptables的规则膨胀和全量刷写问题,建议在未使用Cilium的集群中逐步从iptables迁移至nftables。需确保内核已加载nf_tablesnft_compat模块

  3. IPVS长期规划:IPVS模式适用于Service数量超过5000的大规模集群,提供O(1)查找性能。但IPVS与nftables不兼容,且社区长期方向是eBPF替代。建议仅在确实存在大规模Service场景且暂不部署Cilium时启用IPVS,长期应规划向eBPF演进。启用IPVS需额外加载ip_vsip_vs_rrip_vs_wrrip_vs_sh模块,并配置vs.conn_reuse_mode=0等内核参数

  4. 本方案策略:采用Cilium kubeProxyReplacement=strict模式,eBPF完全接管Service处理,彻底消除对iptables/nftables/IPVS的运行时依赖。但初始化阶段仍需iptables模块可用,待Cilium接管后删除kube-proxy


三、主机规划与前置准备

3.1 主机规划

节点角色
数量
CPU
内存
磁盘
IP地址
主机名
操作系统
控制平面节点
3
4C+
8G+
100G SSD
192.168.1.10
k8s-master01
Rocky Linux 9
控制平面节点
3
4C+
8G+
100G SSD
192.168.1.11
k8s-master02
Rocky Linux 9
控制平面节点
3
4C+
8G+
100G SSD
192.168.1.12
k8s-master03
Rocky Linux 9
工作节点
3+
8C+
16G+
200G SSD
192.168.1.20
k8s-worker01
Rocky Linux 9
工作节点
3+
8C+
16G+
200G SSD
192.168.1.21
k8s-worker02
Rocky Linux 9
工作节点
3+
8C+
16G+
200G SSD
192.168.1.22
k8s-worker03
Rocky Linux 9
VIP虚拟地址
1
-
-
-
192.168.1.100
k8s-vip
-

资源配置说明:

  • 控制平面节点最低2C/4G可运行,但生产环境建议4C/8G+,etcd对磁盘IO敏感,必须使用SSD
  • 工作节点配置取决于工作负载,建议8C/16G起步,生产环境根据业务需求扩展
  • VIP地址必须与控制平面节点在同一子网,且未被任何设备占用

3.2 系统初始化(所有节点执行)

3.2.1 操作系统准备(el8/el9适用)

# el8系统需先升级内核至5.x# 方法1:通过ELRepo安装新内核rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.orgyum install -y https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpmyum --enablerepo=elrepo-kernel install -y kernel-ltgrub2-set-default 0grub2-mkconfig -o /boot/grub2/grub.cfgreboot# 验证内核版本uname -r  # 应为5.4+或更高
# el9系统内核默认5.14+,无需额外升级# 确认内核版本uname -r  # 应为5.14+

3.2.2 关闭防火墙

systemctl stop firewalldsystemctl disable firewalld

生产环境替代方案: 若无法关闭防火墙,需开放以下端口:

组件
端口
协议
说明
kube-apiserver
6443
TCP
API Server服务端口
etcd
2379-2380
TCP
etcd客户端与集群通信
kubelet
10250
TCP
kubelet API
kube-scheduler
10259
TCP
调度器健康检查
kube-controller
10257
TCP
控制器健康检查
kube-vip
-
-
需允许ARP/组播流量
Cilium VXLAN
8472
UDP
VXLAN封装端口
Cilium Geneve
6081
UDP
Geneve封装端口
NodePort
30000-32767
TCP
NodePort服务端口范围

3.2.3 关闭SELinux

setenforce 0sed -i 's/^SELINUX=enforcing{CRICTL_VERSION}/crictl-{CRICTL_VERSION}-linux-amd64.tar.gz -C /usr/local/bin/rm -f crictl-{KUBEVIP_VERSION}/kube-vip-linux-amd64chmod +x /usr/local/bin/kube-vip

第三步:生成kube-vip静态Pod清单

# 在所有控制平面节点上执行# 设置变量VIP=192.168.1.100INTERFACE=eth0  # 替换为实际网卡名,可通过 ip addr 查看# 生成静态Pod YAMLkube-vip manifest pod \    --interface VIP \    --controlplane \    --services \    --arp \    --leaderElection \    | tee /etc/kubernetes/manifests/kube-vip.yaml

生成的kube-vip.yaml示例与参数说明:

apiVersion: v1kind: Podmetadata:  name: kube-vip  namespace: kube-systemspec:  containers:  - name: kube-vip    image: ghcr.io/kube-vip/kube-vip:v0.8.0    imagePullPolicy: IfNotPresent    args:      - manager    env:      - name: vip_arp        value"true"           # 启用ARP模式      - name: vip_interface        value"eth0"           # 绑定VIP的网卡名      - name: vip_address        value"192.168.1.100"  # VIP地址      - name: port        value"6443"           # kube-apiserver端口      - name: vip_controlplane        value"true"           # 启用控制平面负载均衡      - name: vip_services        value"true"           # 启用Service负载均衡      - name: vip_leaderElection        value"true"           # 启用Leader选举    securityContext:      capabilities:        add:          - NET_ADMIN          - NET_RAW          - SYS_TIME    volumeMounts:      - name: config        mountPath: /etc/kubernetes/admin.conf  volumes:    - name: config      hostPath:        path: /etc/kubernetes/admin.conf  hostNetworktrue  hostAliases:    - hostnames:        - kubernetes      ip: 127.0.0.1

重要提示: kube-vip静态Pod需要/etc/kubernetes/admin.conf文件,但在第一个节点kubeadm init之前该文件不存在。因此在第一个控制平面节点上,应在kubeadm init之后再放置kube-vip.yaml;在其余控制平面节点上,可在kubeadm join之前预先放置,因为join时会生成admin.conf。

6.3 kube-vip BGP模式配置(可选高级方案)

适用于跨子网或大规模环境,需配合BGP路由器/交换机使用:

kube-vip manifest pod \    --interface VIP \    --controlplane \    --services \    --bgp \    --bgp-peers 192.168.1.1:179 \    --bgp-asn 65001 \    --leaderElection | tee /etc/kubernetes/manifests/kube-vip.yaml

七、kubeadm初始化高可用控制平面

7.1 第一个控制平面节点初始化

创建kubeadm配置文件

# kubeadm-config.yamlapiVersion: kubeadm.k8s.io/v1beta4kind: InitConfigurationnodeRegistration:  criSocket: unix:///run/containerd/containerd.sock  kubeletExtraArgs:    cgroup-driver: systemd    rotate-server-certificatestrue---apiVersion: kubeadm.k8s.io/v1beta4kind: ClusterConfigurationkubernetesVersion: v1.36.0controlPlaneEndpoint"k8s-vip:6443"imageRepository: registry.aliyuncs.com/google_containersnetworking:  podSubnet"10.244.0.0/16"  serviceSubnet"10.96.0.0/12"  dnsDomain"cluster.local"apiServer:  extraArgs:    authorization-mode: Node,RBAC    enable-admission-plugins: NodeRestriction,PodSecurityPolicy,LimitRanger,ServiceAccount    audit-log-path: /var/log/kubernetes/audit.log    audit-log-maxage30    audit-log-maxbackup10    audit-log-maxsize200  certSANs:    - k8s-vip    - 192.168.1.100    - 192.168.1.10    - 192.168.1.11    - 192.168.1.12    - k8s-master01    - k8s-master02    - k8s-master03controllerManager:  extraArgs:    bind-address: 0.0.0.0    cluster-signing-duration: 87600hscheduler:  extraArgs:    bind-address: 0.0.0.0etcd:  local:    dataDir: /var/lib/etcd    extraArgs:      auto-compaction-mode: periodic      auto-compaction-retention: 1h      snapshot-count"10000"---apiVersion: kubelet.config.k8s.io/v1beta1kind: KubeletConfigurationcgroupDriver: systemdrotateCertificatestrueserverTLSBootstraptruemaxPods110podPidsLimit-1resolvConf: /run/systemd/resolve/resolv.conf

配置详解:

  • controlPlaneEndpoint
    :指向kube-vip的VIP地址,所有组件通过VIP访问API Server
  • certSANs
    :证书中需包含所有控制平面节点IP和VIP,否则TLS验证失败
  • etcd优化
    :启用自动压缩和快照,防止etcd数据无限增长
  • audit日志
    :生产环境必需,记录所有API调用用于安全审计
  • rotateCertificates
    :自动轮换kubelet证书,避免证书过期风险

执行初始化

# 预检查(可先执行dry-run验证配置)kubeadm init --config kubeadm-config.yaml --upload-certs --dry-run# 正式初始化kubeadm init --config kubeadm-config.yaml --upload-certs

--upload-certs参数说明: 将控制平面证书加密上传至etcd,其他控制平面节点join时可自动下载证书,无需手动复制。证书密钥有效期为2小时。

初始化成功后配置kubectl

mkdir -p HOME/.kube/configsudo chown (id-g) INTERFACE \    --address HOME/.kubesudo cp -i /etc/kubernetes/admin.conf (id -u):HOME/.kube/config

注意: 如果token过期(默认24小时),可在已有控制平面节点重新生成:

kubeadm token create --print-join-command

如果certificate-key过期(默认2小时),需重新上传:

kubeadm init phase upload-certs --upload-certs

7.3 验证控制平面状态

# 查看所有节点kubectl get nodes -o wide# 查看所有系统Podkubectl get pods -n kube-system -o wide# 查看etcd集群健康状态kubectl get pods -n kube-system -l component=etcdETCD_POD=ETCD_POD -- etcdctl \    --cacert=/etc/kubernetes/pki/etcd/ca.crt \    --cert=/etc/kubernetes/pki/etcd/server.crt \    --key=/etc/kubernetes/pki/etcd/server.key \    endpoint health --cluster# 验证VIP可达curl -k https://192.168.1.100:6443/version

八、Cilium CNI网络插件部署

8.1 Cilium部署前准备

# 确认内核版本满足要求uname -r  # 必须 >= 5.4,推荐 >= 5.10# 确认eBPF相关内核配置已开启cat /boot/config-(curl-s https://raw.githubusercontent.com/cilium/cilium-cli/main/stable.txt)CILIUM_CLI_ARCH=amd64curl -L --fail --remote-name-all \    https://github.com/cilium/cilium-cli/releases/download/{CILIUM_CLI_ARCH}.tar.gz{,.sha256sum}sha256sum --check cilium-linux-{CILIUM_CLI_ARCH}.tar.gz /usr/local/binrm -f cilium-linux-(curl -s https://raw.githubusercontent.com/cilium/hubble/main/stable.txt)curl -L --fail --remote-name-all \    https://github.com/cilium/hubble/releases/download/(date +%Y%m%d_%H%M%S)RETAIN_DAYS=7mkdir -p BACKUP_DIR/etcd-snapshot-ETCD_ENDPOINT \    --cacert=ETCD_CERT \    --key=BACKUP_DIR/etcd-snapshot-BACKUP_DIR -name "etcd-snapshot-*.db" -mtime +DATE.db"

12.4 集群升级流程

# 1. 升级kubeadmdnf install -y kubeadm-1.37.0  # 假设升级到1.37# 2. 预检查kubeadm upgrade plan# 3. 升级第一个控制平面节点kubeadm upgrade apply v1.37.0# 4. 升级其余控制平面节点(逐个执行)kubeadm upgrade node# 5. 升级工作节点(逐个执行,确保服务可用)# 在工作节点上:dnf install -y kubelet-1.37.0 kubeadm-1.37.0 kubectl-1.37.0kubeadm upgrade nodesystemctl restart kubelet# 6. 验证升级kubectl get nodes -o wide

升级原则: 一次仅升级一个minor版本(如1.36→1.37),不可跳版本升级;先升级控制平面再升级工作节点;升级前必须备份etcd数据。


十三、网络入口架构演进与Gateway API选型规划

13.1 背景与演进趋势

Kubernetes网络入口(Ingress)正在经历重大架构变革。ingress-nginx作为Kubernetes社区长期维护的默认Ingress控制器,已被SIG-Network列入退役路线图(deprecation timeline),取而代之的是Gateway API——新一代的标准网络入口API。

关键背景:

  • ingress-nginx退役
    :SIG-Network已明确Ingress API无法扩展满足现代网络需求(多租户、L4/L7统一、流量拆分等),ingress-nginx将进入维护模式,不再增加新功能
  • Gateway API GA
    :Gateway API自v1.0起已达到GA稳定阶段,Kubernetes v1.36+完全支持,是社区确定的网络入口标准演进方向
  • Ingress API兼容
    :Gateway API控制器通常提供Ingress API兼容层,允许渐进式迁移,无需一次性替换

13.2 本方案网络入口策略

本方案采用分阶段演进策略,从最基础的Service NodePort起步,逐步向Gateway API迁移:

阶段
方案
适用场景
复杂度
说明
Phase 1 - 初期
Service NodePort + ClusterIP
开发测试、小规模内部服务
★☆☆
零额外组件部署,端口范围30000-32767,适合初期验证
Phase 2 - 过渡
Ingress API + ingress-nginx
需要域名路由、TLS终止
★★☆
当前最成熟方案,但需规划迁移至Gateway API
Phase 3 - 目标
Gateway API + Envoy Gateway
生产环境、多租户、流量管理
★★★
长期推荐方案,功能完整、社区支持强

13.3 Gateway API核心概念

Gateway API vs Ingress API 对比:

维度
Ingress API
Gateway API
API层级
单一资源,运维与开发职责混合
三层角色:GatewayClass → Gateway → Route
多租户
❌ 不支持
✅ Route可跨命名空间引用Gateway
协议支持
仅HTTP/HTTPS
HTTP、HTTPS、TCP、UDP、TLS、gRPC
流量管理
基础路径/主机路由
高级流量拆分(蓝绿/金丝雀)、重试、超时、镜像
扩展性
通过Annotation扩展,不可移植
通过自定义Route和Policy扩展,可移植
控制器绑定
隐式(通过IngressClass)
显式(GatewayClass指定控制器)
状态反馈
有限
完整的Conditions和ListenersStatus

13.4 Gateway API网关选型对比

选型维度
Envoy GatewayIstio GatewayKong GatewayCilium Gateway API
推荐场景
通用HTTP/L4网关,CNCF官方推荐
服务网格场景,需mTLS/流量治理
企业API管理,插件生态丰富
已部署Cilium的集群,eBPF加速
底层数据平面
Envoy Proxy
Envoy Proxy
Nginx/OpenResty
Cilium eBPF + Envoy
Gateway API兼容
✅ 原生实现,最完整
✅ 原生实现
✅ v3.2+支持
✅ 原生实现
Ingress兼容
✅ 自动转换Ingress
✅ 自动转换
✅ 原生支持
✅ 兼容
部署复杂度
★★☆ 中等
★★★ 较高(需Istio控制面)
★★☆ 中等
★☆☆ 低(Cilium内置)
资源开销
中等(Envoy Sidecar/网关Pod)
高(Sidecar per Pod)
中等
低(eBPF内核态)
API管理能力
基础
强(服务网格级别)
强(认证/限流/插件市场)
基础
L4/L7支持
✅ 完整
✅ 完整
✅ 完整
✅ 完整
社区活跃度
⭐⭐⭐⭐⭐ CNCF孵化
⭐⭐⭐⭐⭐ CNCF毕业
⭐⭐⭐⭐ 商业+开源
⭐⭐⭐⭐ Cilium子项目
生产就绪度
✅ v1.0+ GA
✅ 成熟
✅ 成熟
⚠️ v1.16+逐步完善
本方案推荐度
⭐⭐⭐⭐⭐ 首选
⭐⭐⭐(需服务网格时)
⭐⭐⭐⭐(需API管理时)
⭐⭐⭐⭐(追求eBPF性能时)

13.5 推荐选型决策路径

决策建议:

  1. 首选方案:Envoy Gateway — 本方案推荐作为Gateway API的默认控制器选型

    • CNCF官方Gateway API参考实现,API兼容性最完整
    • 独立于服务网格,部署复杂度可控
    • Envoy数据平面性能优异,生产验证充分
    • 长期社区支持保障,避免供应商锁定
  2. 性能优先:Cilium Gateway API — 已部署Cilium的集群可考虑

    • eBPF加速数据平面,性能最优
    • 与Cilium网络策略深度集成
    • 减少额外组件部署(无独立网关Pod)
    • 但功能成熟度仍在快速迭代中
  3. API管理需求:Kong Gateway — 需要认证/限流/插件生态时

    • 丰富的插件市场(认证、限流、日志、转换等)
    • DB-less和DB模式灵活选择
    • 企业版提供管理UI和高级功能
  4. 服务网格场景:Istio Gateway — 需要mTLS/流量治理/可观测时

    • 与Istio服务网格深度集成
    • 自动mTLS、流量镜像、故障注入
    • 适合微服务架构的全链路治理

13.6 Phase 1 实践:Service NodePort(当前方案)

本方案当前阶段使用最基础的Service NodePort方式暴露服务,零额外组件:

# 部署测试应用并暴露NodePortkubectl create deployment demo-app --image=nginx --replicas=2kubectl expose deployment demo-app --port=80 --target-port=80 --type=NodePort \    --name=demo-app-nodeport# 查看分配的NodePortkubectl get svc demo-app-nodeport# NAME               TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE# demo-app-nodeport  NodePort   10.96.xxx.xxx   <none>        80:3xxxx/TCP   5s# 通过任意节点IP:NodePort访问curl http://192.168.1.20:3xxxx

NodePort局限性与后续迁移触发条件:

  • 端口范围仅30000-32767,无法使用标准80/443端口
  • 每个Service占用一个端口,端口管理困难
  • 无TLS终止、无域名路由、无流量拆分等高级功能
  • 触发迁移条件
    :当需要以下任一能力时,应迁移至Gateway API 
    • 域名路由(多个服务共享80/443端口)
    • TLS自动证书管理
    • 蓝绿部署/金丝雀发布的流量拆分
    • 多租户网络隔离

13.7 Phase 3 实践:Envoy Gateway部署示例(目标方案)

当集群运行稳定后,可按以下步骤部署Envoy Gateway:

# 1. 安装Envoy Gateway(通过Helm)helm install eg oci://docker.io/envoyproxy/gateway-helm \    --version v1.2.0 \    --namespace envoy-gateway-system \    --create-namespace# 2. 等待Envoy Gateway就绪kubectl wait --timeout=5m -n envoy-gateway-system deployment/envoy-gateway --for=condition=Available# 3. 创建GatewayClass和Gatewaycat <<EOF | kubectl apply -f -apiVersion: gateway.networking.k8s.io/v1kind: GatewayClassmetadata:  name: egspec:  controllerName: gateway.envoyproxy.io/gatewayclass-controller---apiVersion: gateway.networking.k8s.io/v1kind: Gatewaymetadata:  name: eg  namespace: defaultspec:  gatewayClassName: eg  listeners:    - name: http      protocol: HTTP      port: 80      allowedRoutes:        namespaces:          from: All    - name: https      protocol: HTTPS      port: 443      tls:        mode: Terminate        certificateRefs:          - name: eg-tls-cert            kind: Secret      allowedRoutes:        namespaces:          from: AllEOF# 4. 创建HTTPRoute路由规则cat <<EOF | kubectl apply -f -apiVersion: gateway.networking.k8s.io/v1kind: HTTPRoutemetadata:  name: demo-app  namespace: defaultspec:  parentRefs:    - name: eg      namespace: default  hostnames:    - "app.example.com"  rules:    - backendRefs:        - name: demo-app          port: 80      filters:        - type: RequestHeaderModifier          requestHeaderModifier:            add:              - name: X-Gateway                value: envoy-gatewayEOF# 5. 验证Gateway和路由状态kubectl get gateway -Akubectl get httproute -Akubectl describe gateway eg -n default# 6. 获取Gateway外部IP并访问export GATEWAY_IP=GATEWAY_IP

13.8 迁移路线图总结

时间窗口
阶段
网络入口方案
kube-proxy后端
行动项
当前(集群建成0-3月)
Phase 1
Service NodePort
Cilium eBPF strict
集群稳定运行,验证基础网络功能
3-6个月
Phase 1→2
NodePort + 少量Ingress
Cilium eBPF strict
评估Envoy Gateway可行性,测试Gateway API
6-12个月
Phase 2→3
Gateway API + Envoy Gateway
Cilium eBPF strict
部署Envoy Gateway,逐步迁移Ingress至HTTPRoute
12个月+
Phase 3
Gateway API全面启用
Cilium eBPF strict
清理Ingress资源,评估是否需要服务网格(Istio)或API管理(Kong)

长期技术演进关键决策点:

  1. ingress-nginx退役时间窗口:ingress-nginx将在Gateway API达到生产就绪后进入维护模式(预计1-2年内停止功能更新)。建议在6个月内完成Gateway API选型评估,12个月内启动迁移

  2. kube-proxy后端演进:当前Cilium eBPF strict模式已完全替代kube-proxy。若后续因特殊原因需回退至kube-proxy,社区推荐路径为 iptables → nftables → eBPF,应避免向IPVS投入过多运维精力

  3. Service NodePort的定位:NodePort作为最基础的服务暴露方式,在Gateway API成熟后仍适用于内部服务和调试场景,不会被完全取代

PS:写作过程中若有考虑不周或信息偏差,非常期待大家的留言指正~我们会认真回复、积极沟通,并尽快更新优化。感谢阅读与包容!

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-04 09:35:39 HTTP/2.0 GET : https://f.mffb.com.cn/a/490217.html
  2. 运行时间 : 0.127618s [ 吞吐率:7.84req/s ] 内存消耗:4,697.76kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=13113b0badb46c0c6a442a9c5acad330
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000796s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000894s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000297s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.003294s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000557s ]
  6. SELECT * FROM `set` [ RunTime:0.005442s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000676s ]
  8. SELECT * FROM `article` WHERE `id` = 490217 LIMIT 1 [ RunTime:0.001505s ]
  9. UPDATE `article` SET `lasttime` = 1783128940 WHERE `id` = 490217 [ RunTime:0.008576s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000629s ]
  11. SELECT * FROM `article` WHERE `id` < 490217 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000852s ]
  12. SELECT * FROM `article` WHERE `id` > 490217 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001198s ]
  13. SELECT * FROM `article` WHERE `id` < 490217 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.004312s ]
  14. SELECT * FROM `article` WHERE `id` < 490217 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.007062s ]
  15. SELECT * FROM `article` WHERE `id` < 490217 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.000910s ]
0.129388s