Service 与 Pod 有什么联系?

news2025/1/17 8:49:24

k8s-cert


目录

    • 前言
    • 一、创建 Deployment
    • 二、创建 Service
    • 三、集群外部访问


前言

首先我们要清楚,Pod 中的容器很可能因为各种原因故障而死掉,如果真的发生故障,那 Deployment 等 Controller 会通过动态创建和销毁 Pod 来保证应用整体的健壮性。而每个 Pod 都有自己的 IP 地址,当 Controller 用新的 Pod 代替已发生故障的 Pod 时,新的 Pod 就会分配到新的 IP 地址。那这样就产生了一个问题:如果一组 Pod 对外提供服务,那它的 IP 是很有可能发生变化的,那客户端如何找到并访问这个服务呢?K8s 官方给出的解决方案是:Service

Service 在 K8s 中是一个 REST 对象,和 Pod 类似。Service 从逻辑上代表了一组 Pod,具体是哪些 Pod 则是由 label 标签来挑选的。Service 有自己的 IP,而且这个 IP 是不变的。K8s 建立和维护了 Service 与 Pod 的映射关系,客户端只需要访问 Service 的 IP 即可,无论后端 Pod 如何变化,对客户端都不会有任何影响,因为 Service 是不会变的。

一、创建 Deployment

vim nginx.yml
apiVersion: apps/v1        # 指定deployment的api版本
kind: Deployment           # 指定创建资源的角色/类型 
metadata:                  # 指定Deployment的元数据
  name: nginx              # 创建名为nginx的Deployment
  labels:                  # 指定Deployment的标签(可自定义多个),这里的标签不需要与任何地方的标签匹配,根据实际场景随意自定义即可
    app: demo
spec:                      # Deployment的资源规格
  replicas: 2              # Deployment将创建2个Pod副本(默认为 1)
  selector:                # 匹配标签选择器,定义Deployment如何查找要管理的Pod,因此这里必须与Pod的template模板中定义的标签保持一致
    matchLabels:
      app: demo
  template:                # 指定Pod模板
    metadata:              # 指定Pod的元数据
      labels:              # 指定Pod的标签(可自定义多个)
        app: demo
    spec:                  # Pod的资源规格
      containers:          # 指定Pod运行的容器信息
      - name: nginx        # 指定Pod中运行的容器名
        image: nginx:1.20.0     # 指定Pod中运行的容器镜像与版本(不指定镜像版本号则默认为latest)
        ports:
        - containerPort: 80     # 指定容器的端口(即Nginx默认端口)
kubectl apply -f nginx.yml

这时可看到我们启动了 2 个 Pod 副本,标签是 app: demo,service 将会用这个标签来挑选 Pod。

image-20221216143736528

同时,我们也可以看到,每个 Pod 都分配到了自己的 IP,这些 Pod 的 IP 只能被 K8s 集群中的容器和节点访问。

在 Host 节点上访问这个 Pod 的 IP,是可以正常响应的,如下图所示:

image-20221216143849938

二、创建 Service

上面说到 service 将会通过标签来挑选 Pod,那接下来就要创建 Service 资源。

vim nginx-srv.yml
apiVersion: v1       # service的APIversion
kind: Service
metadata:
  name: nginx-srv    # Service的资源名(自定义)
spec:
  selector:          # 选择那些label为app:demo的Pod作为Service的后端
    app: demo
  ports:
    - protocol: TCP  # 将Service的80端口映射到Pod的80端口,使用TCP协议
      port: 80       # service的端口(这个端口任意定义,与Host端口是否冲突无关,即使Host有80端口或其他Service也是80端口,这都是不冲突的,只要保证是不同的Service Name即可)
      targetPort: 80 # 即镜像默认的端口号,如nginx为80,mysql为3306...
  type: NodePort     # 提供了集群外部客户端访问service的一种方式(即提供了集群外部客户端访问service的端口)
kubectl apply -f nginx-srv.yml

查看一下 Service 以及 Service 负载的 Pod

可看到 service

image-20221216150238998

三、集群外部访问

访问方式:http://NodeIP:NodePort

本案例为:http://192.168.56.161:30580/

NodeIP 为整个 K8s 集群中任意一个都是能正常访问的。

image-20221216151755759

大概流程就是:当我们通过 K8s 节点访问 Pod 时,会先访问到我们的 Service 的 IP+端口,然后 Service 再将我们的请求转发到后端 Pod。


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

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

相关文章

java的垃圾回收浅谈

目录 并发标记问题 三色算法问题 浮动垃圾问题 漏标问题 cms的解决方式 g1的解决方式 跨代(区)引用 CMS垃圾回收日志 G1垃圾回收日志 垃圾回收过程其实都包含两步:标记回收。 标记算法: 引用计数:每个对象都有一个计数器&#xff…

【大数据技术Hadoop+Spark】Hive基础SQL语法DDL、DML、DQL讲解及演示(附SQL语句)

Hive基础SQL语法 1:DDL操作 DDL是数据定义语言,与关系数据库操作相似, 创建数据库 CREATE DATABASE|SCHEMA [IF NOT EXISTS] database_name显示数据库 SHOW databases;查看数据库详情 DESC DATABASE|SCHEMA database_name切…

2022年都快完了,还学Access的人是不是傻?

2022年都快完了,还学Access的人是不是傻?这是某问答平台,讨论火热的话题。 该问题下,部分程序员拍手称好,对Access语言充满不屑,认为Access过时该被淘汰,笔者作为开发者,并不赞同。事…

【Linux】虚拟地址空间

文章目录❓什么是虚拟地址空间?😊我们先来看这样的一个程序:⚠️感性的认识虚拟地址空间😊Linux具体是怎么实现进程地址空间的❓为什么会存在虚拟地址空间?❓什么是虚拟地址空间? 虚拟地址空间是操作系统为了实现进程管理所设定的一种虚拟…

[附源码]Node.js计算机毕业设计高校学生选课系统Express

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

Android 跨应用发送自定义广播

话不多说,直接看效果图和代码! 一、效果图 1、未发送广播之前,两个APP的主界面图; 2、发送之后,文本框内容改变。 二、代码 1、创建第一个APP (1)MainActivity中代码如下: p…

分享篇:第十届“泰迪杯”数据挖掘挑战赛-农田害虫图像识别(特等奖)一

1.1 赛题背景 昆虫的种类浩如烟海,农田常见的昆虫是人工生态系统的重要组成部分。分辨益 虫和害虫,保留益虫,消灭害虫,对于减轻害虫对农田的生产危害有重要意义。常见 农田害虫共有 138 种,天敌昆虫则为 40 种。病虫害…

D-UNet:一种用于慢性脑卒中病变分割的维数融合U型网络

摘要 二维卷积神经网络忽略了医学图像的三维信息,而三维卷积神经网络对计算资源的需求过大。而本文提出一种新的结构,称为维度融合网络(D-UNet)这个网络在编码阶段创新的结合了二维和三维卷积。所提出的网络结构实现了比2D网络更…

C语言快速过渡C++

下面只讲干货,方便C语言初学者快速上手cpp来刷算法题,如果是希望系统学习cpp的不建议继续阅读,仅限于快速使用 文章目录using namespace stdcin cout 头文件变量声明bool变量const定义常量string类字符串的定义与拼接字符串的输入字符串的处理…

Qt扫盲-QStackedWidget理论总结

QStackedWidget理论总结1. 简述2. 布局用法3. 页面切换4. 常用功能1. 简述 QStackedWidget和QTabWidget的功能类似,都是为解决大量的控件在一个页面上可能显示不出来,同时呢,这些控件也可以按一定方式分类,我们就可以把这些控件分…

JAVA文件基本操作与概念

文件的概念 狭义的文件: 存储在硬盘上的数据,以文件为单位,进行组织;文件夹也叫做"目录",也是一种特殊的文件(文件里存储的也是文件) 这章笔记的内容都是指狭义的文件 广义的文件: 操作系统…

Docker安装emqx详解(配置SSL证书、开启WSS、鉴权)

EMQX 是一款大规模可弹性伸缩的云原生分布式物联网 MQTT 消息服务器。 1 端口介绍 1883:MQTT 协议端口8084:MQTT/SSL 端口8083:MQTT/WebSocket 端口8080:HTTP API 端口18083:Dashboard 管理控制台端口 2 拉取镜像 …

视频文件转M3U8

前言 前段时间遇到一个播放视频的项目,为了防止登录的用户下载项目的视频,所以需要对视频加密,即使用户下载也不能播放;因为前端采用videojs,最后确认方案是将mp4转m3u8文件格式,来实现视频文件加密播放。下…

公共用房管理系统有哪些管理功能?

数图互通房产管理 数图互通公共用房管理系统的管理功能范围包括: 1、对全部公房进行图形化、电子化、规范、动态化管理。 2、房屋数据定义:可对校区、片区、建筑物、楼层、房间数据进行增删改查,对房间属性数据进行批量修改。 3、档案及多类型附件管理:可对房产的…

对antd-vue输入框的二次封装,显示长度限制,兼容v-decorator和v-model

背景&#xff1a;antd组件中输入框长度限制没有显示&#xff0c;不能像elementUI一样&#xff0c;所以自己来封装实现 目的&#xff1a;对antd-vue输入框的二次封装&#xff0c;显示长度限制&#xff0c;兼容v-decorator和v-model 效果图&#xff1a; 代码&#xff1a; <…

JAVA方向程序设计PTA期末考试小测试

目录 1.方法重载 2.实例成员与类成员 3.static类成员 4.对象的组合 5. 对象的先上转型 6.引用类型&#xff08;数组&#xff09;参数传递 7.三角形类 8.机动车类补全代码 9.数组的引用与元素 10.求最大值 11.接口回调 12*.接口实现-Comparable 13.集体评分 14. 动…

@Windows server 2022安装使用(Workstation)

文章目录1.windows [iso下载](https://www.microsoft.com/zh-cn/evalcenter/evaluate-windows-server-2022)2.准备[workstation](https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html)&#xff08;个人测试&#xff09;3.安装windows server4.wi…

QT 使用第三方库QtXlsx操作Excel表

一直以来&#xff0c;都想学习一下C/C如何操作excel表&#xff0c;在网上调研了一下&#xff0c;觉得使用C/C去操作很麻烦&#xff0c;遂转向QT这边&#xff1b;QT有一个自带的类QAxObject&#xff0c;可以使用他去操作&#xff0c;但随着了解的深入&#xff0c;觉得他并不是很…

打造企业数智化管理新引擎,中国首份指标中台市场研究报告重磅发布!

12月15日&#xff0c;中国首份指标中台市场研究报告正式对外发布。该报告由专注数字化市场的研究咨询机构爱分析联合指标中台代表厂商 Kyligence 共同打造&#xff0c;内容聚焦指标管理和数据分析痛点&#xff0c;全面地梳理了指标中台概念、价值和应用落地方法论&#xff0c;并…

如何快乐地自学Python?阿里讲师用“四点”,说透快乐学习的方法

前言 由于我是自学Python&#xff0c;非科班出身&#xff0c;所以只能分享一些关于我的学习心得&#xff0c;如果有不对地方欢迎指正。 不过非科班出身虽然是一个痛点&#xff0c;但是在工作上&#xff0c;我其实不输给我其他同事&#xff0c;这点我倒是很有自信&#xff0c;…