首页 > 其他分享 >Service详解之Service介绍

Service详解之Service介绍

时间:2022-11-27 12:34:08浏览次数:34  
标签:Service 介绍 ipvs 详解 proxy 模式 pod kube

Service介绍

在kubernetes中,pod是应用程序的载体,我们可以通过pod的ip来访问应用程序,但是pod的ip地址不是固定的,这也就意味着不方便直接采用pod的ip对服务进行访问。

为了解决这个问题,kubernetes提供了Service资源,Service会对提供同一个服务的多个pod进行聚合,并且提供一个统一的入口地址。通过访问Service的入口地址就能访问到后面的pod服务。

img

Service在很多情况下只是一个概念,真正起作用的其实是kube-proxy服务进程,每个Node节点上都运行着一个kube-proxy服务进程。

当创建Service的时候会通过api-server向etcd写入创建的service的信息,而kube-proxy会基于监听的机制发现这种Service的变动,然后它会将最新的Service信息转换成对应的访问规则。

img

# 10.97.97.97:80 是service提供的访问入口
# 当访问这个入口的时候,可以发现后面有三个pod的服务在等待调用,
# kube-proxy会基于rr(轮询)的策略,将请求分发到其中一个pod上去
# 这个规则会同时在集群内的所有节点上都生成,所以在任何一个节点,访问都可以。

[root@node1 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.97.97.97:80 rr
-> 10.244.1.39:80 Masq 1 0 0
-> 10.244.1.40:80 Masq 1 0 0
-> 10.244.2.33:80 Masq 1 0 0

kube-proxy目前支持三种工作模式:

kube-proxy目前支持三种工作模式:

userspace 模式

userspace模式下,kube-proxy会为每一个Service创建一个监听端口,发向Cluster IP的请求被Iptables规则重定向到kube-proxy监听的端口上,kube-proxy根据LB算法选择一个提供服务的Pod并和其建立链接,以将请求转发到Pod上。

该模式下,kube-proxy充当了一个四层负责均衡器的角色。由于kube-proxy运行在userspace中,在进行转发处理时会增加内核和用户空间之间的数据拷贝,虽然比较稳定,但是效率比较低。

img

iptables 模式

iptables模式下,kube-proxy为service后端的每个Pod创建对应的iptables规则,直接将发向Cluster IP的请求重定向到一个Pod IP。

该模式下kube-proxy不承担四层负责均衡器的角色,只负责创建iptables规则。该模式的优点是较userspace模式效率更高,但不能提供灵活的LB策略,当后端Pod不可用时也无法进行重试。

img

ipvs 模式

ipvs模式和iptables类似,kube-proxy监控Pod的变化并创建相应的ipvs规则。ipvs相对iptables转发效率更高。除此以外,ipvs支持更多的LB算法。

img

开启ipvs

# 此模式必须安装ipvs内核模块,否则会降级为iptables

# 开启ipvs
# 修改mode: "ipvs"
[root@master ~]# kubectl edit cm kube-proxy -n kube-system

#重建kube-proxy
[root@master ~]# kubectl delete pod -l k8s-app=kube-proxy -n kube-system
# 测试ipvs模块是否开启成功
[root@node1 ~]# ipvsadm -Ln

Service类型

Service的资源清单文件:
apiVersion: v1  # 资源版本
kind: Service  # 资源类型
metadata: # 元数据
  name: service # 资源名称
  namespace: dev # 命名空间
spec: # 描述
  selector: # 标签选择器,用于确定当前service代理哪些pod
    app: nginx
  type: # Service类型,指定service的访问方式
  clusterIP:  # 虚拟服务的ip地址
  sessionAffinity: # session亲和性,支持ClientIP、None两个选项
  ports: # 端口信息
    - protocol: TCP 
      port: 3017  # service端口
      targetPort: 5003 # pod端口
      nodePort: 31122 # 主机端口
四种类型
- ClusterIP:默认值,它是Kubernetes系统自动分配的虚拟IP,只能在集群内部访问
- NodePort:将Service通过指定的Node上的端口暴露给外部,通过此方法,就可以在集群外部访问服务

- LoadBalancer:使用外接负载均衡器完成到服务的负载分发,注意此模式需要外部云环境支持
- ExternalName: 把集群外部的服务引入集群内部,直接使用

参考

黑马B站k8s课程https://www.bilibili.com/video/BV1Qv41167ck/
https://gitee.com/yooome/golang/blob/main/k8s%E8%AF%A6%E7%BB%86%E6%95%99%E7%A8%8B-%E8%B0%83%E6%95%B4%E7%89%88/k8s%E8%AF%A6%E7%BB%86%E6%95%99%E7%A8%8B.md
https://www.yuque.com/fairy-era/yg511q/xyqxge

标签:Service,介绍,ipvs,详解,proxy,模式,pod,kube
From: https://www.cnblogs.com/gys001/p/16929420.html

相关文章

  • 【ClickHouse 内核原理图文详解】关于分区、索引、标记和压缩数据的协同工作...
    概述ClickHouse是一个用于联机分析处理(OLAP)的列式数据库管理系统(ColumnarDBMS)。分区、索引、标记和压缩数据,这些组件配合在一起给ClickHouse数据库带来非常高效的查询......
  • Hadoop Shell 命令详解
    HadoopShell命令​​FSShell​​​​cat​​​​chgrp​​​​chmod​​​​chown​​​​copyFromLocal​​​​copyToLocal​​​​cp​​​​du​​​​dus​​​​exp......
  • 【第7篇】AI语音交互原理介绍
    本章主要介绍AI语音交互的原理,包括语音交互的流程以及各流程节点所涉及的相关知识,如语音采集、语音识别、自然语言处理、语音合成等。2.1AI语音交互AI语音交互通俗点说......
  • WebService传输DataSet的一点想法和实践-.NET教程,Web Service开发
    其实这个标题很大,实现起来也可以有许多的办法。甚至,应否这样做也许都能惹出许多的争论(比如,为什么用ws而不是remoting?为什么传dataset而不是entity[]?)。      由于ds......
  • 跨公司采购转储详解(图文)(转)
    业务情景:同一集团下的两个公司1100与2100之间的采购业务。1100下设工厂1101,2100下设工厂2101。供货公司1100须先送货到订单公司2100的仓库,然后2100公司再按集团外客户的要......
  • Java中Collections.sort()方法详解
     时间:2022/11/27 在我们写算法题的时候有时需要对给定的List列表进行排序,这样方便之后的操作,此时我们可以用到Collections类中的sort方法,JavaAPI文档中对该方......
  • Failed to start mysqld.service: Unit not found
    转载自:https://blog.csdn.net/miaodichiyou/article/details/99289160 ========================= 很多人对本博客的方法提出了质疑,在此我解释一下:由于MySQL在CentO......
  • .NET 7介绍及
             环境要求 ......
  • JavaScript中String的match方法详解
     String.prototype.match()**String.prototype.match()方法返回通过一个正则表达式匹配到的字符串结果。**​​var='Thequickbrownfoxjumpsoverthelazydog.Itba......
  • 草根教程 网友详解索尼本本装雪豹过程
       安装环境:VPCEB100C、I3CPU、2G内存、5650显卡、320G硬盘、WIN7旗舰64位、VMwareWorkstation7.0.1build-227600。   所需软件:   1.MacOSX10.6.3光盘镜像......