编排系统K8S之Service资源解析

简介: 今天我们来了解下K8S上的Service资源的相关话题,这是容器化体系的第1篇,基本的概念、基础理论不在本章描述。

      今天我们来了解下K8S上的Service资源的相关话题,这是容器化体系的第1篇,基本的概念、基础理论不在本章描述。

      众所周知,云原生现在越来越流行,已成为云计算发展的必然趋势,在云原生的4大核心领域中,容器化也必然成为不可或缺的一项伟大工程。

     基于Google 2014年创建管理,其多年大规模容器管理技术Borg的开源版本的Kubernetes,可以在物理或虚拟机的上运行容器化应用,能提供一个以“容器为中心的基础架构”,满足在生产环境中运行应用的一些常见需求。

      Service资源在编排系统K8S上主要用来解决Pod的访问问题。我们知道在K8S上Pod由于各种原因需要进行重建,此时,重建后的Pod的Ip地址和名称均已发生变更,这样一来使得应用服务访问Pod时就变得有些不便。为了解决Pod访问能有一个固定的端点,在K8S平台上,我们就借用Service资源进行解决。

     简单来讲,Service对象就是工作在节点上的一组Iptables 或 Ipvs规则,用于将到达Service对象Ip地址的流量调度转发至相应Endpoint对象指向的Ip地址 和 端口之上。工作于每个节点的Kube-Proxy组件通过ApiServer持续监控着各Service及其关联的Pod对象,并将其创建或变动实时反映至当前工作节点上相应的Iptables 或 Ipvs规则。其实Service和Pod或其他资源的关联,本质上不是直接关联,它依靠一个中间组件Endpoint,Endpoint主要作用就是引用后端Pod或其他资源(比如K8S外部的服务也可以被Endpoint引用),所谓Endpoint就是Ip地址 + 端口。

       

     

      如上图所示:在K8S平台上,Kube-Proxy会不断监视着ApiServer上的Service资源变动情况,及时将变动转化为本机的Iptables 或 Ipvs规则,对应客户端Pod访问对应Server Pod,报文首先会从本机的Iptables 或 Ipvs规则所匹配,然后再由对应规则逻辑把请求调度到对应的Pod上。

       Service代理模式  

      截止目前,在K8S平台上Service代理模式主要包含以下三种:

       1、userspace

      早期的K8S平台版本(在version 1.1及之前的版本)所采用的默认代理模式。在 Kubernetes v1.1 版本,新增了 Iptables 代理,但并不是默认的运行模式。

       2、iptables

      从 Kubernetes v1.2 起,默认就是 Iptables 代理。在 Kubernetes v1.8.0-beta.0 中,添加了 Ipvs 代理。

       3、ipvs

     后面的版本(即 version 1.11开始及以后版本)默认代理模式为如果对应ipvs的模块没有加载,它会自动降级为Iptables 。在 Kubernetes 1.14 版本开始默认使用 Ipvs 代理。

      此种模式,Kube-Proxy 会监视 Kubernetes Service 对象和 Endpoints ,调用 netlink 接口以相应地创建 Ipvs 规则并定期与 Kubernetes Service 对象和 Endpoints 对象同步 Ipvs 规则,以确保 Ipvs 状态与期望一 致。访问服务时,流量将被重定向到其中一个后端 Pod。

      与 Iptables 类似,Ipvs 于 netfilter 的 hook 功能,但使用哈希表作为底层数据结构并在内核空间中工作。这意 味着 Ipvs 可以更快地重定向流量,并且在同步代理规则时具有更好的性能。此外,Ipvs 为负载均衡算法提供了更多选项。


       Service类型

       截止目前,在K8S平台上Service类型主要包含以下四种:

       1、Cluster IP,即 我们在创建Service资源时,如果不指定其type类型的话,默认为此种类型

       2、NodePort

       3、Load Balancer

       4、ExternalName

       不同类型的service,其功能和作用也有所不同。在 Kubernetes v1.0 版本, Service 是 “4层”(TCP/UDP over IP)概念。在 Kubernetes v1.1 版本,新增了 Ingress API(beta 版),用来表示 “7层”(HTTP)服务。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
机器学习/深度学习 文字识别 监控
安全监控系统:技术架构与应用解析
该系统采用模块化设计,集成了行为识别、视频监控、人脸识别、危险区域检测、异常事件检测、日志追溯及消息推送等功能,并可选配OCR识别模块。基于深度学习与开源技术栈(如TensorFlow、OpenCV),系统具备高精度、低延迟特点,支持实时分析儿童行为、监测危险区域、识别异常事件,并将结果推送给教师或家长。同时兼容主流硬件,支持本地化推理与分布式处理,确保可靠性与扩展性,为幼儿园安全管理提供全面解决方案。
653 3
|
网络协议 安全 区块链
DNS+:互联网的下一个十年,为什么域名系统正在重新定义数字生态? ——解读《“DNS+”发展白皮书(2023)》
DNS+标志着域名系统从基础寻址工具向融合技术、业态与治理的数字生态中枢转变。通过与IPv6、AI和区块链结合,DNS实现了智能调度、加密传输等新功能,支持工业互联网、Web3及万物互联场景。当前,中国IPv6用户达7.6亿,全球DNSSEC支持率三年增长80%,展现了其快速发展态势。然而,DNS+仍面临安全威胁、技术普惠瓶颈及生态协同挑战。未来,需推动零信任DNS模型、加强威胁情报共享,并加速标准制定,以筑牢数字时代网络根基,实现更安全、高效的数字生态建设。
785 4
|
机器学习/深度学习 人工智能 自然语言处理
AI技术如何重塑客服系统?解析合力亿捷AI智能客服系统实践案例
本文探讨了人工智能技术在客服系统中的应用,涵盖技术架构、关键技术和优化策略。通过感知层、认知层、决策层和执行层的协同工作,结合自然语言处理、知识库构建和多模态交互技术,合力亿捷客服系统实现了智能化服务。文章还提出了用户体验优化、服务质量提升和系统性能改进的方法,并展望了未来发展方向,强调其在客户服务领域的核心价值与潜力。
869 6
|
传感器 人工智能 监控
反向寻车系统怎么做?基本原理与系统组成解析
本文通过反向寻车系统的核心组成部分与技术分析,阐述反向寻车系统的工作原理,适用于适用于商场停车场、医院停车场及火车站停车场等。如需获取智慧停车场反向寻车技术方案前往文章最下方获取,如有项目合作及技术交流欢迎私信作者。
1108 2
|
前端开发 数据安全/隐私保护 CDN
二次元聚合短视频解析去水印系统源码
二次元聚合短视频解析去水印系统源码
582 4
|
人工智能 自然语言处理 算法
DeepSeek大模型在客服系统中的应用场景解析
在数字化浪潮下,客户服务领域正经历深刻变革,AI技术成为提升服务效能与体验的关键。DeepSeek大模型凭借自然语言处理、语音交互及多模态技术,显著优化客服流程,提升用户满意度。它通过智能问答、多轮对话引导、多模态语音客服和情绪监测等功能,革新服务模式,实现高效应答与精准分析,推动人机协作,为企业和客户创造更大价值。
1089 5
|
人工智能 自然语言处理 算法
DeepSeek 大模型在合力亿捷工单系统中的5大应用场景解析
工单系统是企业客户服务与内部运营的核心工具,传统系统在分类、派发和处理效率方面面临挑战。DeepSeek大模型通过自然语言处理和智能化算法,实现精准分类、智能分配、自动填充、优先级排序及流程优化,大幅提升工单处理效率和质量,降低运营成本,改善客户体验。
817 2
|
存储 前端开发 JavaScript
在线教育网课系统源码开发指南:功能设计与技术实现深度解析
在线教育网课系统是近年来发展迅猛的教育形式的核心载体,具备用户管理、课程管理、教学互动、学习评估等功能。本文从功能和技术两方面解析其源码开发,涵盖前端(HTML5、CSS3、JavaScript等)、后端(Java、Python等)、流媒体及云计算技术,并强调安全性、稳定性和用户体验的重要性。
|
Kubernetes Linux 虚拟化
入门级容器技术解析:Docker和K8s的区别与关系
本文介绍了容器技术的发展历程及其重要组成部分Docker和Kubernetes。从传统物理机到虚拟机,再到容器化,每一步都旨在更高效地利用服务器资源并简化应用部署。容器技术通过隔离环境、减少依赖冲突和提高可移植性,解决了传统部署方式中的诸多问题。Docker作为容器化平台,专注于创建和管理容器;而Kubernetes则是一个强大的容器编排系统,用于自动化部署、扩展和管理容器化应用。两者相辅相成,共同推动了现代云原生应用的快速发展。
4346 11
|
存储 分布式计算 Hadoop
基于Java的Hadoop文件处理系统:高效分布式数据解析与存储
本文介绍了如何借鉴Hadoop的设计思想,使用Java实现其核心功能MapReduce,解决海量数据处理问题。通过类比图书馆管理系统,详细解释了Hadoop的两大组件:HDFS(分布式文件系统)和MapReduce(分布式计算模型)。具体实现了单词统计任务,并扩展支持CSV和JSON格式的数据解析。为了提升性能,引入了Combiner减少中间数据传输,以及自定义Partitioner解决数据倾斜问题。最后总结了Hadoop在大数据处理中的重要性,鼓励Java开发者学习Hadoop以拓展技术边界。
585 7

热门文章

最新文章

推荐镜像

更多