k8s service的概念以及创建方法

这篇具有很好参考价值的文章主要介绍了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的服务
k8s service的概念以及创建方法,k8s学习,kubernetes,容器,云原生

  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: nginx
     type: 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: null
  labels:
    app: nginx
  name: nginx
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  type: NodePort
status:
  loadBalancer: {}
  • --dry-run=client : 以客户端的模式运行(运行测试并不生效)
  • -o yaml:以yaml格式输出

--dry-run=client ,以客户端的方式尝试运行,配置 -o yaml 输出简略的信息
--dry-run=server ,以服务端的方式运行,配合-o yaml 输出非常详细的信息文章来源地址https://www.toymoban.com/news/detail-837278.html

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即可正常显示

到了这里,关于k8s service的概念以及创建方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Kubernetes 启动Pod的方法-Pod的调度算法-Pod间的通信-k8s的控制器-Pod资源控制-发布Service服务

    目录 Pod 参考文档:Pod | Kubernetes Pod配置文件:simple-pod.yaml 对master进行如下操作 Pod的状态有: 参考文档:(70条消息) Pod生命周期中的状态解释_pod状态_闹玩儿扣眼珠子的博客-CSDN博客 进入Pod内的nginx容器: 当我们创建一个Pod,其中的步骤是什么?(启动Pob的流程) 大概步骤:

    2024年02月13日
    浏览(66)
  • Kubernetes(k8s)概念介绍

    K8s是一个开源的用于管理云平台中多个主机上的容器化的应用,k8s的目标是让部署容器化的应用简单并且高效,k8s提供了应用部署,规划,更新,维护的一种机制。k8s是google在2014年开源的容器化集群部署管理系统,使用k8s可以进行容器化应用部署,它有利于应用扩展,k8s目标

    2024年02月15日
    浏览(50)
  • Kubernetes(K8S)的基础概念

    用于自动部署、扩展和管理“容器化( containerized) 应用程序”的开源系统 可以理解成K8S是负责自动化运维管理多个容器化程序(比如Docker)的集群,是–个生态极其丰富的容器编排框架工具 由来: k8S由google的Borg系统(博格系统,google内部使用的大规模容器编排工具)作为原型,后

    2024年02月05日
    浏览(73)
  • 【云原生 • Kubernetes】认识 k8s、k8s 架构、核心概念点介绍

    目录 一、Kubernetes 简介 二、Kubernetes 架构 三、Kunbernetes 有哪些核心概念? 1. 集群 Cluster 2. 容器 Container 3. POD 4. 副本集 ReplicaSet 5. 服务 service 6. 发布 Deployment 7. ConfigMap/Secret 8. DaemonSet 9. 核心概念总结 Kubernetes 简称 k8s,是支持云原生部署的一个平台,起源于谷歌。谷歌早在十几

    2024年02月03日
    浏览(170)
  • 【Spring Cloud Kubernetes】使用k8s原生service实现服务注册和发现

    @TOC 现在微服务开发模式应用的越来越广泛,注册中心 Eureka 也逐渐被其它注册中心产品替代,比如阿里出品的 Nacos 。随着云原生相关技术的普及, k8s 迅猛发展,我们把 K8s 中的 Pod 暴露给外部访问,通过少了 Service ,这也是今天的主角。 有没有发现,其实 Service 已经解决了

    2024年02月12日
    浏览(77)
  • kubernetes(k8s) pod(资源限制、基础概念)

    目录  一、资源限制 1、概念 1.2、Pod和容器的资源请求和限制 1.3、CPU资源单位 1.4、内存资源单位 1.5、CPU和内存的Requests和Limits的特点 1.6、案例 二、pod 的两种使用方式 三、pod 资源共享 四、底层容器Pause 1、pause 共享资源 1.1、网络 1.2、存储 1.3、小结 2、Pause主要功能 3、Pod

    2024年02月05日
    浏览(71)
  • 【Kubernetes】第二十二篇 - k8s 部署 MySQL 服务(secret、deployment、service)

    上一篇,介绍基于 k8s 项目部署流程设计; 本篇,介绍 MySQL 服务的部署; 部署 MySQL 可以为指定 node 添加污点,专门用于 mysql 部署(当前只有一个节点,不考虑); 为了保证mysql容器重启时数据不会丢失:创建 mysql 数据目录,用于存储 mysql 数据,实现 MySQL 数据的持久化;

    2024年02月03日
    浏览(56)
  • Kubernetes(K8s)从入门到精通系列之五:K8s的基本概念和术语之应用类

    Service: Service指的是无状态服务,通常多个程序副本提供服务,在特殊情况下也可以是有状态的单实例服务,比如MySQL这种数据存储类的服务。 K8s里的Service具有一个全局唯一的虚拟ClusterIP地址,客户端可以通过这个虚拟IP地址+服务的端口直接访问该服务,再通过部署K8s集群的

    2024年02月14日
    浏览(58)
  • Kubernetes(K8s)从入门到精通系列之七:K8s的基本概念和术语之安全类

    开发的Pod应用需要通过API Server查询、创建及管理其他相关资源对象,所以这类用户才是K8s的关键用户。K8s设计了Service Account这个特殊的资源对象,代表Pod应用的账号,为Pod提供必要的身份验证。在此基础上,K8s实现和完善了基于角色的访问控制权限系统——RBAC(Role-Based Acce

    2024年02月15日
    浏览(62)
  • Kubernetes(K8s)从入门到精通系列之四:K8s的基本概念和术语之集群类

    集群表示一个由Master和Node组成的K8s集群。 Master指的是集群的控制节点。 在每个K8s集群都需要有一个或一组被称为Master的节点,来负责整个集群的管理和控制。 Master通常占据一个独立的服务器(在高可用部署中建议至少使用3台服务器),是整个集群的大脑。 在Master上运行以下

    2024年02月15日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包