k8s service的概念以及创建方法

Service 的功能:

  • Service主要用于提供网络服务,通过Service的定义,能够为客户端应用提供稳定的访问地址(域名或IP地址)和负载均衡功能,以及屏蔽后端Endpoint的变化,是K8s实现微服务的核心资源。

Service主要解决了什么问题:

  • 引入Service主要是解决Pod的动态变化,通过创建Service,可以为一组具有相同功能的容器应用提供一个统一的入口地址,并且将请求负载分发到后端的各个容器应用上。
  • 由于pod的不稳定性,比如水平扩展时,pod异常时生成新的pod,都会让pod拥有新的ip地址,这不利于前端的访问,所以需要把pod绑定到固定的IP(域名)上,所以Service就出现了。

本文主要介绍Service的创建方法,命令行模式和声明模式,

Service主要是为Pod提供统一访问入口的资源对象,所有需要先创建一个pod

  1. 创建Pod

     kubectl run nginx --image=nginx --port=80 --labels="app=nginx" 
    
  • kubectl run nginx : 创建一个名为nginx的pod
  • --image=nginx:使用nginx镜像文件
  • --port=80:声明服务的端口
  • --labels="app=nginx" :给pod打上标签
    note: 如果pod想要外部访问,必须打上标签
  1. 命令行模式创建service并绑定“ app = nginx” 的pod

     kubectl expose pod nginx --port=80 --target-port=80  --type=NodePort
    
  • kubectl expose pod nginx : 创建一个svc,svc的名称就是nginx,自动选择nginx pod的标签
  • --port=80: svc的端口
  • --target-port=80:容器的端口
  • --type=NodePort:svc的类型,NodePort模式,会自动把svc的80端口映射到所有node主机的随机端口(端口范围:30000-32767),这样客户端可以通过任意node主机的IP + 端口访问到Pod。

svc的几种类型

类型描述
ClusterIP集群内部使用
NodePort对外暴露应用端口(集群外可访问)
LoadBalancer对外暴露应用,将Service映射到一个已存在的负载均衡器的IP地址上,适合公有云
ExternalName将Service映射为一个外部域名地址,通过externalName字段进行设置

查看svc

# kubectl get svc nginx -o wide
NAME    TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE   SELECTOR
nginx   NodePort   10.105.125.73   <none>        80:30974/TCP   12m   app=nginx
  • CLUSTER-IP : Service地址(是一个不会变化的ip地址)
  • PORT(S): svc端口和node端口的映射
  • SELECTOR: 通过标签选择绑定哪些Pod

由于已经通过NodePort模式将svc的端口映射到了node主机的 30974 端口,即可以通过node的ip加端口访问到Pod的服务
在这里插入图片描述

  1. 通过yaml 文件声明式的创建svc
    编写yaml文件

     # cat nginx.yaml
    
    apiVersion: v1			# api版本
    kind: Service			# 绑定资源类型,首字符必须大写
    metadata:				# metadata 元数据name: nginx-svc			# 定义 svc的名称labels:				# 下面是定义标签tier: frontend		
    spec:				# 规格ports:				# 定义端口,svc和pod- port: 80		# svc的端口protocol: TCP		# 协议targetPort: 80		# 容器的端口selector:			# 标签选择app: nginxtype: NodePort		# svc 类型
    

    创建svc(svc 是service的简写)

    查看那些资源对象存在简写: kubectl api-resources

     # kubectl create -f  nginx.yaml
    

    查看svc

     # kubectl get svc nginx-svc -o wide
    
    NAME        TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE     SELECTOR
    nginx-svc   NodePort   10.107.55.165   <none>        80:32238/TCP   5m40s   app=nginx
    
  • -o wide : 显示更多信息

    svc nginx-svc的类型为 NodePort 同样可以通过 node的ip加端口访问到pod 里的容器服务。

Additional information:

可以使用命令行创建svc的使用使用 -o yaml输出yaml格式信息。

例如:

kubectl expose pod nginx --port=80 --target-port=80  --type=NodePort --dry-run=client  -o yaml
apiVersion: v1
kind: Service
metadata:creationTimestamp: nulllabels:app: nginxname: nginx
spec:ports:- port: 80protocol: TCPtargetPort: 80selector:app: nginxtype: NodePort
status:loadBalancer: {}
  • --dry-run=client : 以客户端的模式运行(运行测试并不生效)
  • -o yaml:以yaml格式输出

--dry-run=client ,以客户端的方式尝试运行,配置 -o yaml 输出简略的信息
--dry-run=server ,以服务端的方式运行,配合-o yaml 输出非常详细的信息

kubectl expose pod nginx --port=80 --target-port=80  --type=NodePort --dry-run=server -o yaml
Error from server (AlreadyExists): services "nginx" already exists
  • 在server模式下,由于 svc nginx 已经存在所以报错,删除svc nginx即可正常显示

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

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

相关文章

Android 13 - Media框架(32)- ACodec(八)

拖了好久都没有更新&#xff0c;前面写的东西都有些忘了&#xff0c;回过头来再看之前写的内容&#xff0c;觉得有很多地方写的不好&#xff0c;或者说现在又有了新的理解&#xff0c;想要重新修改但是需要修改的内容太多&#xff0c;因此决定按照当前的思路把剩余的内容写完。…

密码学——二次剩余

引言 二次剩余在许多密码学算法和数论问题中具有重要的作用,这个概念涉及到同余方程等概念。 同余 学习二次剩余的概念,首先要了解同余方程的概念,首先默认研究范围为整数,假设 f ( x ) f(x) f(x)是一个整系数多项式,我们讨论是否有整数值x满足同余式 f (

(已解决)mac中全局安装express-generator后,爆出zsh: command not found: express

问题描述&#xff1a; 在mac中全局安装express-generator后&#xff0c;在终端输入express命令提示&#xff1a;zsh: command not found: express 原因分析&#xff1a; 因为系统没有找到express命令的位置。 解决步骤&#xff1a; 检查是否正确安装了express-generator&…

react-JSX基本使用

1.目标 能够知道什么是JSX 能够使用JSX创建React元素 能够在JSX中使用JS表达式 能够使用JSX的条件渲染和列表渲染 能够给JSX添加样式 2.目录 JSX的基本使用 JSX中使用JS表达式 JSX的条件渲染 JSX的列表渲染 JSX的样式处理 3.JSX的基本使用 3.1 createElement()的问题 A. …

Git - 开启2FA

Refrence: [Github实战]双重认证2FA 如何 设置/更改[手把手][2022]_enable two-factor authentication (2fa)-CSDN博客

在Node.js中如何实现用户身份验证和授权

当涉及到构建安全的应用程序时&#xff0c;用户身份验证和授权是至关重要的一环。在Node.js中&#xff0c;我们可以利用一些流行的库和技术来实现这些功能&#xff0c;确保我们的应用程序具有所需的安全性。本篇博客将介绍如何在Node.js中实现用户身份验证和授权。 用户身份验…

“智农”-大棚可视化

基于自主可控的数字孪生技术、物联网技术、大数据技术&#xff0c;构建全流程的新型农业一体化管理平台&#xff0c;围绕产运销管理全流程&#xff0c;实现生产->存储->包装->运输->销售的全链条管理。融合农业数据管理、农业数据预警显示、多维数据综合显示、农产…

Jvm之内存泄漏

1 内存溢出 1.1 概念 java.lang.OutOfMemoryError&#xff0c;是指程序在申请内存时&#xff0c;没有足够的内存空间供其使用&#xff0c;出现OutOfMemoryError。产生该错误的原因主要包括&#xff1a;JVM内存过小。程序不严密&#xff0c;产生了过多的垃圾。 程序体现: 内…

微服务架构 SpringCloud

单体应用架构 将项目所有模块(功能)打成jar或者war&#xff0c;然后部署一个进程--医院挂号系统&#xff1b; > 优点: > 1:部署简单:由于是完整的结构体&#xff0c;可以直接部署在一个服务器上即可。 > 2:技术单一:项目不需要复杂的技术栈&#xff0c;往往一套熟悉的…

LabVIEW水下温盐深数据一体化采集与分析

LabVIEW水下温盐深数据一体化采集与分析 开发一个基于LabVIEW的水下温盐深数据一体化采集与分析系统&#xff0c;实现海洋环境监测的自动化和精确化。通过集成温度、盐度和深度传感器&#xff0c;结合USB数据采集卡&#xff0c;利用LabVIEW软件开发的图形化界面&#xff0c;实…

编程笔记 html5cssjs 095 JavaScript 第三方库或框架

编程笔记 html5&css&js 095 JavaScript 第三方库或框架 一、流行的JavaScript第三方库和框架二、Node.js简介三、Bootstrap简介四、jQuery简介五、React简介六、Vue.js简介 JavaScript的第三方库和框架是构建现代Web应用程序不可或缺的部分&#xff0c;它们提供了预封装…

Elasticsearch的基本安装教程,Elasticsearch+SpringBoot实现简单的增删改查功能

Elasticsearch 是一个开源的分布式搜索和分析引擎,最初由 Elastic 公司开发。它是基于 Apache Lucene 的搜索引擎构建的,提供了强大的搜索和分析功能,并支持实时数据检索和分析。 Elasticsearch 被设计用来处理大规模的数据集,它具有以下几个主要特点: 分布式架构: Elast…

淘宝关键词搜索API、搜索商品接口、获取商品列表商品id

淘宝搜索引擎的工作原理&#xff1a; 淘宝搜索引擎的工作原理是基于搜索引擎的核心技术——爬虫和索引&#xff0c;通过对海量数据的抓取、分析和存储&#xff0c;提供给用户最准确的搜索结果。 具体来说&#xff0c;淘宝搜索引擎的工作流程如下&#xff1a; 企业级api数据…

腾讯云服务器4核8G性能,和阿里云比怎么样?

腾讯云4核8G服务器支持多少人在线访问&#xff1f;支持25人同时访问。实际上程序效率不同支持人数在线人数不同&#xff0c;公网带宽也是影响4核8G服务器并发数的一大因素&#xff0c;假设公网带宽太小&#xff0c;流量直接卡在入口&#xff0c;4核8G配置的CPU内存也会造成计算…

12.Prometheus配置

平凡也就两个字: 懒和惰; 成功也就两个字: 苦和勤; 优秀也就两个字: 你和我。 跟着我从0学习JAVA、spring全家桶和linux运维等知识,带你从懵懂少年走向人生巅峰,迎娶白富美! 关注微信公众号【 IT特靠谱 】,每天都会分享技术心得~ 1.Prometheus配置 Prometheus服务通常可以…

这波知识点分享可得接稳了!非线性模型线性化方法技巧!

现在电力系统优化方向的文章几乎都要提及将非线性模型线性化&#xff0c;使用的方法大致可包括分段线性化&#xff08;最基础&#xff09;&#xff0c;混合整数线性化方法&#xff0c;绝对值法&#xff0c;大M方法&#xff0c;关于非线性模型线性化方法的文章和推文介绍也数不胜…

解决方案各缩写解释 OR/IR/SF/SR/AR

OR (Offering Requirement,产品包需求&#xff09;: 来自公司内、外部的原始需求。 IR (Initial Requirement,初始需求) : 站在内部客户/市场角度&#xff0c;以准确的语言重新描述的需求。 SF (System Feature,系统特性)&#xff1a; 描述该版本为解决客户问题所具备的重大能…

JAVA AQS源码深度讲解和分析

为方便理解&#xff0c;本文章以非公平锁ReentrantLock()为例作为突破讲解方法lock。 前置知识&#xff1a;JAVA AQS源码分析前置知识-CSDN博客 ReentrantLock的原理 Lock接口的实现类&#xff0c;基本都是通过聚合了一个队列同步器的子类完成线程访问控制的 从最简单的lock方…

C语言————结构体

接下来我们来了解C语言中很重要的内容&#xff1a;结构体。虽然到现在我们可以创建常量&#xff0c;变量&#xff0c;数组&#xff0c;但是存储的都是相同类型的数据&#xff0c;如果我们需要写入不同数据类型的信息怎么办&#xff0c;例如常见的身份证上的信息&#xff0c;有身…

springboot+vue+mysql+easyexcel实现文件导出+导出的excel单元格添加下拉列表

Excel导出 EasyExcel官方文档 官方文档本身写的非常详细&#xff0c;我就是根据官方文档内的写Excel里web中的写实现的导出 后端 对象 需要写一个实体类 其中涉及到一些用到的EasyExcel的注解 ColumnWidth(20) 列宽设为20&#xff0c;自定义的&#xff0c;放在实体类上面是…