K8s之Service学习

kubectl 命令详解 使用场景包括:在 Kubernetes 集群中增加或减少 pod、服务、部署等资源的副本数。使用场景包括:在 Kubernetes 集群中创建新的 pod、服务、部署等资源。使用场景包括:在 Kubernetes 集群中创建新的资源或更新已有的资源。使用场景包括:在 Kubernetes 集群中查看部署的滚动更新状态。使用场景包括:在 Kubernetes 集群中删除不再需要的 pod、服务、部署等资源。使用场景包括:在 Kubernetes 集群中修改已有的 pod、服务、部署等资源的配置。 阅读详情

Service主要用于提供网络服务,通过Service的定义,能够为客户端应用提供稳定的访问地址(域名或IP地址)和负载均衡功能,以及屏蔽后端Endpoint的变化,是Kubernetes实现微服务的核心资源。

1 Service基础

1.1 从案例认识service

一个提供Web服务的Pod集合,由三个Tomcat容器副本组成,每个容器提供的服务端口号都为8081:

apiVersion: apps/v1
kind: Deployment  
metadata:
  name: webapp
spec:
  selector :
    matchLabels:
      app: webapp
  replicas: 3
  template:
    metadata:
      labels:
        app: webapp
    spec:
      containers:
      - name: webapp
        image: tomcat
        ports:
        - containerPort: 8081

 kubectl apply -f tomcat.yaml -n [namespace]

客户端应用可以直接通过这些Pod的IP地址和端口号8081访问Web服务。

现在将service加进来,使用如下命令创建service

kubectl expose deployment webapp -n [namespace]

kubectl get service -n [namespace]

查看新创建的Service,可以看到系统为它分配了一个虚拟IP地址(ClusterIP地址),Service的端口号则从Pod中的containerPort复制而来。接下来就可以通过Service的IP地址和Service的端口号访问该Service,访问被自动负载分发到了后端三个Pod之一。

当然也可以使用过yaml文件创建service

apiVersion: v1
kind: Service  
metadata:
  name: webapp
spec:
  selector :
    app: webapp
  ports:
  - protocol: TCP
    port: 8081
    targetPort: 8081

一个Service对应的“后端”由Pod的IP和容器端口号组成,即一个完整的“IP:Port”访问地址,这在Kubernetes系统中叫作Endpoint。

1.2 负载均衡机制

从服务IP到后端Pod的负载均衡机制,则是由每个Node上的kube-proxy负责实现的。

1)kube-proxy的代理模式:

userspace模式:用户空间模式,由kube-proxy完成代理的实现,效率最低,不再推荐使用。

iptables模式:kube-proxy通过设置Linux Kernel的iptables规则,实现从Service到后端Endpoint列表的负载分发规则,效率很高。但是,如果某个后端Endpoint在转发时不可用,此次客户端请求就会得到失败的响应,相对于userspace模式来说更不可靠。此时应该通过
为Pod设置readinessprobe(服务可用性健康检查)来保证只有达到ready状态的Endpoint才会被设置为Service的后端Endpoint。

ipvs模式:kube-proxy通过设置Linux Kernel的netlink接口设置IPVS规则,转发效率和
支持的吞吐率都是最高的。

详细介绍:

Kubernetes从1.8开始增加了IPVS支持,IPVS相对于iptables来说效率更高,使用ipvs需要在允许proxy节点上安装ipvsadm,ipset工具包加载ipvs内核。并且ipvs可以轻松处理每秒10万次转发请求。

当proxy启动的时候,proxy将验证节点是否安装ipvs模块,如果没有安装将退回iptables模式IPVS模式也是基于Netfilter,支持更复杂的复杂均衡算法(最小复杂、最少连接、加权等),支持Service的健康检查和连接重试功能。

IPVS依赖于iptables,使用iptables进行包过滤,SNAT,masuared。

IPVS将使用ipset来存储需要DROP或MASQUARED的流量源地址和目标地址,这样可以保证iptables规则数量固定,不需要关心集群中有多少Service。

 2)会话保持机制

保证同一个外部IP一直访问同一个后端pod,同时,用户可以设置会话保持的最长时间

apiVersion: v1
kind: Service  
metadata:
  name: webapp
spec:
  sessionAffinity:ClientIP
  sessionAffinityConfig:
    clientIP:
        timeoutSeconds:1000s
  selector:
    app: webapp
  ports:
  - protocol: TCP
    port: 8081
    targetPort: 8081

1.3 多端口服务

Service可以设置多个端口号来分别提供不同的服务:

apiVersion: v1
kind: Service  
metadata:
  name: webapp
spec:
  selector :
    app: webapp
  ports:
   -port: 8081
    targetPort: 8081
    name:web
   -port:8082
    targetPort: 8082
    name:management

或者同一个端口号使用的协议不同,如TCP和UDP,也可以为多个端口号来提供不同的服务

1.4 定义外部服务

普通的Service通过Label Selector对后端Endpoint列表进行了一次抽象,如果后端的Endpoint不是由Pod副本集提供的,则Service还可以抽象定义任意其他服务。

用户在创建Service资源对象时不设置Label Selector(后端Pod也不存在),同时再定义一个与Service关联的Endpoint资源对象,在Endpoint中设置外部服务的IP地址和端口号

 1.5 将service暴露出去

Kubernetes为Service创建的ClusterIP地址是对后端Pod列表的一层抽象,对于集群外部来说并没有意义,但有许多Service是需要对集群外部提供服务的,Kubernetes提供了多种机制将Service暴露出去,供集群外部的客户端访问。可以通过Service资源对象的类型字段“type”进行设置:

ClusterIP:Kubernetes默认会自动设置Service的虚拟IP地址,仅可被集群内部的客户端应用访问。

NodePort:将Service的端口号映射到每个Node的一个端口号上,这样集群中的任意Node都可以作为Service的访问入口地址,即NodeIP:NodePort。

LoadBalancer:将Service映射到一个已存在的负载均衡器的IP地址上,通常在公有云环境中使用。

ExternalName:将Service映射为一个外部域名地址,通过externalName字段进行设置。

apiVersion: v1
kind: Service  
metadata:
  name: webapp
spec:
  tyoe:NodePort
  selector:
    app: webapp
  ports:
   -port: 8081
    targetPort: 8081
    nodePort:8081

2 DNS服务

作为服务发现机制的基本功能,在集群内需要能够通过服务名对服务进行访问,这就需要一个集群范围内的DNS服务来完成从服务名到ClusterIP地址的解析。DNS服务在Kubernetes的发展过程中经历了3个阶段:

 

 

附录:

Service的YAML格式文件定义

各属性的说明如下表:

【科普】Kubectl基本操作命令 #############常用命令################# ## kubectl常用参数 help—获取帮助如,kubectl get pods –help get— 显示有关一个或多个资源的信息。可以将get和单个对象一起使用,并添加--watch标志以实时观察更新。 describe—显示关于一个或多个资源的详细信息 logs—显示容器日志 。logs命令需要一个pod名称。当在多个pod中时,使用-c my-container标志来指定一个容器。使用--previous标... 阅读详情

相关推荐

K8S常用指令(必备)

3. kubectl autoscale deployment {name} --cpu-percent={percent} --min={min} --max={max} - 自动扩缩deployment的pod数量。2. kubectl expose deployment {name} --port={port} --target-port={targetport} --type={type} - 创建service。

weixin_72098711的博客 1289

04-Kubernetes中的Service

1. 认识Service Service 的意思是服务,在 Kubernetes 中,它被用来做服务发现功能,是将一组 Pods 公开为网络服务的抽象方法。 2. Service的类型 2.1 ClusterIP ClusterIP 是Service的默认类型,在不做任何声明的情况下,默认是这种类型。这种类型的特点是,只允许在集群内访问,无法通过外部浏览器访问。 下面通过两种方式,暴露服务 方式一:命令行方式 #暴露服务 kubectl expose deployment my-dep --port=8

yuhuofei的草屋 1328

【学习笔记 - Kubernetes (k8s)】Kubernetes 指定外部访问service的端口

Kubernetes 指定外部访问service的端口 集群外部方式访问:NodePort NodePort在kubenretes里是一个早期广泛应用的服务暴露方式。Kubernetes中的service默认情况下都是使用的ClusterIP这种类型,这样的service会产生一个ClusterIP,这个IP只能在集群内部访问,要想让外部能够直接访问service,需要将service type修...

AlanLee97的博客 4811

Kubernetes service操作命令

【代码】Kubernetes service操作命令。

愤怒的小兵 1075

零基础学kubernetes(k8s)必看教程,带你10分钟快速实战入门k8s

作为一个工作十余年,拥有比较丰富的计算机网络运维、主机运维、云计算平台运维、自动化运维开发经验的老鸟,我来说说我当初刚接触Kubernetes时的一些感受以及学习技巧。

Cloud_Native的博客 2万+

K8S学习之基础十九:k8s的四层代理Service

k8s的四层代理service

云上艺旅的博客 1182

Kubernetes-K8S学习笔记之Service(四)

四. Service介绍 1. 基本感念 service 是一组具有相同 label pod 集合的抽象,集群内外的各个服务可以通过 service 进行互相通信,当创建一个 service 对象时也会对应创建一个 endpoint 对象,endpoint 是用来做容器发现的,service 只是将多个 pod 进行关联,实际的路由转发都是由 kubernetes 中的 kube-proxy 组件来实现,因此,service 必须结合 kube-proxy 使用,kube-proxy 组件可以运行在 kub

X-man 360

蓝桥杯STM32G431RBT6学习——GPIO

蓝桥杯STM32G431RBT6学习——GPIO

weixin_44098974的博客 2234

kubernetes学习之路-第七天-k8s service

【代码】kubernetes学习之路-第七天。

weixin_43920940的博客 255

C++中const和指针*的组合问题

今天在复习> 章节7.3的时候想到以前做的一个题,const和指针运算符*的若干种组合的合法性和意义问题,有点混淆,所以写了一个测试代码来验证一下,简单明了,一目了然。如果有什么遗漏的话欢迎指出。 首先是在Ubuntu14.04.1下用gcc 4.8.4编译运行的结果,编译器报错信息都附加在对应语句后面的注释里 /* * Note : Test for the combinations of

theColdOne的专栏 1082

JSON(详解)

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它以易于阅读和编写的文本格式来存储和表示数据,通常用于在不同的系统之间进行数据交换。JSON数据以键-值对的形式组织,可以包含对象、数组、字符串、数字等基本数据类型。它经常在Web开发、API通信等领域被广泛使用。

7706

学习K8s:从 Deployment 到 Service

K8s,Kubernetes 的缩写,起源于希腊语意为舵手、领航员。是一种容器编排工具,于14.7被Docker收购,同类产品有docker swarm: k8s master 节点: master节点:k8s集群的管理节点,提供集群资源数据访问入口,负责运行Api Server进程、Scheduler服务进程、Controller Manager服务进程、et...

Tinkle2015 1688

毕业设计——基于卷积神经网络的高速公路团雾智能识别系统设计与实现(数据集+源码+可视化+综述)

同时,也可以结合其他技术,如雷达、红外传感器等,实现多源信息的融合与协同处理,提高系统的可靠性和稳定性。实验结果表明,该系统能够实现对高速公路团雾的准确、快速识别,为高速公路的安全运行提供了有力保障。团雾作为一种常见的气象现象,具有突发性、局地性和消散迅速的特点,对高速公路的行车安全构成严重威胁。通过设计合适的网络结构,如增加卷积层、池化层等,实现对图像中团雾特征的自动学习和提取。预处理:对采集到的图像进行去噪、增强等预处理操作,以提高图像质量,降低后续处理的难度。读取数据,随机分为训练集和验证集。

abackcab的博客 668

kubernetes学习-Service

对于某些服务,需要公开多个端口,Service也需要配置多个端口定义,通过端口名称区分。

weixin_45294285的博客 1012

二极管钳位电路、限幅电路和检波电路Multisim电路仿真

本文系统介绍了二极管钳位、限幅和检波三种基础电路的工作原理及Multisim仿真验证。钳位电路通过电容-二极管配合实现波形整体平移,将波峰或波谷固定在指定电压;限幅电路利用二极管导通特性削除信号超出设定阈值的部分;检波电路则通过半波整流和电容滤波从调幅波中提取音频信号。三种电路均通过Multisim仿真验证了理论分析结果,展示了二极管在信号处理中的关键作用。这些基础电路广泛应用于信号调理、电平保护和通信解调等领域。

XU157303764的博客 1125

电商平台系统需求规格说明书(示例)

​​电商系统​​:指本文件所描述的集商品展示、销售、支付、物流跟踪、用户管理等功能于一体的综合性在线购物平台。​​API​​:应用程序编程接口(Application Programming Interface),用于实现系统各模块之间或与外部系统之间的数据交互和功能调用。

跟佟格湾一起学习计算机知识吧~ 1265

kubernetes(k8s) 学习 (五) service的三种工作模式+四种类型详解

文章目录service是什么 service是什么 service解决的问题: 让集群外部的主机访问到集群内部的pod(容器),也就是提供的业务,如何发布出去,当pod进行自动伸缩时,如何让新增的pod被自动的发现,并且进行自动的负载均衡。 它是交互etcd的,信息都持久化的存储在etcd中。etcd是通过堆栈的形式部署的,并不具备高可用。可以通过kubectl get -n kube-syste...

weixin_45649763的博客 5847

【ComfyUI】FluxKontext 身形调优与体态增强

AI身形调优与体态增强解决方案 该工作流通过Flux系列模型实现人物体态的智能化增强,主要特点包括: 采用UNet主体模型+双文本编码器+身形增强LoRA的架构组合 通过ReferenceLatent保持原始姿态的同时强化胸腰臀比例 完整工作流包含图像加载、文本编码、潜空间映射等8个核心节点 支持自动化的前后效果对比展示 应用优势: 保持人物自然姿态的前提下实现局部强化 支持通过Prompt精确控制增强方向 适用于摄影后期、角色美化等创作场景 输出效果稳定且风格统一 使用方

Mr数据杨 1302

K8s(Kubernetes)学习(五)——Service:ClusterIP、NodePort、LoadBalancer、 ExternalName

官网地址: https://kubernetes.io/zh-cn/docs/concepts/services-networking/service/将运行在一个或一组 Pod 上的网络应用程序公开为网络服务的方法。通俗定义: Service 用来为 pod 提供网络服务的一种方式。

Pistachiout的学习博客 1543

华为OD技术面真题 - JAVA开发 - 1

汇总华为OD技术面八股JAVA八股,高频技术真题并提供详细解答。

qq_45776114的博客 1203

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

云原生技术公开课学习笔记:K8s网络概念及策略控制、Kubernetes Service

十、Kubernetes网络概念及策略控制 1、Kubernetes基本网络模型 因为容器的网络发展复杂性就在于它其实是寄生在Host网络之上的。从这个角度讲,可以把容器网络方案大体分为Underlay/Overlay两大派别: Underlay的标准是它与Host网络是同层的,从外在可见的一个特征就是它是不是使用了Host网络同样的网段、输入输出基础设备、容器的IP地址是不是需要与Host网络取得协同(来自同一个中心分配或统一划分)。这就是Underlay Overlay不一样的地方就在于它并不需要

hxt的博客 1207

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

第五十七节 k8s 1.31.x 之 Service 学习

登录后复制 【k8s中svc、ep与pod的关系】 在 Kubernetes(K8s)中,服务(Service,简称 SVC)、端点(Endpoint,简称 EP)和 容器组(Pod)是关键概念,它们相互协作,共同实现应用的网络连接与服务发现。 它们的关系如下: Pod 基础概念:Pod 是 K8s 中最小的可部署和可...

cnzzs的博客 1240

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

k8s学习-Service(概念、模板、创建、外部代理、删除等)_service文件模板

Service可以简单的理解为逻辑上的一组Pod,一种可以访问Pod的策略,而且其他Pod可以通过这个Service访问到这个Service代理的Pod。相对于Pod而言,它会有一个固定的名称,一旦创建就固定不变。Kubernetes 为 Pods 提供自己的IP地址,并为一组 Pod 提供相同的DNS名, 并且可以在它们之间进行负载均衡。service在kubectl中可以简写为svc。

2401_87034477的博客 1295

K8S学习之service

service 一种可以访问后端pod的策略,通过访问service来访问到service关联的后端pod,通常是通过Label Selector实现的。 在kubernetes集群中有三类ip地址: node network(节点网络),pod network(pod 网络),这两种网络地址是我们实实在在配置的,其中节点网络地址是配置在节点接口之上,而pod网络地址是配置在pod资源之上的,因此这些地址都是配置在某些设备之上的,这些设备可能是硬件,也可能是软件模拟的,cluster network(集群地

weixin_60092693的博客 578

Kubernetes学习之Service

一、认识Service   Service是Kubernetes的核心资源之一,通常可看做是微服务的一种实现。事实上它是一种抽象:通过规则定义出由多个Pod对象组合而成的逻辑集合,以及访问这组Pod的策略;Service关联Pod资源的规则要借助Selector标签选择器来完成。   由Deployment等控制器管理的Pod对象中断后由新建的资源对象所取代,而扩缩容后的应用则会带来Pod对象群体的变动,随之变化的还有Pod的IP地址访问接口等等,这也是编排系统之上的应用程序必然要面临的问题,为了解决Kub

Micky_Yang的博客 720

k8s学习-service

本文主要介绍了Kubernetes中Service的概念原理及工作模式。Service通过Label Selector将Pod逻辑分组,实现微服务访问策略。Kubernetes提供了多种代理模式(userspace、iptables、ipvs),其中ipvs是当前推荐方案。Service支持四种类型:ClusterIP(内部Pod负载均衡)、NodePort(外部访问内部服务)、LoadBalancer(节点间负载均衡)和ExternalName(DNS别名服务)。文章通过实验验证了Service选择Pod

wish_you_luck的博客 996
上一篇: Beego框架学习
下一篇: beego开发博客系统学习(一)
炽垣LSJ
博客等级 码龄9年 1428粉丝 146原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值