金融行业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文件以便回滚

相关新闻

NX二次开发-编辑NX自带的命令

NX二次开发-编辑NX自带的命令

适用版本:NX 所有版本一、概述Menuscript 是NX定义菜单的ASCII脚本,可以使用这个脚本编辑NX菜单,并以无缝集成的方式为自己的应用程序创建自定义菜单;也可以编辑替换NX自带现有的功能命令。二、功能说明本文以编辑“打开 ”命令来…

2026/11/2 6:46:00 阅读更多 →
2026年哪个GEO营销系统效果最好?从概念认知到决策落地

2026年哪个GEO营销系统效果最好?从概念认知到决策落地

一、基础认知:重新理解GEO的核心逻辑1.1 什么是GEOGEO,全称为Generative Engine Optimization,即生成式引擎优化。它指的是面向AI搜索、智能问答和大模型生成结果的优化方法,核心目标是提升品牌信息在AI生成答案中的引用概率与呈现…

2026/10/28 15:37:53 阅读更多 →
DxWrapper实战指南:Windows 10/11经典游戏5步高效兼容性解决方案

DxWrapper实战指南:Windows 10/11经典游戏5步高效兼容性解决方案

DxWrapper实战指南:Windows 10/11经典游戏5步高效兼容性解决方案 【免费下载链接】dxwrapper Fixes compatibility issues with older games running on Windows 10/11 by wrapping DirectX dlls. Also allows loading custom libraries with the file extension .a…

2026/11/5 11:21:42 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/6 15:21:35 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/6 9:29:27 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/6 22:01:11 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/6 22:01:11 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/6 8:08:42 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/6 22:01:09 阅读更多 →

日新闻

周新闻

月新闻