发布时间:2026/8/11 18:57:25
金融行业Kubernetes内网部署Calico CNI实战指南 1. 项目背景与需求分析去年在给某金融机构做私有云改造时遇到了一个典型的企业内网Kubernetes部署场景1个管理节点2个工作节点需要部署Calico作为CNI插件。这个看似简单的需求在实际操作中遇到了不少坑今天就把完整实施过程记录下来。为什么选择Calico在金融行业这种对网络性能和安全有严格要求的场景下Calico的纯三层网络方案相比Overlay网络有明显优势没有封包解包的性能损耗支持NetworkPolicy实现微隔离而且排查问题时路由信息清晰可见。客户环境是完全离线的内网所有镜像都需要提前下载好这对Calico的部署提出了额外挑战。2. 环境准备与前置条件2.1 硬件资源配置我们使用了3台物理服务器管理节点32核CPU/128GB内存/2块万兆网卡工作节点16核CPU/64GB内存/2块万兆网卡注意Calico对网络性能敏感建议至少使用千兆网卡万兆更佳。我们遇到过因为网卡性能不足导致的Pod间通信延迟问题。2.2 操作系统配置所有节点统一使用CentOS 7.9进行了以下基础配置关闭swapswapoff -a并注释/etc/fstab中的swap行设置SELinux为permissive模式加载必要的内核模块modprobe br_netfilter echo br_netfilter /etc/modules-load.d/br_netfilter.conf配置内核参数cat /etc/sysctl.d/k8s.conf EOF net.bridge.bridge-nf-call-ip6tables 1 net.bridge.bridge-nf-call-iptables 1 net.ipv4.ip_forward 1 EOF sysctl --system3. Kubernetes集群部署3.1 使用kubeadm初始化集群在内网环境下我们需要先搭建本地镜像仓库。这里使用Harbor作为私有仓库# 在管理节点上 docker pull registry:2 docker run -d -p 5000:5000 --restartalways --name registry registry:2然后导入必要的Kubernetes镜像版本1.23.5# 将提前下载好的镜像包导入 docker load -i kube-apiserver.tar docker load -i kube-controller-manager.tar # ...其他组件镜像同理 # 重新打tag推送到本地仓库 docker tag k8s.gcr.io/kube-apiserver:v1.23.5 localhost:5000/kube-apiserver:v1.23.5 docker push localhost:5000/kube-apiserver:v1.23.5初始化管理节点kubeadm init \ --image-repositorylocalhost:5000 \ --kubernetes-versionv1.23.5 \ --pod-network-cidr192.168.0.0/16 \ --service-cidr10.96.0.0/123.2 工作节点加入集群在工作节点上执行管理节点初始化完成后输出的join命令kubeadm join 10.10.1.100:6443 --token xxxx \ --discovery-token-ca-cert-hash sha256:xxxx常见问题如果join时报错connection refused检查防火墙是否放行了6443端口。我们在生产环境遇到过因为iptables规则冲突导致节点无法加入的情况。4. Calico网络插件部署4.1 离线安装准备由于是内网环境需要提前下载Calico的manifest文件和镜像# 在外网机器上 curl https://docs.projectcalico.org/manifests/calico.yaml -O docker pull calico/node:v3.21.4 docker pull calico/cni:v3.21.4 docker pull calico/kube-controllers:v3.21.4 # 导出镜像并传输到内网 docker save -o calico-node.tar calico/node:v3.21.4 # ...其他镜像同理在内网环境中导入镜像并推送到本地仓库docker load -i calico-node.tar docker tag calico/node:v3.21.4 localhost:5000/calico-node:v3.21.4 docker push localhost:5000/calico-node:v3.21.44.2 修改部署文件编辑calico.yaml主要修改以下几处修改镜像地址image: localhost:5000/calico/node:v3.21.4配置IP池与kubeadm的--pod-network-cidr保持一致- name: CALICO_IPV4POOL_CIDR value: 192.168.0.0/16根据实际网卡修改IP自动检测方式- name: IP_AUTODETECTION_METHOD value: interfaceeth.*4.3 部署Calicokubectl apply -f calico.yaml验证部署状态kubectl get pods -n kube-system # 应该看到calico-node-xxx和calico-kube-controllers-xxx都Running kubectl get nodes # 所有节点状态应为Ready5. 网络策略配置实战5.1 基础策略隔离命名空间创建一个拒绝所有入口流量的策略apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: default-deny-ingress namespace: production spec: podSelector: {} policyTypes: - Ingress5.2 微服务间访问控制允许frontend服务访问backend服务apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-frontend-to-backend spec: podSelector: matchLabels: app: backend policyTypes: - Ingress ingress: - from: - podSelector: matchLabels: app: frontend ports: - protocol: TCP port: 80806. 故障排查与性能优化6.1 常见问题排查Pod无法分配IPkubectl describe pod pod-name # 查看Events部分是否有IP分配失败信息 # 检查calico-node日志 kubectl logs -n kube-system calico-node-xxxx节点间网络不通# 在Pod内测试 kubectl exec -it pod-name -- ping other-pod-ip # 检查路由表 ip route show6.2 性能调优参数在calico.yaml中添加以下环境变量env: - name: FELIX_IPTABLESREFRESHINTERVAL value: 60s - name: FELIX_IPV6SUPPORT value: false - name: CALICO_STARTUP_LOGLEVEL value: info7. 生产环境经验总结镜像同步技巧使用skopeo工具可以更高效地同步镜像建立内部镜像仓库的定期同步机制网络规划建议Pod CIDR不要与现有物理网络重叠预留足够的IP空间每个节点默认分配/26子网监控配置# 启用Calico的Typha组件以提升大规模集群性能 kubectl scale deployment -n kube-system calico-typha --replicas3升级注意事项先在一个工作节点测试新版本Calico保留旧版本manifest文件以便回滚

相关新闻

2026/8/11 18:52:25

2026产线手持终端怎么选?MES对接这些坑千万别踩

产线手持终端怎么选?MES对接这些坑千万别踩最近不少工厂朋友问我:产线上MES要上线了,终端设备到底选啥?工控机太笨重,普通手机在车间用不了几个月就歇菜,手持终端能跑MES吗?今天一次性说透&…

2026/8/11 18:52:25

锐驰曼叉车智能 AI 防撞系统介绍

厂区叉车人车混行、视线盲区、无证上岗、违规驾驶、超速行驶是引发碰撞事故的核心隐患。锐驰曼依托 AI 视觉识别、多传感器融合与物联网通讯技术,打造 “事前准入管控、事中实时预警、危险主动干预、事后数据追溯” 一体化叉车主动安全解决方案,推动叉车…

2026/8/11 18:52:25

SpringCloud_1:父子工程创建

目录 一、在SpringBoot上建立SpringCloud 二、创建父子工程 三、每个模块升级成SpringBootWeb项目 四、总结 一、在SpringBoot上建立SpringCloud 我们前边创建过SpringBoot项目,都会引入一个前缀为springboot-starter-的依赖,例如创建一个项目pom文件…

2026/8/11 19:47:52

大模型API Key散落在系统里,有什么风险

企业第一次接入大模型时,通常不会一开始就做复杂的平台化设计。 哪个业务系统需要 AI 能力,就先申请一个 API Key;哪个项目要做 Demo,就把密钥写进配置文件;哪个部门想试用,就让研发临时接一下接口。这样做…

2026/8/11 19:47:52

终极指南:如何用免费开源工具快速安装Adobe插件

终极指南:如何用免费开源工具快速安装Adobe插件 【免费下载链接】ZXPInstaller Open Source ZXP Installer for Adobe Extensions 项目地址: https://gitcode.com/gh_mirrors/zx/ZXPInstaller 还在为Adobe插件的复杂安装流程头疼吗?别担心&#x…

2026/8/11 19:47:51

5个步骤彻底改变你的macOS鼠标体验:Mac Mouse Fix终极指南

5个步骤彻底改变你的macOS鼠标体验:Mac Mouse Fix终极指南 【免费下载链接】mac-mouse-fix Mac Mouse Fix - Make Your $10 Mouse Better Than an Apple Trackpad! 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix 还在为macOS上鼠标滚轮生…

2026/8/11 3:03:40

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/11 5:34:14

当 LLM 遇见大文档:主流开源项目如何处理上下文超限

从 Agentic Loop 到 Repo Map,七种策略与六类陷阱引言:128K vs 10MB 的硬冲突 2026 年的 LLM 上下文窗口已达到 128K ~ 1M token(≈ 0.5MB ~ 4MB 文本),但 LLM 想要处理的真实数据规模远远超过这个量级:真实…

2026/8/11 0:00:39

前后端分离项目中控制台与接口工具数据差异排查指南

1. 问题现象解析:控制台与Apifox的数据差异 最近在调试一个前后端分离项目时,遇到了一个典型问题:后端服务在本地开发环境控制台能正常输出查询数据,但通过Apifox测试时却返回空结果。这种"控制台有数据,接口工具…

2026/8/11 0:00:39

AI编程实战:从Claude Code踩坑到游戏开发入门

1. 从“AI能帮我做游戏”到“AI让我重新学编程”最近身边不少朋友,尤其是一些非技术背景、但对游戏开发有浓厚兴趣的朋友,都在问我同一个问题:“听说现在用Claude Code这种AI编程工具,小白也能做游戏了,是真的吗&#…

2026/8/10 11:20:30

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/11 17:06:59

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/11 3:05:11

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…