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

k8s Service四层负载:服务端口暴露

在 Kubernetes 中,通过 Service 可以实现四层(L4)负载均衡,将流量分发至后端的 Pod。四层负载主要用于传输层(TCP/UDP),而不像七层负载均衡(HTTP/HTTPS)那样进行应用层的流量处理。以下是几种方式来实现服务端口的暴露:

1. ClusterIP

  • 特点:默认类型,仅在集群内部暴露服务。
  • 用途:适合内部通信,无法直接从外部访问。
  • 实现方式:Service 会分配一个虚拟 IP,集群中的 Pod 通过这个 IP 访问目标服务。
  • 配置示例
    apiVersion: v1
    kind: Service
    metadata:name: my-service
    spec:selector:app: my-appports:- protocol: TCPport: 80targetPort: 8080type: ClusterIP
    

2. NodePort

  • 特点:将服务暴露在每个节点的指定端口上,外部可以通过节点 IP 访问服务。
  • 用途:适合集群外部直接访问的服务,端口范围通常为 30000-32767。
  • 实现方式:集群内的每个节点都会监听一个端口,并将流量转发到 Service。
  • 配置示例
    apiVersion: v1
    kind: Service
    metadata:name: my-service
    spec:type: NodePortselector:app: my-appports:- port: 80targetPort: 8080nodePort: 30080  # 可指定,也可让系统自动分配
    

3. LoadBalancer

  • 特点:在支持 LoadBalancer 的云平台(如 AWS、GCP)上,通过云提供商的负载均衡服务将流量分发到 Service。
  • 用途:适合外部流量需要访问集群内部服务的情况。
  • 实现方式:Kubernetes 通过云提供商 API 创建外部负载均衡器,并将流量导向集群节点的 NodePort。
  • 配置示例
    apiVersion: v1
    kind: Service
    metadata:name: my-service
    spec:type: LoadBalancerselector:app: my-appports:- port: 80targetPort: 8080
    

4. ExternalName

  • 特点:服务的类型为 ExternalName 时,Service 不会创建代理,而是通过 DNS 解析外部域名。
  • 用途:适合通过 Kubernetes 内部名称访问外部服务。
  • 配置示例
    apiVersion: v1
    kind: Service
    metadata:name: my-service
    spec:type: ExternalNameexternalName: example.com
    

在生产环境中,NodePortLoadBalancer 是最常用的两种外部暴露服务的方法。
在 Kubernetes 的 Service 配置中,targetPort 指定的是容器端口(即实际运行在 Pod 内的应用程序端口),它将 Kubernetes Service 转发的流量发送到对应的容器端口。以下是关于每个字段的详细说明:

  • port:这是 Service 的端口,对外暴露的入口端口。用户访问 Service 时使用该端口。
  • targetPort:这是容器端口,即 Service 接收到的流量最终转发到 Pod 内部的端口(通常是容器的应用端口)。
  • nodePort(仅 NodePort 类型的 Service): 在 Kubernetes 集群中的每个节点上开放的端口,允许外部流量通过节点 IP + 该端口访问 Service。

例如,以下配置中 targetPort: 8080 表示容器端口:

apiVersion: v1
kind: Service
metadata:name: my-service
spec:type: NodePortselector:app: my-appports:- port: 80         # Service 的入口端口targetPort: 8080 # 容器端口nodePort: 30080  # 节点端口

在这个例子中:

  • port: 80 是服务端口(Service 的入口端口)。
  • targetPort: 8080 是容器端口(应用程序运行的端口)。
  • nodePort: 30080 是节点端口(外部流量可以通过该端口访问节点并转发到 Service)。

命令行模式

可以通过 kubectl expose 命令来创建上述 NodePort 类型的 Service 配置。以下是具体的命令:

kubectl expose deployment my-app \--type=NodePort \--name=my-service \--port=80 \--target-port=8080 \--node-port=30080

命令参数说明

  • deployment my-app:指定要暴露的 Deployment 名称(假设已存在一个名为 my-app 的 Deployment)。
  • --type=NodePort:将 Service 类型设置为 NodePort,以便外部流量可以通过节点端口访问。
  • --name=my-service:定义 Service 的名称。
  • --port=80:设置 Service 的入口端口。
  • --target-port=8080:将 Service 接收的流量转发到容器中的端口 8080。
  • --node-port=30080:在每个节点上暴露端口 30080(此参数为可选,若不指定则系统自动分配)。

验证 Service

执行完创建命令后,可以通过以下命令查看 Service 的配置:

kubectl get service my-service

这将显示 Service 的详细信息,包括 ClusterIPNodePort 等。

相关文章:

k8s Service四层负载:服务端口暴露

在 Kubernetes 中,通过 Service 可以实现四层(L4)负载均衡,将流量分发至后端的 Pod。四层负载主要用于传输层(TCP/UDP),而不像七层负载均衡(HTTP/HTTPS)那样进行应用层的…...

QT 关于mousePressEvent无法过滤

QT 关于mousePressEvent无法过滤 bool Filter::eventFilter(QObject *watched, QEvent *event) {// 判断是不是点击事件if((event->type() QEvent::MouseButtonPress) || (event->type() QEvent::MouseButtonDblClick)){//打印一个全局变量static int globalVar 0;gl…...

【VScode】深度对比:Cursor与VScode(CodeMoss)工具,谁才是你的GPT编程最佳助手?

文章目录 一、Cursor的强大功能1.1 Cursor的主要特点1.2 Cursor的使用技巧 二、CodeMoss的功能2.1 CodeMoss的主要特点2.2 CodeMoss的使用技巧 三、Cursor与CodeMoss的对比分析3.1 功能对比3.2 性能对比 四、总结与展望 在科技迅猛发展的今天,AI编程工具如雨后春笋般…...

大数据计算里的-Runtime Filter

文章目录 Runtime Filter示例 Runtime Filter 从纸面意义来看,就是程序在运行时,根据实际的数据去进行一些过滤操作。这和静态的规则优化不同,静态优化不考虑实现的数据的分布。 示例 select a.* ,b.* a join b on a.idb.id假设一下数据…...

【工具变量】大数据管理机构改革DID(2007-2023年)

数据简介:数字ZF是指以新一代信息技术为支撑,重塑政务信息化管理架构、业务架构、技术架构的现代化治理模式。随着数字政府的建设,特别是借助大数据等新一代数字技术,极大地提升了政府的治理能力,从而起到辅助监管机构…...

Linux -- 初识信号

目录 什么是信号? 如何使用信号? 代码: testSig.cc makefile: 验证: 2号信号: 9号信号: 建立对信号的认识: 信号的处理 自定义信号的处理方式: signal 函数…...

Ubuntu系统如何实现键盘按键映射到其他按键(以 Ctrl+c 映射到 F3,Ctrl+v 映射到 F4 为例)

文章目录 写在前面1. 功能描述2. 实现步骤2.1 安装AutoKey2.2 软件设置2.2.1 软件设置 2.3 测试是否安装成功 参考链接 写在前面 自己的测试环境: Ubuntu20.04 1. 功能描述 Ubuntu系统使用Ctrlc 、Ctrlv 进行复制粘贴操作的时候,时间长了就会出现小拇指…...

el-select、el-autocomplete的选项内容过长显示完整内容

问题&#xff1a; el-select、el-autocomplete的选项内容过长需要看清完整内容 解决方案&#xff1a; 使用el-popover悬停显示完整内容 代码&#xff1a; <el-form-item label"备注" prop"remark"><el-autocomplete v-model"form.remar…...

Go-单元测试

单元测试 测试用例的命名必须是以xxx_test.go的格式 测试用例函数必须以TestXxx开头&#xff0c;一般来说是Test被测试函数名&#xff0c;且必须为大驼峰命名 TestAdd(t *tesing.T)的形参类型必须是*tesing.T 运行测试用例指令 cmd>go test 运行正确&#xff0c;无日志&a…...

【Linux】IPC 进程间通信(一):管道(匿名管道命名管道)

✨ 无人扶我青云志&#xff0c;我自踏雪至山巅 &#x1f30f; &#x1f4c3;个人主页&#xff1a;island1314 &#x1f525;个人专栏&#xff1a;Linux—登神长阶 ⛺️ 欢迎关注&#xff1a;&#x1f44d;点赞 &#…...

Kotlin类与对象

类的定义与对象创建 类的创建是比较简单的&#xff0c;主要是看一下注意点&#xff1a; 1.如果主构造函数没有任何注释或可见性修饰符&#xff0c;则可以省略constructor关键字&#xff0c;如果类中没有其他内容要写&#xff0c;可以直接省略花括号&#xff0c;最后就变成下面…...

Windows版 nginx安装,启动,目录解析,常用命令

Windows版 nginx安装&#xff0c;启动&#xff0c;目录解析&#xff0c;常用命令 一级目录二级目录三级目录 1. 下载2. 启动方式一&#xff1a;方式二&#xff1a; 3. 验证是否启动4. 安装目录解析5. 常用命令 一级目录 二级目录 三级目录 1. 下载 官网下载&#xff1a;ngi…...

基于51单片机的电子隐形防盗网proteus仿真

地址&#xff1a; https://pan.baidu.com/s/1TSuRsB2i1tgAHjI0Miz3AQ 提取码&#xff1a;1234 仿真图&#xff1a; 芯片/模块的特点&#xff1a; AT89C52/AT89C51简介&#xff1a; AT89C52/AT89C51是一款经典的8位单片机&#xff0c;是意法半导体&#xff08;STMicroelectro…...

Fish Agent:多语言 Voice-to-Voice 开源语音模型;Runway 推出摄像机运镜功能丨 RTE 开发者日报

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE&#xff08;Real-Time Engagement&#xff09; 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思…...

locust压测工具环境搭建(Linux、Mac)

目录 使用anaconda搭建locust环境 1、anaconda安装python环境&#xff08;推荐&#xff09; 2、从conda安装locust 使用python虚拟环境搭建locust环境 1、直接安装python环境 2、从python环境安装locust 从依赖文件中安装locust环境 1、从anaconda安装locust 2、从pyt…...

欠定方程有多个真正解,超定方程可能无解所以有最小二乘解

Ax b x A\b ,但不是b/A,会报错矩阵维度不对应两个未知数&#xff0c;三个方程也可以是最小二乘解&#xff0c;因为无解满足三个方程&#xff0c;比如下面 A [0, 1; 1, 1;3,6]; % 一个接近奇异的矩阵 b [1; 2;3]; x A\b; % 求解线性方程组 % warning(off, MATLAB:…...

LeetCode27:移除元素

原题地址&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 题目描述 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。 假设 nums 中不等于 val 的元素数量为 k…...

JAVA 插入 JSON 对象到 PostgreSQL

博主主页:【南鸢1.0】 本文专栏&#xff1a;JAVA 目录 ​编辑 简介 所用&#xff1a; 1、 确保 PostgreSQL 数据库支持 JSON&#xff1a; 2、添加 PostgreSQL JDBC 驱动 3、安装和运行 PostgreSQL 4、建立数据库的连接 简介 在现代软件开发中&#xff0c;由于 JSON 数据…...

视图,物化视图,普通表区别简介

普通视图与物化视图的主要区别&#xff1a; 数据存储方式&#xff1a; 普通视图&#xff1a;不存储数据&#xff0c;仅包含查询定义。查询时&#xff0c;Oracle会根据视图的定义转换为相应的SQL语句去查询底层数据。物化视图&#xff1a;实际存储数据&#xff0c;类似于物理表。…...

C++ | Leetcode C++题解之第530题二叉搜索树的最小绝对差

题目&#xff1a; 题解&#xff1a; class Solution { public:void dfs(TreeNode* root, int& pre, int& ans) {if (root nullptr) {return;}dfs(root->left, pre, ans);if (pre -1) {pre root->val;} else {ans min(ans, root->val - pre);pre root-&g…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

golang循环变量捕获问题​​

在 Go 语言中&#xff0c;当在循环中启动协程&#xff08;goroutine&#xff09;时&#xff0c;如果在协程闭包中直接引用循环变量&#xff0c;可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下&#xff1a; 问题背景 看这个代码片段&#xff1a; fo…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

Go语言多线程问题

打印零与奇偶数&#xff08;leetcode 1116&#xff09; 方法1&#xff1a;使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...

Caliper 配置文件解析:fisco-bcos.json

config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...

恶补电源:1.电桥

一、元器件的选择 搜索并选择电桥&#xff0c;再multisim中选择FWB&#xff0c;就有各种型号的电桥: 电桥是用来干嘛的呢&#xff1f; 它是一个由四个二极管搭成的“桥梁”形状的电路&#xff0c;用来把交流电&#xff08;AC&#xff09;变成直流电&#xff08;DC&#xff09;。…...