kubernetes学习-Service
kubernetes学习-Service
- 1. Service说明
- 2. 功能
- 3.Service类型
- 3.1 NodePort
- 3.1.1 创建web-service.yaml
- 3.1.2 创建web-pod.yaml
- 3.1.3 部署
- 3.1.4 验证
- 3.2 ClusterIP
- 3.2.1 创建web-clusterIp-service.yaml
- 3.2.2 创建web-clusterIp-pod.yaml
- 3.2.3 部署
- 3.2.4 验证
- 3.3 LoadBalancer
- 4. Service代理模式
- 4.1 iptables
- 4.2 ipvs
- 5. DNS
- 5.1 创建busybox-service.yaml
- 5.2 创建busybox-pod.yaml
- 5.3 部署
- 5.4 验证
1. Service说明
Service是Kubernetes中的一种资源对象,用于定义一组Pod的网络访问规则,它为Pod提供了一个稳定的统一访问入口,使得客户端可以始终使用同一个IP地址进行访问,避免了直接使用Pod IP地址导致的不稳定性。


2. 功能
-
负载均衡:当多个Pod提供服务时,Service通过负载均衡算法将请求分发到这些Pod,从而实现应用程序的负载均衡。
-
服务发现:Service提供了一种服务发现机制,自动维护后端Pod IP的变化,确保客户端访问地址保持不变。
3.Service类型
3.1 NodePort
NodePort,在每个节点上启用一个端口来暴露服务,可以在集群外部访问。也会分配一个稳定内部集群IP地址。
访问地址:<任意NodeIP>:<NodePort>
端口范围:30000-32767

3.1.1 创建web-service.yaml
web-service.yaml
apiVersion: v1
kind: Service
metadata:name: web
spec:type: NodePort # 服务类型ports:- port: 80 # Service端口protocol: TCP # 协议targetPort: 80 # 容器端口(应用程序监听端口)nodePort: 32301selector:app: web # 指定关联Pod的标签
多端口Service定义,对于某些服务,需要公开多个端口,Service也需要配置多个端口定义,通过端口名称区分。
web-service.yaml
apiVersion: v1
kind: Service
metadata:name: web
spec:type: NodePort # 服务类型ports:- port: 80 # Service端口protocol: TCP # 协议targetPort: 80 # 容器端口(应用程序监听端口)nodePort: 32301- port: 443 # Service端口protocol: TCP # 协议targetPort: 443 # 容器端口(应用程序监听端口)nodePort: 32302selector:app: web # 指定关联Pod的标签
3.1.2 创建web-pod.yaml
web-pod.yaml
apiVersion: apps/v1
kind: Deployment
metadata:labels:app: webname: web
spec:replicas: 1selector:matchLabels:app: webtemplate:metadata:labels:app: webspec:containers:- image: nginx:1.16name: nginx
3.1.3 部署
~]# kubectl apply -f web-pod.yaml
deployment.apps/web created
~]# kubectl apply -f web-service.yaml
service/web created
~]# kubectl get services -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 27d <none>
web NodePort 10.104.219.112 <none> 80:32301/TCP 13s app=web
~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
web-65655cd78-hsprm 1/1 Running 0 27m
3.1.4 验证
访问集群节点IP的映射端口

3.2 ClusterIP
ClusterIP,默认,分配一个稳定的IP地址,即VIP,只能在集群内部访问。

3.2.1 创建web-clusterIp-service.yaml
apiVersion: v1
kind: Service
metadata:name: web-clusterip
spec:type: ClusterIP # 服务类型ports: - port: 80 # Service端口protocol: TCP # 协议targetPort: 80 # 容器端口(应用程序监听端口)selector:app: web-clusterip # 指定关联Pod的标签
3.2.2 创建web-clusterIp-pod.yaml
apiVersion: apps/v1
kind: Deployment
metadata:labels:app: web-clusteripname: web-nginx
spec:replicas: 1selector:matchLabels:app: web-clusteriptemplate:metadata:labels:app: web-clusteripspec:containers:- image: nginx:1.16name: nginx
3.2.3 部署
~]# kubectl apply -f web-clusterIp-service.yaml
service/web-clusterip created
~]# kubectl apply -f web-clusterIp-pod.yaml
deployment.apps/web-nginx created
~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
web-65655cd78-hsprm 1/1 Running 0 27m
web-nginx-6b59757964-9rd6v 1/1 Running 0 18s
~]# kubectl get service -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
web NodePort 10.104.219.112 <none> 80:32301/TCP 28m app=web
web-clusterip ClusterIP 10.97.209.118 <none> 80/TCP 6m28s app=web-clusterip
3.2.4 验证
访问集群IP(10.97.209.118)的80端口,集群外无法访问。
~]# curl http://10.97.209.118
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>body {width: 35em;margin: 0 auto;font-family: Tahoma, Verdana, Arial, sans-serif;}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p><p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p>
</body>
</html>
3.3 LoadBalancer
LoadBalancer,外部,对外暴露应用,适用公有云。与NodePort类似,在每个节点上启用一个端口来暴露服务。除此之外,Kubernetes会请求底层云平台(例如阿里云、腾讯云、AWS等)上的负载均衡器,将每个Node([NodeIP]:[NodePort])作为后端添加进去。

4. Service代理模式
4.1 iptables
特点
- 灵活,功能强大
- 规则遍历匹配和更新,呈线性时延

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

5. DNS
CoreDNS:是一个DNS服务器,Kubernetes默认采用,以Pod部署在集群中,CoreDNS服务监视Kubernetes API,为每一个Service创建DNS记录用于域名解析。
ClusterIP A记录格式:<service-name>.<namespacename>.svc.cluster.local
示例:my-svc.my-namespace.svc.cluster.local

5.1 创建busybox-service.yaml
busybox-service.yaml
apiVersion: v1
kind: Service
metadata:name: busybox-service
spec:type: NodePort # 服务类型ports: - port: 80 # Service端口protocol: TCP # 协议targetPort: 80 # 容器端口(应用程序监听端口)nodePort: 32302selector:app: busybox # 指定关联Pod的标签
5.2 创建busybox-pod.yaml
busybox-pod.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: busybox-sleep-deploymentlabels:app: busybox
spec:replicas: 1selector:matchLabels:app: busyboxtemplate:metadata:labels:app: busyboxspec:containers:- name: busyboximage: busyboxcommand: ["/bin/sh", "-c", "sleep 300s"]
5.3 部署
~]# kubectl apply -f busybox-pod.yaml
deployment.apps/busybox-sleep-deployment unchanged
]# kubectl apply -f busybox-service.yaml
service/busybox-service created
~]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
busybox-sleep-deployment-5bddd5fcfb-9tfql 1/1 Running 0 4m51s 10.244.184.58 node-02 <none> <none>
~]# kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
busybox-service NodePort 10.104.240.39 <none> 80:32302/TCP 67s
5.4 验证
验证域名busybox-service.default.svc.cluster.local
~]# kubectl exec -it busybox-sleep-deployment-5bddd5fcfb-9tfql -- sh
/ # ls
bin dev etc home lib lib64 proc root sys tmp usr var
/ # nslookup busybox-service.default.svc.cluster.local
Server: 10.96.0.10
Address: 10.96.0.10:53
Name: busybox-service.default.svc.cluster.local
Address: 10.104.240.39
/ #
相关文章:
kubernetes学习-Service
kubernetes学习-Service 1. Service说明2. 功能3.Service类型3.1 NodePort3.1.1 创建web-service.yaml3.1.2 创建web-pod.yaml3.1.3 部署3.1.4 验证 3.2 ClusterIP3.2.1 创建web-clusterIp-service.yaml3.2.2 创建web-clusterIp-pod.yaml3.2.3 部署3.2.4 验证 3.3 LoadBalancer…...
Springcloud项目-前后端联调(一)
项目采用SpringCloud整体构建,nacos作为注册中心,Mysql和Redis进行数据存储,整体项目类似于平时使用的出行APP,idea2023编写后端,vscode编写前端 后端代码先前已经编写完毕 这部分功能主要是通过前端输入出发地和目的地之后调用…...
洛谷P1525 [NOIP2010 提高组] 关押罪犯(种子并查集基础)
题目链接:P1525 [NOIP2010 提高组] 关押罪犯 - 洛谷 | 计算机科学教育新生态 题目难度:普及+/提高 题目描述: S 城现有两座监狱,一共关押着 N 名罪犯,编号分别为 1∼N,有m对罪犯,每对之间有仇恨值,问如何分配罪犯使得现 Z 市长要看到其中最大的矛盾值最小。 输入格…...
【算法刷题指南】模拟
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站 🌈个人主页: 南桥几晴秋 🌈C专栏: 南桥谈C 🌈C语言专栏: C语言学习系…...
学习笔记078——Java Properties类使用详解
文章目录 概述常见方法写入读取遍历 概述 Properties 继承于 Hashtable。表示一个持久的属性集,属性列表以key-value的形式存在,key和value都是字符串。 Properties 类被许多Java类使用。例如,在获取环境变量时它就作为System.getPropertie…...
若依使用 Undertow 替代 Tomcat 容器
文章目录 需求提出应用场景解决思路注意事项完整代码第一步:在 ruoyi-framework/pom.xml 文件中进行依赖配置第二步:修改 application.yml 配置文件第三步:修改文件上传工具类 FileUploadUtils.java 运行结果 需求提出 在开发若依框架的前后…...
多输入多输出 | Matlab实现WOA-CNN鲸鱼算法优化卷积神经网络多输入多输出预测
多输入多输出 | Matlab实现WOA-CNN鲸鱼算法优化卷积神经网络多输入多输出预测 目录 多输入多输出 | Matlab实现WOA-CNN鲸鱼算法优化卷积神经网络多输入多输出预测预测效果基本介绍模型背景程序设计参考资料 预测效果 基本介绍 Matlab实现WOA-CNN鲸鱼算法优化卷积神经网络多输入…...
Elasticsearch:基础概念
一、什么是Elasticsearch Elasticsearch是基于 Apache Lucene 构建的分布式搜索和分析引擎、可扩展数据存储和矢量数据库。它针对生产规模工作负载的速度和相关性进行了优化。使用 Elasticsearch 可以近乎实时地搜索、索引、存储和分析各种形状和大小的数据。Elasticsearch 是…...
Spring MVC的@ResponseBody与@RequestBody
ResponseBody注解用于将Controller的方法返回的对象,通过springmvc提供的HttpMessageConverter接口转换为指定格式的数据如:json,xml等,通过Response响应给客户端。 RequestBody注解用于读取http请求的内容(字符串),通过springmv…...
智能商业分析 Quick BI
Quick BI 是阿里云提供的一款智能商业分析(BI)工具,旨在帮助企业快速获取业务洞察、优化决策过程、提升数据分析效率。通过强大的数据可视化和分析功能,Quick BI 能够帮助用户轻松连接多种数据源、创建多维度的报表和仪表盘&#…...
LUA基础语法
目录 变量篇 算数运算符 条件分支语句与循环语句 函数 表 Table 全局变量与本地变量 协程 元表 面向对象(封装,继承,多态) 常用自带库 垃圾回收 变量篇 print("hello") print("lua") --注释 --[[…...
SpringBoot的pom.xml文件中,scope标签有几种配置?
1.compile(默认) 含义:表示该依赖在项目的所有阶段(编译、测试、运行)都需要。 当你依赖一个库,并且这个库是你项目的核心部分,比如 Spring Boot 的spring - boot - starter - web,…...
Leetcode729: 我的日程安排表 I
题目描述: 实现一个 MyCalendar 类来存放你的日程安排。如果要添加的日程安排不会造成 重复预订 ,则可以存储这个新的日程安排。 当两个日程安排有一些时间上的交叉时(例如两个日程安排都在同一时间内),就会产生 重复…...
青少年编程与数学 02-006 前端开发框架VUE 02课题、创建工程
青少年编程与数学 02-006 前端开发框架VUE 02课题、创建工程 一、开发环境(一)WebStorm安装WebStorm配置WebStorm安装中文语言包安装 Translation插件 (二)Node.jsWindows系统安装Node.jsLinux系统安装Node.jsNode.js与Vue.js的关…...
Redis的生态系统和社区支持
Redis的生态系统和社区支持 1. Redis 生态系统 1.1 Redis核心 Redis 是一个高性能的内存存储系统,支持丰富的数据结构(如字符串、列表、集合、哈希和有序集合)。它的核心提供了: 高性能数据存储:单线程模型支持每秒数百万级别的操作。多种数据结构:适用于多样化场景,如…...
Tomcat解析
架构图 核心功能 Tomcat是Apache开源的轻量级Java ServletServlet容器,其中一个Server(Tomcat实例)可以管理多个Service(服务),一个Service包含多个Connector和一个Engine,负责管理请求到应用的…...
UML之组合与聚合
关联和链接关系在很多情况下是对称的,即被关联的两个类都有以自己为源端对方为目标端的角色存在,而且角色与源端类的属性是等价的,即在关联一端的关联端(角色)等价于另外一端的属性。例如,在下图中…...
数据结构理论篇(期末突击)
找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏: 学校课程突击 下面均是为了应付学校考试所用,如果有涉及部分知识点下面未说明,可以去我的数据结构专栏看看或者自行在…...
《一文读懂PyTorch核心模块:开启深度学习之旅》
《一文读懂PyTorch核心模块:开启深度学习之旅》 一、PyTorch 入门:深度学习的得力助手二、核心模块概览:构建深度学习大厦的基石三、torch:基础功能担当(一)张量操作:多维数组的神奇变换(二)自动微分:梯度求解的幕后英雄(三)设备管理:CPU 与 GPU 的高效调度四、to…...
摆脱Zotero存储限制:WebDAV结合内网穿透打造个人文献管理云平台
文章目录 前言一、Zotero安装教程二、群晖NAS WebDAV设置三、Zotero设置四、使用公网地址同步Zotero文献库五、使用永久固定公网地址同步Zotero文献库 前言 如果你是科研工作者、学生或者任何需要频繁处理大量学术资料的人士,你一定对如何高效管理和引用文献感到头…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...
Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...
