Kubernetes Service

一、Service:Kubernetes 中的服务返现与负载均衡

1、为什么需要服务发现

Pod 生命周期短暂,IP 地址随时变化。

Deployment 等的 Pod 组需要统一访问入口和做负载均衡。

应用间在不同环境部署时保持同样的部署拓扑和访问方式。

2、应用服务如何暴露到外部访问和负载均衡

在 K8s 里面,服务发现与负载均衡就是 K8s Service。

K8s Service 向上提供了外部网络以及 pod 网络的访问,即外部网络可以通过 service 去访问,pod 网络也可以通过 K8s Service 去访问。

向下,K8s 对接了另外一组 pod,即可以通过 K8s Service 的方式去负载均衡到一组 pod 上面去。

3Service 语法

ports 定义了用于 K8s Service 服务发现的协议以及端口。

这个示例中定义的是 TCP 协议,端口是 80,目的端口是 9376,效果是访问到这个 service 80 端口会被路由到后端的 targetPort,就是只要访问到这个 service 80 端口的都会负载均衡到后端 app:MyApp 这种 label 的 pod 的 9376 端口。

二、创建和查看 Service

1、命令

使用 kubectl apply -f service.yaml 或 kubectl created -f service.yaml 可以创建一个 service。

创建好之后,可以通过 kubectl discribe service 去查看 service 创建之后的一个结果。

2、架构

在 service 创建之后,它会在集群里面创建一个虚拟的 IP 地址以及端口,在集群里,所有的 pod 和 node 都可以通过这样一个 IP 地址和端口去访问到这个 service。

service 会把它选择的 pod 及其 IP 地址都挂载到后端。这样通过 service 的 IP 地址访问时,就可以负载均衡到后端这些 pod 上面去。

当 pod 的生命周期有变化时,比如说其中一个 pod 销毁,service 就会自动从后端摘除这个 pod。即使 pod 的生命周期有变化,它访问的端点是不会发生变化的。

三、访问 service

1、集群内访问 service

集群里面的 pod 要访问到所创建的 service 有三种方式:

(1) 通过 service 的虚拟 IP 去访问:

例如创建的 my-service 这个服务,通过 kubectl get svc 或者 kubectl discribe service 可以看到它的虚拟 IP 地址是 172.29.3.27,端口是 80,然后可以通过这个虚拟 IP 及端口在 pod 里面直接访问到这个 service 的地址。

(2) 直接访问服务名,依靠 DNS 解析:

同一个 namespace 里 pod 可以直接通过 service 的名字去访问所声明的 service。

不同 Namespace:加上 namespace 名访问 {servicename}.{namespace} 。

(3) 通过环境变量访问:

在同一个 namespace 里的 pod 启动时,K8s 会把 service 的一些 IP 地址、端口,以及一些简单的配置,通过环境变量的方式放到 K8s 的 pod 里。

2Headless Service

service 有一个特别的形态 Headless Service。service 创建的时候可以指定 clusterIP:None,告诉 K8s 说我不需要 clusterIP(集群的虚拟 IP)

实际效果就是集群的 pod 访问 my-service 时,会直接解析到所有的 service 对应 pod 的 IP 地址,返回给 pod,然后 pod 里面自己去选择一个 IP 地址去直接访问。

3、向集群外暴露 Service

service 对外暴露给公网的方式有两种,一个是 NodePort,一个是 LoadBalancer。

① NodePort 的方式是在集群的节点上去暴露节点上的一个端口,相当于在节点的端口访问到之后会再做一层转发,转发到虚拟的 IP 地址上面。

② LoadBalancer 是在所有的节点前又挂一个负载均衡。这个负载均衡会提供一个统一的入口,并把所有它接触到的流量负载均衡到每一个集群节点的 node pod 上面去,node pod 再转化成 ClusterIP,去访问到实际的 pod 上面。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MATLAB的基础二维绘图

1.plot函数 (1)plot函数的基本用法 plot(x,y)其中,x和y分别用于存储x坐标和y坐标数据,通常x和y为长度相同的向量。 例如: x[2.3,3.3,4.3,1];y[1.3,2,1.8,3]plot(x,y) (2)plot(x,y,选项)其中选项包括颜色…

【STM32+OPENMV】二维云台颜色识别及追踪

一、准备工作 有关OPENMV最大色块追踪及与STM32通信内容,详情见【STM32HAL】与OpenMV通信 有关七针OLED屏显示内容,详情见【STM32HAL】七针OLED(SSD1306)配置(SPI版) 二、所用工具 1、芯片:STM32F407ZGT6 2、CUBEMX配置软件 3、KEIL5 4…

Lichee Pi 4A:RISC-V架构的开源硬件之旅

一、简介 Lichee Pi 4A是一款基于RISC-V指令集的强大Linux开发板,它凭借出色的性能和丰富的接口,吸引了众多开发者和爱好者的关注。这款开发板不仅适用于学习和研究RISC-V架构,还可以作为软路由、小型服务器或物联网设备的核心组件。 目录 一…

【C++基础】STL容器面试题分享||上篇

🌈欢迎来到C基础专栏 🙋🏾‍♀️作者介绍:前PLA队员 目前是一名普通本科大三的软件工程专业学生 🌏IP坐标:湖北武汉 🍉 目前技术栈:C/C STL 1.请说说 STL 的基本组成部分2.详细的说&…

从事测绘地信,你需要这些插件、软件、小工具、图源...

特别声明,本篇是来自公众号GIS前沿的资源,看着比较好,特别给大家推荐。加粗样式 今天,我们又来汇总了一些工作中实用的插件、小工具、数据等等,小助手又来帮你提高工作效率了****。 因为小助手每年都会总结一次&…

10.WEB渗透测试-Linux基础知识-Linux用户权限管理(下)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易锦网校会员专享课 上一个内容:9.WEB渗透测试-Linux基础知识-Linux用户权限管理(上)-CSDN博客 ch…

蓝桥杯前端Web赛道-新鲜的蔬菜

蓝桥杯前端Web赛道-新鲜的蔬菜 题目链接:1.新鲜的蔬菜 - 蓝桥云课 (lanqiao.cn) 题目要求如下: 其实很容易联想到使用flex布局,这是flex布局一种非常经典的骰子布局,推荐Flex 布局教程:实例篇 - 阮一峰的网络日志 (r…

c++入门语法————初识类和对象

文章目录 一、类的定义1. 声明和定义全部放在类体中2.声明和定义分离 二、类的访问限定符及封装三、类的实例化四、 类对象的存储方式五.this指针1.简单应用2、问题思考 一、类的定义 class className { // 类体:由成员函数和成员变量组成 }; // 一定要注意后面的…

C++入门全集(5):内存管理

前言 一、内存区域划分 二、C的内存管理方式 2.1 对内置类型 2.2 对自定义类型 三、new和delete的底层实现 四、new和delete的原理 五、定位new 六、malloc/free和new/delete 前言 在C中,内存管理是不可避免的一门必修课。C对内存的自由度使其获得了更高的…

DA14531在三星手机手写笔的应用让我打开眼镜

手写笔的功能 这是一款内置蓝牙功能的魔性笔,它是遥控器、是照相、切换摄像头、是暂停或者打开播放列表。乃至更多操作-通过不同的手势隔空操作,或者按下触控按键便可轻松搞定。 手写笔硬件设计 内部结构 采用2.3V可循环充电电池,放入手…

【CSP试题回顾】202212-2-训练计划

CSP-202212-2-训练计划 解题思路 输入和初始化: 首先,代码从输入中获取项目的截止日期和项目数量。然后,它初始化一个项目列表,每个项目都有其依赖项、被依赖的项目集合、完成时间、总完成时间(包括依赖链&#xff09…

@RequestBody

目录 概述 深入细节 案例 RequestBody与前端传过来的json数据的匹配规则 指定模型中的属性对应什么key 用Valid校验RequestBody的参数 根据RequestBody的内容来区分使用哪个资源 概述 RequestBody主要用来接收前端传递给后端的json字符串中的数据(请求体中的数据)而最常…