k8s的yaml文件配置详解(三)
k8s的服务资源文件配置详解注:本文章只作配置项解释,请灵活运用---#Servicekind: ServiceapiVersion: v1metadata:name: servicenamespace: devspec:selector: # 标签选择器,用于确定当前service代理哪些pod,仅适用于ClusterIP、NodePort和LoadBalancer类型。如果类型为Externa
·
k8s的服务资源文件配置详解
注:
本文章只作配置项解释,请灵活运用
--- #Service
kind: Service
apiVersion: v1
metadata:
name: service
namespace: dev
spec:
selector: # 标签选择器,用于确定当前service代理哪些pod,仅适用于ClusterIP、NodePort和LoadBalancer类型。如果类型为ExternalName,则忽略。
app: nginx
type: [ExternalName,ClusterIP,NodePort,LoadBalancer] # Service类型,指定service的访问方式,默认ClusterIP
clusterIP: string # 虚拟服务的ip地址,默认空(随机分配),仅适用于ClusterIP、NodePort和LoadBalancer类型
sessionAffinity: [ClientIP,None] # session亲和性,支持ClientIP、None两个选项
sessionAffinityConfig: # session亲和性设置
clientIP: # clientIP包含基于客户端IP的会话关联的配置
timeoutSeconds: number # 指定ClientIP类型会话粘性时间的秒数,如果ServiceAffinity==ClientIP,则该值必须大于0&<=86400(1天)。默认值为10800(3小时)。
ports: # 端口信息
- protocol: TCP
port: 3017 # service端口
targetPort: 5003 # pod端口
nodePort: 31122 # 主机端口
externalIPs: string # 是一个IP地址列表,集群中的节点也将为此服务接受流量
externalName: string # 作为此服务的CNAME记录返回的外部引用
externalTrafficPolicy: string #表示此服务是否希望将外部流量路由到节点本地或群集范围的端点。
#"Local"保留客户端源IP并避免LoadBalancer和Nodeport类型服务的第二跳,但存在潜在的不平衡流量传播风险。
#"Cluster"会使客户端源IP变得模糊,并可能导致到另一个节点的第二个跃点,但总体负载分布应良好。
healthCheckNodePort: number #指定服务的healthcheck nodePort。如果未指定,则HealthCheckNodePort由服务api后端使用分配的nodePort创建。如果客户端指定,将使用用户指定的nodePort值。仅当类型设置为LoadBalancer且ExternalTrafficPolicy设置为Local时有效。
ipFamily: [IPv4,IPv6] # 指定在启用IPv6DualStack功能时,此服务是否优先选择特定IP系列,如果不指定,默认为集群的主IP系列,对于ExternalName服务,ipFamily没有任何意义
loadBalancerIP: string # 仅适用于服务类型LoadBalancer,并使用此字段中指定的IP创建,若云提供商不支持该功能则忽略
loadBalancerSourceRanges: string # 限制通过云提供商的流量负载平衡器将限制到指定的客户端IP。若云提供商不支持该功能则忽略
PublishNotReadyAddresss: boolean # 表示处理此服务端点的任何代理都应忽略就绪/未就绪的任何指示
topologyKeys: string # 是拓扑键的优先顺序列表,服务实现应使用该列表在访问此服务时优先排序端点,不能与externalTrafficPolicy=Local同时使用。
--- #Ingress
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-https
namespace: dev
spec:
tls: #TLS配置。仅支持单个TLS端口443。如果此列表中的多个成员指定了不同的主机,则如果实现入口的入口控制器支持SNI,则它们将根据通过SNI TLS扩展指定的主机名在同一端口上多路传输。
- hosts: #TLS证书中包含的主机列表。此列表中的值必须与tlsSecret中使用的名称匹配。默认为完成此入口的loadbalancer控制器的通配符主机设置(如果未指定)
- nginx.itheima.com
- tomcat.itheima.com
secretName: tls-secret # 指定秘钥
rules: #配置入口的主机规则列表。如果未指定,或没有规则匹配,则所有流量都将发送到默认后端
- host: nginx.itheima.com
#网络主机的完全限定域名。注:1.不允许使用IP;2.不使用“:”分隔符。端口隐式地:80表示http,443表示https。
#主机可以是精确的域名(例如“foo.bar.com”)或“*”以单个通配符标签为前缀的域名(例如“*.foo.com”)。且通配符“*”必须作为第一个DNS标签单独出现,并且仅与单个标签匹配。不能单独使用通配符标签(例如主机=“*”)。
#请求将通过以下方式与主机字段匹配:
#1.如果主机是精确的,则如果http主机头等于主机,则请求与此规则匹配。2.如果主机是通配符,则如果http主机头等于通配符规则的后缀(删除第一个标签),则请求与此规则匹配。
http:
paths: #将请求映射到后端的路径集合。
- path: / #路径与传入请求的路径匹配。路径必须以“/”开头。未指定时,将匹配传入请求的所有路径。
backend: #后端定义将流量转发到的引用服务端点。
serviceName: nginx-service #引用的服务的名称
servicePort: 80 #引用服务的端口
resource: #Ingress对象命名空间中另一个Kubernetes资源的ObjectRef。如果指定了资源,则不能指定serviceName和servicePort。
apiGroup: string #所引用资源的组。如果未指定APIGOUP,则指定的种类必须在核心API组中。对于任何其他第三方类型,都需要APIGroup。
kind: string #被引用的资源的类型
name: string #被引用的资源的名称
pathType: [Exact,Prefix] #可选,Exact精确匹配,Prefix基于由“/”分割的URL路径前缀进行匹配
- host: tomcat.itheima.com
http:
paths:
- path: /
backend:
serviceName: tomcat-service
servicePort: 8080
backend: #可选,默认后端能够为不符合任何规则的请求提供服务。必须至少指定一个“后端”或“规则”
resource: #Ingress对象命名空间中另一个Kubernetes资源的ObjectRef。如果指定了资源,则不能指定serviceName和servicePort
apiGroup: string #引用资源的组。若未指定,则指定的种类必须在核心API组中
kind: string #被引用的资源的类型
name: string #被引用的资源的名称
serviceName: string #指定引用的服务的名称。
servicePort: string #指定引用服务的端口
ingressClassName: string #IngressClass群集资源的名称
更多推荐
已为社区贡献3条内容
所有评论(0)