k8s教程(service篇)-资源定义详解

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6


文章目录

  • ​​01 引言​​
  • ​​02 资源定义详解​​
  • ​​03 文末​​

01 引言

声明:本文为《Kubernetes权威指南:从Docker到Kubernetes实践全接触(第5版)》的读书笔记

ServiceKubernetes实现微服务架构的核心概念,通过创建Service,可以为一组具有相同功能的容器应用提供一个统一的入口地址,并且将请求负载分发到 后端的各个容器应用上,本文主要对Service的资源定义进行详细说明。

02 资源定义详解

通过Service的定义设置的访问地址是​​DNS​​域名格式的服务名称,对于客户端应用来说,网络访问方式并没有改变(DNS域名的作用等价于主机名、互联网域名或IP地址)。

Service还提供了负载均衡器功能,将客户端请求负载分发到后端提供具体服务的各个Pod上

Service的YAML格式的定义文件的完整内容如下:

apiVersion: v1 
kind: Service
metadata:
name: string
namespace: string
labels:
- name: string
annotations:
- name: string
spec:
selector:[]
type: string
clusterIP: string
sessionAffinity:string
ports:
- name: string
protocol: string
port: int
targetPort: int
nodePort: int
status:
loadBalancer:
ingress:
ip: string
hostname: string

属性说明:

属性名称

取值类型

必选

取值说明

version

String


V1

kind

String


Service

metadata

Object


元数据

metadata.name

String


Service名称,需符合RFC 1035规范

metadata.namespace

String


命名空间,不指定系统时将使用名称为default的命名空间

metadata.labels[]

list

自定义标签属性列表

metadata.annotation[]

list

自定义注解属性列表

spec

Object


详细描述

spec.selector[]

list


Label Selector配置,将选择具有指定Label标签的Pod作为管理范围

spec.type

String


Service的类型,指定Service的访问方式,默认值为ClusterIP。 ClusterIP:虚拟服务IP地址,该地址用于Kubernetes 集群内部的Pod访问,在Node上kube-proxy通过设置的 iptables规则进行转发. NodePort:使用宿主机的端口,使能够访问各Node的外 部客户端通过Node的P地址和端口号就能访问服务. LoadBalancer:使用外接负载均衡器完成到服务的负载分发,需要在spec.status.loadBalancer字段指定外部负载均 衡器的P地址,同时定义nodePort和clusterIP,用于公有 云环境

spec.clusterIP

String

虚拟服务的P地址,当type=ClusterIP时,如果不指定,则系统进行自动分配,也可以手工指定;当type=LoadBalancer 时,需要指定

spec.sessionAffinity

String

是否支持Session,可选值为ClientIP,默认值为None。 ClientIP:表示将同一个客户端(根据客户端的IP地址决定) 的访问请求都转发到同一个后端Pod

spec.ports[]

list

Service端口列表

spec.ports[].name

String

端口名称

spec.ports[].protocol

String

端口协议,支持TCP和UDP,默认值为TCP

spec.ports[].port

int

服务监听的端口号

spec.ports[].targetPort

int

需要转发到后端Pod的端口号

spec.ports[].nodePort

int

当spec.type=NodePort时,指定映射到宿主机的端口号

Status

Object

当spec.type=LoadBalancer时,设置外部负载均衡器的地址,用于公有云环境

status.loadBalancer

Object

外部负载均衡器

status.loadBalancer.ingress

Object

外部负载均衡器

status.loadBalancer.ingress.ip

String

外部负载均衡器的IP地址

status.loadBalancer.ingress.hostname

String

外部负载均衡器的主机名

03 文末

本文主要讲解了Service资源类型的定义模板,以及对模板里面属性的解析,希望能帮助到大家,谢谢大家的阅读,本文完!


阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: k8s