Kubernetes那点事儿——暴露服务之Service

news2024/10/6 2:30:05

Kubernetes那点事儿——暴露服务之Service

  • 前言
  • 一、Service
  • 二、Service与Pod关系
  • 三、Service常用类型
    • ClusterIP
    • NodePort
    • LoadBalancer
  • 四、Service代理模式
    • Iptables
    • IPVS
    • 修改代理模式


前言

K8s中,我们将应用跑在Pod里。多数情况下是一组Pod,用户如何访问这一组Pod,K8s提供了Service资源,来实现一组Pod的负载均衡。

一、Service

Kubernetes 中 Service 是 将运行在一个或一组 Pod 上的网络应用程序公开为网络服务的方法。为后端Pod提供负载均衡及服务发现的能力。

在这里插入图片描述

  • 关联Pod(服务发现)
  • 定义一组Pod的访问策略(负载均衡)

二、Service与Pod关系

Service与Pod通过Label关联,Service实现Pod的负载均衡(4层)

在这里插入图片描述

示例:

apiVersion: v1
kind: Service
metadata:
  name: web-service
  labels:
    app: svc-web
spec:
  selector:
    app: web
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

上述配置创建一个名称为 “web-service” 的 Service 对象,它会将请求代理到使用 TCP 端口 8080,并且具有标签 “app=web” 的 Pod 上。
metadata定义了service本身的名称,标签。spec定义的标签选择器是pod的标签(对应pod中的labels)

三、Service常用类型

ClusterIP

ClusterIP在集群内部使用。默认分配一个稳定的IP地址,即VIP,只能在集群内部访问(同Namespace内的Pod)

在这里插入图片描述

apiVersion: v1
kind: Service
metadata:
  name: web-service
  labels:
    app: web-service
spec:
  selector:
    app: web
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
      
# kubectl get svc
NAME          TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
kubernetes    ClusterIP   10.96.0.1        <none>        443/TCP   45d
web-service   ClusterIP   10.105.115.247   <none>        80/TCP    5m11s

NodePort

NodePort:在每个节点上启用一个端口来暴露服务,可以在集群外部访问(访问任意节点ip)。也会分配一个稳定内部集群IP地址。
访问地址:NodeIP:NodePort

在这里插入图片描述

apiVersion: v1
kind: Service
metadata:
  name: web-service
  labels:
    app: web-service
spec:
  type: NodePort
  selector:
    app: web
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
      
# kubectl get svc
NAME          TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
kubernetes    ClusterIP   10.96.0.1        <none>        443/TCP        45d
web-service   NodePort    10.105.115.247   <none>        80:31087/TCP   33m

集群内所有节点均会监听31087端口,此时可以用集群内任意节点ip+31087访问到业务(nodeip+31087),可以手动指定nodeport,端口范围30000-32767

ports:
  - protocol: TCP
      port: 80
      targetPort: 80
      nodePort: 30001

port是Service监听的端口,也就是LB监听的端口。targetport是业务端口,也就是image服务的监控端口。
Nodeport是集群节点监听端口(暴露服务)。可以使用不同的Nodeport实现不同业务访问
数据流向:用户访问节点端口(Nodeport)->转发到LB端口(Port)->分发到业务端口(targetport)

LoadBalancer

与NodePort类似,在每个节点上启用一个端口来暴露服务。除此之外,Kubernetes会请求底层云平台上的负载均衡器,将每个Node([NodeIP]:[NodePort])作为后端添加进去。

在这里插入图片描述

四、Service代理模式

Service代理模式分为Iptables与IPVS两种。

流程包流程:客户端 ->NodePort/ClusterIP(iptables/Ipvs负载均衡规则) -> 分布在各节点Pod

Iptables

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x4pBsCZm-1684200981736)(https://secure2.wostatic.cn/static/9fcRD2DpQrAYKQhC3Ns8oc/image.png?auth_key=1684199971-sQ8vkKFENSvyAbCj4JPYaq-0-dfc7ecd4d4c6518223eb6bd3d61727c1)]

  • 灵活,功能强大
  • 规则遍历匹配和更新,呈线性时延

IPVS

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-js1Go43y-1684200981737)(https://secure2.wostatic.cn/static/otE5jcnioNX7Fo4qorzQtZ/image.png?auth_key=1684199972-hR6Y9cXakoJX1F3wFMJuuK-0-0e4fac620fcf8b45e3eab874fb698b37)]

  • 工作在内核态,有更好的性能
  • 调度算法丰富:rr,wrr,lc,wlc,ip hash…

修改代理模式

kubeadm方式

# kubectl edit configmap kube-proxy -n kube-system
...
mode: "ipvs"
...
# kubectl delete pod kube-proxy-btz4p -n kube-system
注:
1、kube-proxy配置文件以configmap方式存储
2、如果让所有节点生效,需要重建所有节点kube-proxy pod

二进制方式

# vi kube-proxy-config.yml 
mode: ipvs
ipvs:
scheduler: "rr"
# systemctl restart kube-proxy

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/531842.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

凌恩生物美文分享 | 提升科研有一套 | 宏基因组磷循环分析又出新!

磷是包括微生物在内的所有生命体中不可缺少的元素。在生物大分子核酸、高能量化合物ATP、以及生物体内糖代谢的某些中间体中&#xff0c;都有磷的存在。在自然界中&#xff0c;磷的循环包括可溶性无机磷的同化、有机磷的矿化、不溶性磷的溶解等。微生物分解含磷化合物的作用&am…

操作系统面试相关知识

目录 一、简介1、什么是操作系统2、操作系统主要有哪些功能&#xff1f; 二、操作系统结构1、什么是内核&#xff1f;2、什么是用户态和内核态&#xff1f;3、 用户态和内核态是如何切换的&#xff1f; 三、 进程和线程1、并行和并发有什么区别&#xff1f;2、什么是进程上下文…

无线传感器网络的时钟同步估计问题(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 随着无线传感器网络的快速发展,其应用领域也越来越广。在诸多的应用环境中都需要大量已同步的传感器节点通过协同作用执行一个…

Python 中IndexError: list assignment index out of range 错误解决

文章目录 Python IndexError&#xff1a;列表分配索引超出范围修复 Python 中的 IndexError: list assignment index out of range修复 IndexError: list assignment index out of range 使用 append() 函数修复 IndexError: list assignment index out of range 使用 insert()…

怎么把文本翻译成英文?安利三个文本翻译方法

在当今全球化的时代&#xff0c;跨国交流和合作已经成为常态。然而&#xff0c;不同语言之间的沟通障碍经常阻碍着信息传递和理解。为了帮助我们更好地进行国际交流&#xff0c;文本翻译英文软件应运而生。这类软件能够将各种语言的文本迅速准确地翻译成英文&#xff0c;使我们…

【起飞】让你电脑速度快到飞起的一些牛逼的设置整理【电脑卡顿反应慢等问题解决】

对于开发来说电脑的反应速度简直影响了思维的速度&#xff0c;要让电脑速度跟上我们的思维&#xff0c;提高工作效率&#xff0c;早点打卡下班回家陪老婆孩子哈哈 这篇文章主要对windows系统做的一些优化&#xff0c;是真的好用&#xff0c;仿佛在访问静态页面一样&#xff0c;…

超实用!年薪40W的项目经理都在用的6个项目管理软件

项目管理软件是帮助团队进行项目计划、任务分配、进度跟踪和团队协作等方面的工具&#xff0c;已经成为了项目经理必不可少的工具之一。 市面上的项目管理软件有很多&#xff0c;这就来分享一下几款我认为好用的项目管理软件&#xff01; 一、六款好用的项目管理软件 1.简道…

C++开发工具 VTK技术实现三维重建CT医学影像PACS系统

一、信息管理 1、支持对患者、检查项目、申请医生、申请单据、设备等信息进行管理&#xff1b; 2、支持检查病人排队管理功能&#xff1b; 3、支持大屏幕队列显示和语音呼叫&#xff1b; 4、提供预约调整、插队管理和掉队处理等功能&#xff1b; 5、支持急诊申请优先安排。…

美股股指期货重要吗?要注意哪些风险?

美股股指期货是一种以美股股票价格指数作为标的物的金融期货合约。美股股指期货的表现对全球股指市场都有重要的影响力&#xff0c;具体体现在以下方面。 美股股指期货成为全球股指市场风向标 自20世纪70年代起&#xff0c;美国芝加哥商品交易所&#xff08;CME&#xff09;推…

Metasploit基础和实操-渗透测试察打一体(7)

Metasploit 基础包含专业术语,Metasploit 接口介绍,Metasploit 功能介绍 这些是弄渗透测试必须要了解的基础知识,也是0开始玩渗透测试和渗透开发的准备之一。 metasploit命令演示的环境搭建可以参考:https://luozhonghua.blog.csdn.net/article/details/123549917 作者用…

2023.05.14-微调ResNet参加kaggle上猫狗大战比赛打到99%的分类准确率_convert

文章目录 1. 前言2. 下载数据集3. 比赛成绩排名 4. baseline 5. 尝试5.1. 数据归一化&#xff08;98.994%&#xff09;5.2. 使用AdamW优化器&#xff08;98.63%&#xff09;5.3. 使用AdamW优化器SegNet模块&#xff08;95.05%&#xff09; 6. 结语7. 感慨 8. 代码8.1. ResNetNo…

贝尔曼福特算法——负权值单源最短路径

title: 贝尔曼福特算法——负权值单源最短路径 date: 2023-05-16 11:42:26 tags: 数据结构与算法 贝尔曼福特算法——负权值单源最短路径 **问题&#xff1a;**具有负权值非环图的单源最短路径算法 git地址&#xff1a;https://github.com/944613709/HIT-Data-Structures-and-A…

阿里云备案服务码怎么申请?

阿里云备案服务码是什么&#xff1f;ICP备案服务码怎么获取&#xff1f;阿里云备案服务码分为免费和付费两种&#xff0c;申请备案服务码是有限制条件的&#xff0c;需要你的阿里云账号下有可用于申请备案服务码的云产品&#xff0c;如云服务器、建站产品、虚拟主机等&#xff…

基于Sentinel自研组件的系统限流、降级、负载保护最佳实践探索 | 京东云技术团队

作者&#xff1a;京东物流 杨建民 一、Sentinel简介 Sentinel 以流量为切入点&#xff0c;从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。 Sentinel 具有以下特征: 丰富的应用场景&#xff1a;秒杀&#xff08;即突发流量控制在系统容量可以承受的范围&a…

【Android Studio】win10 创建并运行第一个App Hello world 超详细

概述 一个好的文章能够帮助开发者完成更便捷、更快速的开发。书山有路勤为径&#xff0c;学海无涯苦作舟。我是秋知叶i、期望每一个阅读了我的文章的开发者都能够有所成长。 一、开发环境 开发环境&#xff1a;windows10Android Studio 版本 Android Studio Flamingo | 2022…

SwiftUI 布局协议 - Part1

文章目录 简介什么是布局协议视图层次结构的族动态我们的第一个布局实现ProposedViewSizeLayoutSubviewsizeThatFits 方法placeSubviews 方法 容器对齐优先布局LayoutValueKey默认间距布局属性和 Spacer()布局缓存高明的伪装者使用 AnyLayout 切换布局结语 简介 今年 SwiftUI …

「——全部文章专栏汇总——」

欢迎来到我的博客 天喜Studio 在这里&#xff0c;我会分享我在 c语言、操作系统、计算机网络等方面的学习和经验&#xff0c;希望能对读者有所帮助。以下是我写的所有专栏 如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 如有疑问欢迎大家指正讨论…

ML03 网页数据抓取 (note)

很多机器学习数据集是从网页上抓取过来的。 网页数据抓取与网页爬虫的区别&#xff1a;数据抓取&#xff1a;特定的数据&#xff0c; 网页爬虫&#xff1a;将整个网页获取 数据科学家主要进行网页数据抓取&#xff0c;对网页上的特定数据感兴趣。 网页数据获取工具 curl 通常…

【夜莺(Flashcat)V6监控】2.夜莺告警相关:初级使用

介绍 夜莺监控系统不仅提供了强大的数据采集和可视化功能&#xff0c;还提供了灵活的告警配置能力&#xff0c;帮助我们实时掌握系统的运行状况&#xff0c;快速响应和解决潜在问题。 本章主要给大家介绍邮件、微信、钉钉配置并告警&#xff1b;简单几台机器随时看就好了&…

指针穿梭,数据流转:探秘C语言实现单向不带头不循环链表

本篇博客会讲解链表的最简单的一种结构&#xff1a;单向不带头不循环链表&#xff0c;并使用C语言实现。 概述 链表是一种线性的数据结构&#xff0c;而本篇博客讲解的是链表中最简单的一种结构&#xff0c;它的一个结点的声明如下&#xff1a; // 单链表存储的数据类型 typ…