当前位置: 首页 > article >正文

Kubernetes网络管理:从CNI到Ingress的全面解析

Kubernetes网络管理从CNI到Ingress的全面解析 硬核开场各位技术大佬们今天咱们来聊聊Kubernetes网络管理。别以为Kubernetes的网络就是简单的IP分配实际上它涉及CNI插件、Service、Ingress、NetworkPolicy等多个组件复杂得很今天susu就带你们深入解析Kubernetes网络管理的最佳实践从CNI插件选择到网络策略配置从Service类型到Ingress部署全给你整明白 核心内容1. Kubernetes网络模型Pod网络每个Pod都有一个唯一的IP地址Service网络集群内部的服务发现和负载均衡集群网络节点间的通信外部网络集群与外部世界的通信2. CNI插件选择2.1 常见CNI插件插件名称类型特点适用场景Calico网络策略基于BGP支持网络策略生产环境需要网络策略Flannel简单网络基于VXLAN配置简单测试环境简单部署Cilium网络安全基于eBPF高性能高性能场景需要细粒度安全Weave Net简单网络自动发现配置简单快速部署小规模集群Canal组合方案Calico Flannel需要网络策略和简单部署2.2 安装Calico# 安装Calico kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml # 验证安装 kubectl get pods -n kube-system # 查看节点状态 kubectl get nodes2.3 配置Calico网络策略apiVersion: projectcalico.org/v3 kind: CalicoNetworkPolicy metadata: name: allow-nginx namespace: default spec: selector: app nginx ingress: - action: Allow protocol: TCP source: selector: app frontend destination: ports: - 80 egress: - action: Allow protocol: TCP destination: selector: app database ports: - 33063. Service类型3.1 ClusterIPapiVersion: v1 kind: Service metadata: name: nginx-clusterip spec: selector: app: nginx ports: - port: 80 targetPort: 80 type: ClusterIP3.2 NodePortapiVersion: v1 kind: Service metadata: name: nginx-nodeport spec: selector: app: nginx ports: - port: 80 targetPort: 80 nodePort: 30080 type: NodePort3.3 LoadBalancerapiVersion: v1 kind: Service metadata: name: nginx-loadbalancer spec: selector: app: nginx ports: - port: 80 targetPort: 80 type: LoadBalancer3.4 ExternalNameapiVersion: v1 kind: Service metadata: name: external-service spec: type: ExternalName externalName: example.com4. Ingress配置4.1 安装Ingress控制器# 安装Nginx Ingress控制器 helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx helm repo update helm install nginx-ingress ingress-nginx/ingress-nginx --namespace ingress-nginx --create-namespace # 验证安装 kubectl get pods -n ingress-nginx # 查看Ingress服务 kubectl get svc -n ingress-nginx4.2 配置Ingress规则apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: nginx-ingress annotations: kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/rewrite-target: / spec: rules: - host: example.com http: paths: - path: / pathType: Prefix backend: service: name: nginx-service port: number: 80 - host: api.example.com http: paths: - path: /api pathType: Prefix backend: service: name: api-service port: number: 80804.3 TLS配置apiVersion: v1 kind: Secret metadata: name: tls-secret type: kubernetes.io/tls data: tls.crt: base64-encoded-cert tls.key: base64-encoded-key --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: tls-ingress annotations: kubernetes.io/ingress.class: nginx spec: tls: - hosts: - example.com secretName: tls-secret rules: - host: example.com http: paths: - path: / pathType: Prefix backend: service: name: nginx-service port: number: 805. NetworkPolicy配置5.1 默认拒绝策略apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: default-deny namespace: default spec: podSelector: {} policyTypes: - Ingress - Egress5.2 允许特定Pod通信apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-frontend-to-backend namespace: default spec: podSelector: matchLabels: app: backend policyTypes: - Ingress ingress: - from: - podSelector: matchLabels: app: frontend ports: - protocol: TCP port: 80805.3 允许外部访问apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-external-access namespace: default spec: podSelector: matchLabels: app: web policyTypes: - Ingress ingress: - from: - ipBlock: cidr: 0.0.0.0/0 ports: - protocol: TCP port: 806. 网络故障排查6.1 检查Pod网络# 检查Pod IP kubectl get pods -o wide # 检查Pod网络连通性 kubectl exec -it pod-name -- ping other-pod-ip # 检查Pod DNS解析 kubectl exec -it pod-name -- nslookup service-name6.2 检查Service网络# 检查Service状态 kubectl get services # 检查Service endpoints kubectl get endpoints service-name # 检查Service连通性 kubectl run -it --rm --imagebusybox:1.28 test-pod -- ping service-ip6.3 检查节点网络# 检查节点网络状态 kubectl get nodes -o wide # 检查节点间连通性 ssh node1 ping node2-ip # 检查CNI插件状态 kubectl logs -n kube-system cni-pod-name7. 网络性能优化7.1 调整MTUapiVersion: projectcalico.org/v3 kind: FelixConfiguration metadata: name: default spec: mtu: 14507.2 配置网络QoSapiVersion: scheduling.k8s.io/v1 kind: PriorityClass metadata: name: high-priority hostPriority: 1000000 value: 1000000 --- apiVersion: v1 kind: Pod metadata: name: high-priority-pod labels: app: high-priority spec: priorityClassName: high-priority containers: - name: app image: nginx resources: requests: memory: 1Gi cpu: 1 limits: memory: 2Gi cpu: 27.3 使用多网络接口apiVersion: k8s.cni.cncf.io/v1 kind: NetworkAttachmentDefinition metadata: name: macvlan-network spec: config: {cniVersion: 0.3.1, type: macvlan, master: eth1, mode: bridge, ipam: {type: host-local, subnet: 192.168.1.0/24, rangeStart: 192.168.1.100, rangeEnd: 192.168.1.200, gateway: 192.168.1.1}} --- apiVersion: v1 kind: Pod metadata: name: multi-interface-pod annotations: k8s.v1.cni.cncf.io/networks: macvlan-network spec: containers: - name: app image: nginx8. 网络安全最佳实践8.1 限制Pod间通信apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: restrict-pod-communication namespace: default spec: podSelector: matchLabels: app: sensitive policyTypes: - Ingress - Egress ingress: - from: - podSelector: matchLabels: app: trusted egress: - to: - podSelector: matchLabels: app: database ports: - protocol: TCP port: 33068.2 限制外部访问apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: restrict-external-access namespace: default spec: podSelector: matchLabels: app: internal policyTypes: - Ingress ingress: - from: - ipBlock: cidr: 10.0.0.0/8 - ipBlock: cidr: 172.16.0.0/12 - ipBlock: cidr: 192.168.0.0/168.3 使用加密通信# 安装Istio istioctl install --set profiledefault -y # 启用自动注入 kubectl label namespace default istio-injectionenabled # 部署应用 kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.14/samples/bookinfo/platform/kube/bookinfo.yaml # 验证mTLS istioctl verify-install9. 高级网络配置9.1 服务网格# 安装Linkerd curl -sL https://run.linkerd.io/install | sh linkerd install | kubectl apply -f - # 验证安装 linkerd check # 注入应用 kubectl get deploy -o yaml | linkerd inject - | kubectl apply -f -9.2 网络插件自定义apiVersion: kubeadm.k8s.io/v1beta2 kind: ClusterConfiguration networking: podSubnet: 10.244.0.0/16 serviceSubnet: 10.96.0.0/12 dnsDomain: cluster.local --- apiVersion: kubeadm.k8s.io/v1beta2 kind: InitConfiguration nodeRegistration: kubeletExtraArgs: cgroup-driver: systemd9.3 网络策略自动化# 安装OPA helm repo add openpolicyagent https://open-policy-agent.github.io/gatekeeper/charts helm repo update helm install gatekeeper openpolicyagent/gatekeeper --namespace gatekeeper-system --create-namespace # 配置网络策略模板 kubectl apply -f - EOF apiVersion: templates.gatekeeper.sh/v1beta1 kind: ConstraintTemplate metadata: name: k8srequirednetworkpolicies namespace: gatekeeper-system spec: crd: spec: names: kind: K8sRequiredNetworkPolicies validation: openAPIV3Schema: properties: allowedIngress: type: array items: type: object properties: from: type: array items: type: object properties: podSelector: type: object properties: matchLabels: type: object targets: - target: admission.k8s.gatekeeper.sh rego: package k8srequirednetworkpolicies violation[msg] { input.review.kind.kind Pod not input.review.object.metadata.annotations[network-policy-exempt] not has_network_policy(input.review.object.metadata.namespace) msg : sprintf(Pod %v/%v must have a NetworkPolicy, [input.review.object.metadata.namespace, input.review.object.metadata.name]) } has_network_policy(namespace) { policies : data.inventory.namespace[namespace][networking.k8s.io/v1/NetworkPolicy] count(policies) 0 } EOF10. 网络管理工具CalicoctlCalico网络插件的命令行工具curl -O -L https://github.com/projectcalico/calicoctl/releases/download/v3.22.1/calicoctl chmod x calicoctl sudo mv calicoctl /usr/local/bin/ # 查看网络策略 calicoctl get networkpolicyCNI CLICNI插件的命令行工具go get github.com/containernetworking/cni/cmd/cni # 验证CNI配置 cni --versionKubernetes Network Debugger网络调试工具kubectl run -it --rm --imagenicolaka/netshoot netshoot -- /bin/bash # 查看网络配置 ip addr # 测试网络连通性 ping ip # 查看路由表 route -nIstioctlIstio服务网格的命令行工具curl -L https://istio.io/downloadIstio | sh -n istioctl install --set profiledefault -y # 查看服务网格状态 istioctl status # 查看服务拓扑 istioctl dashboard kiali️ 最佳实践选择合适的CNI插件根据集群规模和需求选择合适的CNI插件生产环境推荐使用Calico或Cilium测试环境可以使用Flannel网络策略配置实施默认拒绝策略仅允许必要的Pod间通信限制外部访问定期审计网络策略Service配置根据需求选择合适的Service类型合理设置Service端口考虑使用Headless Service进行服务发现Ingress配置选择合适的Ingress控制器配置TLS加密合理设置路由规则实施访问控制网络性能优化调整MTU大小配置网络QoS使用多网络接口优化Pod分布网络安全启用网络策略使用加密通信限制Pod权限定期安全审计故障排查熟悉网络故障排查工具建立网络监控制定网络故障处理流程定期进行网络演练自动化管理使用Helm管理网络组件实施网络配置自动化建立网络配置版本控制自动化网络策略生成文档和培训建立网络架构文档培训团队网络知识记录网络配置变更分享网络最佳实践持续改进定期评估网络性能优化网络配置学习和应用新的网络技术适应业务需求变化 总结Kubernetes网络管理是集群运行的重要组成部分涉及多个组件和配置。通过本文的实践你应该已经掌握了CNI插件的选择和配置Service类型的使用场景Ingress的部署和配置NetworkPolicy的实施网络故障排查方法网络性能优化策略网络安全最佳实践高级网络配置网络管理工具的使用记住网络配置是一个持续优化的过程需要根据业务需求和集群规模不断调整。在实际生产环境中要结合具体情况选择合适的网络方案确保集群的稳定运行和安全。susu碎碎念网络策略是生产环境的必备配置不要忽视选择CNI插件时要考虑集群规模和性能需求定期检查网络连通性及时发现问题网络安全要从设计阶段开始考虑文档很重要要记录网络架构和配置网络监控不能少及时发现性能瓶颈持续学习网络新技术保持技术先进性觉得有用点个赞再走咱们下期见

相关文章:

Kubernetes网络管理:从CNI到Ingress的全面解析

Kubernetes网络管理:从CNI到Ingress的全面解析 🔥 硬核开场 各位技术大佬们,今天咱们来聊聊Kubernetes网络管理。别以为Kubernetes的网络就是简单的IP分配,实际上它涉及CNI插件、Service、Ingress、NetworkPolicy等多个组件&#…...

Qwen3.5-27B企业落地指南:电商客服/教育答疑/办公提效三大场景应用

Qwen3.5-27B企业落地指南:电商客服/教育答疑/办公提效三大场景应用 1. 企业级AI助手的新选择 在数字化转型浪潮中,企业正寻求更智能的解决方案来提升运营效率。Qwen3.5-27B作为一款视觉多模态理解模型,为企业提供了全新的AI助手选择。这款模…...

从ChatGPT的‘提示词’到图像修复:PromptIR如何用‘提示学习’教会AI看图说话并‘修图’?

PromptIR:当提示学习遇见图像修复,AI如何像ChatGPT一样"看图说话" 你是否曾经对着模糊的老照片叹气,或是被雾霾笼罩的风景照感到无奈?图像修复技术正以前所未有的速度发展,而最新突破PromptIR将自然语言处理…...

别再死记硬背公式了!手把手带你画图推导‘放苹果’问题的状态转移方程

可视化拆解动态规划:从画图到推导‘放苹果’问题的本质 在算法学习的道路上,动态规划(DP)常常是让初学者望而生畏的难关。那些看似神奇的递推公式,往往被当作黑盒魔法般死记硬背。今天,我们要彻底改变这种学…...

D14: 周复盘:人是核心,工具是杠杆

文章目录 D14: 周复盘:人是核心,工具是杠杆 🎯 本周回顾:都发生了什么? 第一周的大事记 数据不会说谎 核心复盘内容 复盘维度一:人的层面——谁在进步,谁在旁观? 复盘维度二:工具层面——哪些工具真的在产生价值? 复盘维度三:流程层面——AI 改变了什么,没改变什么…...

JiYuTrainer深度解析:极域电子教室反控制技术架构揭秘

JiYuTrainer深度解析:极域电子教室反控制技术架构揭秘 【免费下载链接】JiYuTrainer 极域电子教室防控制软件, StudenMain.exe 破解 项目地址: https://gitcode.com/gh_mirrors/ji/JiYuTrainer JiYuTrainer是一款针对极域电子教室系统的专业反控制软件&#…...

1 7.2 网卡的设置

🔥个人主页:杨利杰YJlio❄️个人专栏:《Sysinternals实战教程》《Windows PowerShell 实战》《WINDOWS教程》《IOS教程》《微信助手》《锤子助手》 《Python》 《Kali Linux》 《那些年未解决的Windows疑难杂症》🌟 让复杂的事情更…...

实测对比:Faster-LIO vs FastLIO2,iVox到底让我的Livox Mid360快了多少?

Faster-LIO与FastLIO2性能实测:iVox如何提升Livox Mid360的SLAM效率 当Livox Mid360固态激光雷达以每秒240,000点的速度扫描环境时,传统基于ikd-tree的SLAM算法常面临计算瓶颈。去年我们团队在无人机巡检项目中就遭遇过这样的困境——FastLIO2在复杂植被…...

Claude API 注册被拒?国内开发者最全绕坑指南

作为一名在AI工具堆里摸爬滚打的国内开发者,Claude API注册那道坎,我算是结结实实摔过跟头。前阵子为了接入Claude做合同解析工具,光注册就折腾了快一周,踩过的坑能凑成一本"血泪史"。最初我抱着侥幸心理,用…...

终极指南:如何用ViGEmBus虚拟手柄驱动解决Windows游戏兼容性问题

终极指南:如何用ViGEmBus虚拟手柄驱动解决Windows游戏兼容性问题 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 你是否曾为心爱的Switch手柄无法…...

马斯克五步法实战:用Notion和飞书搭建你的个人效率系统(附模板)

马斯克五步法实战:用Notion和飞书搭建你的个人效率系统(附模板) 在信息爆炸的时代,个人知识管理和团队协作效率成为职场竞争力的关键分水岭。埃隆马斯克创立的五步工作法(需求验证→流程简化→持续优化→快速迭代→全面…...

2025_NIPS_iVideoGPT: Interactive VideoGPTs are Scalable World Models

文章核心内容与创新点总结 核心内容 iVideoGPT 是一款基于自回归Transformer的可扩展世界模型,通过融合视觉观测、动作、奖励等多模态信号,实现交互式环境模拟。其核心是先在百万级人类与机器人操作轨迹上预训练,再针对下游任务(动作条件视频预测、视觉规划、基于模型的强…...

Windows 10系统精简终极指南:如何用开源工具让你的电脑快如闪电?

Windows 10系统精简终极指南:如何用开源工具让你的电脑快如闪电? 【免费下载链接】Win10BloatRemover Configurable CLI tool to easily and aggressively debloat and tweak Windows 10 by removing preinstalled UWP apps, services and more. Origina…...

AI视频字幕去除技术革命:3分钟掌握专业级硬字幕清理方案

AI视频字幕去除技术革命:3分钟掌握专业级硬字幕清理方案 【免费下载链接】video-subtitle-remover 基于AI的图片/视频硬字幕去除、文本水印去除,无损分辨率生成去字幕、去水印后的图片/视频文件。无需申请第三方API,本地实现。AI-based tool …...

如何用CardEditor将桌游卡牌设计效率提升300%:新手完整指南

如何用CardEditor将桌游卡牌设计效率提升300%:新手完整指南 【免费下载链接】CardEditor 一款专为桌游设计师开发的批处理数值填入卡牌生成器/A card batch generator specially developed for board game designers 项目地址: https://gitcode.com/gh_mirrors/ca…...

麒麟V10/龙蜥arm架构二进制安装mysql8.0.36

一、安装前环境监测 在MySQL被收购后,MySQL最初的作者担心MySQL存在闭源的风险,在MySQL的分支上开发了mariadb。后来一些Linux分发版就将mariadb作为系统默认安装的数据库系统 rpm -qa |grep -i mariadb#可能显示的结果:mariadb-libs-5.5.6…...

【nanobot】 实战与二次开发:4000 行代码,一套完整的 【AI Agent】 框架

🐈 nanobot 实战与二次开发:4000 行代码,一套完整的 AI Agent 框架 🤵‍♂️ 个人主页:小李同学_LSH的主页 ✍🏻 作者简介:LLM学习者 🐋 希望大家多多支持,我们一起进步&…...

从“定比分点”到“交比不变”:用初中三角形面积公式,轻松理解射影几何的核心定理

从“定比分点”到“交比不变”:用初中三角形面积公式,轻松理解射影几何的核心定理 数学的魅力往往藏在我们最熟悉的工具里。当你第一次听说"射影几何"时,脑海中浮现的可能是复杂的坐标系和晦涩的符号——但今天,我要带你…...

CentOS系统------DBMS

逻辑梳理一、准备工作 # 切换到root或使用sudo su - 二、安装 Apache sudo yum install -y httpd sudo systemctl start httpd sudo systemctl enable httpd 三、安装 PHP 环境 sudo yum install -y php php-mysqlnd php-json php-mbstring sudo systemctl restart httpd 四、安…...

告别JIT编译卡顿:用.NET 8.0 AOT编译你的第一个独立Web API(附完整配置流程)

告别JIT编译卡顿:用.NET 8.0 AOT编译你的第一个独立Web API(附完整配置流程) 你是否经历过这样的场景:深夜上线新版本,服务器刚启动就被用户投诉"请求超时"?监控面板上那条刺眼的冷启动曲线&…...

释放存储空间:你的免费开源视频图像压缩神器

释放存储空间:你的免费开源视频图像压缩神器 【免费下载链接】compressO Convert any video/image into a tiny size. 100% free & open-source. Available for Mac, Windows & Linux. 项目地址: https://gitcode.com/gh_mirrors/co/compressO 你是否…...

Agent记忆架构设计剖析系列:原理、权衡与场景适配(hermes设计原理)

Hermes 是一款主打 “自我进化” 的 Agent 框架,其记忆系统的核心设计哲学是认知经济性—— 即 “只记住对未来行为有价值的信息”,通过严格的记忆审查与精炼机制,将有限的计算资源集中于高价值记忆,实现了记忆质量与系统效率的平…...

STM32H743+SOEM+英威腾DA200伺服:一个嵌入式EtherCAT主站的完整调试笔记(含代码)

STM32H743与英威腾DA200伺服的EtherCAT主站实战:从硬件搭建到运动控制 在工业自动化领域,实时以太网通信协议EtherCAT因其卓越的性能和灵活性正成为运动控制系统的首选方案。本文将分享一个基于STM32H743微控制器和SOEM开源库实现EtherCAT主站控制英威腾…...

抖音无水印视频下载终极指南:3步实现高效批量下载与智能管理

抖音无水印视频下载终极指南:3步实现高效批量下载与智能管理 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback…...

避坑指南:STM32H7的SD卡虚拟U盘项目,为什么加了FreeRTOS后USB读写就挂了?

STM32H7虚拟U盘开发实战:FreeRTOS环境下USB与SD卡协同设计精要 在嵌入式存储解决方案中,将SD卡通过USB接口模拟为U盘是常见需求。当项目从裸机迁移到FreeRTOS环境时,原本稳定的USB大容量存储类(MSC)功能可能突然失效—…...

real-anime-z快速上手指南:无需代码,通过WebUI生成高质量动漫图

real-anime-z快速上手指南:无需代码,通过WebUI生成高质量动漫图 1. 模型简介 real-anime-z是基于Z-Image的LoRA版本开发的文生图模型,专注于生成高质量的动漫风格图片。这个模型通过Xinference部署,并提供了基于Gradio的WebUI界…...

金蝶云单据下推避坑指南:当子单据体遇上复杂条件,我这样用插件搞定

金蝶云单据下推高阶实战:复杂条件与跨层级数据抓取全解析 当你在金蝶云项目中遇到需要根据特定条件筛选子单据体数据,并且还要跨层级获取基础资料值时,是否感到无从下手?本文将带你深入剖析这个典型业务场景的解决方案。 1. 复杂下…...

Re:Linux系统篇(六)权限篇 · 一:用户切换与进程嵌套sudo提权与sudoers设置精讲

◆ 博主名称: 晓此方-CSDN博客 大家好,欢迎来到晓此方的博客。 ⭐️Linux系列个人专栏: 【主题曲】Linux ⭐️Re系列专栏:我们思考 (Rethink) 我们重建 (Rebuild) 我们记录 (Record) 文章目录概要&序論1.1用户切换指令1.1.…...

给TMS320F28335的存储空间画张“地图”:从零理解存储器与寄存器映射(附CCS实战)

给TMS320F28335的存储空间画张"地图":从零理解存储器与寄存器映射(附CCS实战) 第一次接触DSP开发时,最让我头疼的就是那些密密麻麻的地址和寄存器名称。直到有天我盯着城市交通图发呆,突然意识到——芯片内…...

告别OFDM卡顿:用MATLAB手把手仿真AFDM波形,搞定高铁、无人机通信的时变信道难题

告别OFDM卡顿:用MATLAB手把手仿真AFDM波形,搞定高铁、无人机通信的时变信道难题 高铁窗外的风景飞速后退,无人机图传画面却开始卡顿——这正是传统OFDM技术在高速移动场景下的典型痛点。当多普勒频移超过一定阈值,正交频分复用的子…...