资讯专栏INFORMATION COLUMN

【容器云 UK8S】服务发现:通过内网ULB访问Service教程

Tecode / 1887人阅读

摘要:通过内网访问使用提醒请勿修改由创建的及的名称和备注,否则会导致异常无法访问。控制创建所在子网,填写子网通过内网对外暴露服务代表类型,为外网,为内网为默认值,此处可省略。

通过内网ULB访问Service

1、使用提醒

  1. 请勿修改由UK8S创建的ULB及Vserver的名称和备注,否则会导致Service异常无法访问。
  2. 除外网EIP外,ULB相关参数目前均不支持Update,如不确认如何填写,请咨询UCloud 技术支持。

2、使用UDP协议前必读

  1. 目前ULB4针对UDP协议的健康检查支持ping和port两种模式,默认为ping,强烈推荐改为port;
  2. port健康检查的后端实现是对UDP端口发送UDP报文( "Health Check" 字符串)和针对RS IP发送ICMP Ping报文。 如果超时时间内回复了UDP报文则认为健康;如果超时时间没收到UDP回包,则以Ping的探测结果为准,因此您的应用程序需要响应UDP健康检查报文。
  3. 需要注意的是UDP回包长度不要超过1440,以避免可能的分片导致ULB4无法收到健康检查响应,导致健康检查失败。

3、操作指南

3.1 TCP应用通过内网ULB4对外暴露

对于TCP协议的服务,只需要在metadata.annotations 指定 load-balancer-type为inner,其他参数都有默认值,可不填写,具体如下:

apiVersion: v1
kind: Service
metadata:
  name: ucloud-nginx-out-tcp-new
  labels:
    app: ucloud-nginx-out-tcp-new
  annotations:
     # ULB类型,默认为outer,支持outer、inner
    "service.beta.kubernetes.io/ucloud-load-balancer-type": "inner"  
     # 用于声明ULB协议类型,并非应用协议,tcp和udp均代表ULB4,https和http均代表ULB7;
    "service.beta.kubernetes.io/ucloud-load-balancer-vserver-protocol": "tcp"       
     # 对于ULB4而言,不论容器端口类型是tcp还是udp,均建议显式声明为port。
    "service.beta.kubernetes.io/ucloud-load-balancer-vserver-monitor-type": "port"
     # 控制创建ULB所在子网,填写子网ID
    "service.beta.kubernetes.io/ucloud-load-balancer-subnet-id": "subnet-xxxx" 

spec:
  type: LoadBalancer
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  selector:
    app: ucloud-nginx-out-tcp-new
---
apiVersion: v1
kind: Pod
metadata:
  name: test-nginx-out-tcp
  labels:
    app: ucloud-nginx-out-tcp-new
spec:
  containers:
  - name: nginx
    image: uhub.service.ucloud.cn/ucloud/nginx:1.9.2
    ports:
    - containerPort: 80

3.2 UDP应用通过内网ULB4对外暴露服务

如果你的应用是UDP协议,则务必显式声明健康检查的类型为port(端口检查),否则默认为ping,可能导致ULB误认为后端业务不正常。

apiVersion: v1
kind: Service
metadata:
  name: ucloud-inner-udp-new
  labels:
    app: ucloud-inner-udp-new
  annotations:
     # ULB类型,默认为outer,支持outer、inner
    "service.beta.kubernetes.io/ucloud-load-balancer-type": "inner"  
     # 用于声明ULB的Vserver类型,tcp和udp均代表ULB4,https和http均代表ULB7;
    "service.beta.kubernetes.io/ucloud-load-balancer-vserver-protocol": "udp"       
     # 对于ULB4而言,不论容器端口类型是tcp还是udp,均建议显式声明为port。
    "service.beta.kubernetes.io/ucloud-load-balancer-vserver-monitor-type": "port"
     # 控制创建ULB所在子网,填写子网ID
    "service.beta.kubernetes.io/ucloud-load-balancer-subnet-id": "subnet-xxxx" 
spec:
  type: LoadBalancer
  ports:
    - name: udp
      protocol: UDP
      port: 53
      targetPort: 53
  selector:
    app: ucloud-inner-udp-new
---
apiVersion: v1
kind: Pod
metadata:
  name: test-inner-udp
  labels:
    app: ucloud-inner-udp-new
spec:
  containers:
  - name: dns
    image:  uhub.service.ucloud.cn/library/coredns:1.4.0
    ports:
    - name: udp
      containerPort: 53
      protocol: UDP

3.3 通过内网ULB7对外暴露服务


apiVersion: v1
kind: Service
metadata:
  name: ucloud-nginx-out-tcp-new
  labels:
    app: ucloud-nginx-out-tcp-new
  annotations:
    "service.beta.kubernetes.io/ucloud-load-balancer-type": "inner"
    # 代表ULB类型,outer为外网,inner为内网;outer为默认值,此处可省略。
    "service.beta.kubernetes.io/ucloud-load-balancer-vserver-listentype": "requestproxy"
    # 代表监听器的类型为请求代理
    "service.beta.kubernetes.io/ucloud-load-balancer-vserver-protocol": "https"
    # 表示ULB协议类型,http与https等价,表示ULB7;
    "service.beta.kubernetes.io/ucloud-load-balancer-vserver-ssl-cert": "ssl-b103etqy"
    # 声明要绑定的SSL证书Id,需要先将证书上传至UCloud;
    "service.beta.kubernetes.io/ucloud-load-balancer-vserver-ssl-port": "4438443"
    # 声明使用SSL协议的Service端口,多个用""分隔;
spec:
  type: LoadBalancer
  ports:
    - protocol: TCP
      port: 443
      targetPort: 80
      name: https
    - protocol: TCP
      port: 8443
      targetPort: 80
      name: ssl
    - protocol: TCP
      port: 80
      targetPort: 80
      name: http
  selector:
    app: ucloud-nginx-out-tcp-new
---
apiVersion: v1
kind: Pod
metadata:
  name: test-nginx-out-tcp
  labels:
    app: ucloud-nginx-out-tcp-new
spec:
  containers:
  - name: nginx
    image: uhub.service.ucloud.cn/ucloud/nginx:1.9.2
    ports:
    - containerPort: 80

实时文档欢迎访问https://docs.ucloud.cn/uk8s/service/internalservice

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/126266.html

相关文章

  • 容器 UK8S服务发现通过外网ULB访问Service教程

    摘要:通过外网访问使用提醒请勿修改由创建的及的名称和备注,否则会导致异常无法访问。通过外网暴露服务以后的插件,外网同时支持和两种协议,下文示例中,对外暴露了三个端口,其中端口使用协议,和使用协议。是否支持多协议目前同时支持和协议。通过外网ULB访问Service1、使用提醒请勿修改由UK8S创建的ULB及Vserver的名称和备注,否则会导致Service异常无法访问。除外网EIP外,ULB相关参...

    Tecode 评论0 收藏0
  • 容器 UK8S服务发现:如何使用已有的ULB

    摘要:指定已有的实例创建,被删除后,实例不会被删除,仅删除对应的。下面我们来看下如何使用已有的实例。使用已有的内网声明使用已有的内网,需要声明至少两个。使用已有的ULB背景UK8S支持在创建LoadBalancer类型的Service时,指定使用已有的ULB实例,而不是创建一个新的ULB实例。也支持多个Service复用一个ULB实例,但存在以下规则限制:已有的ULB实例,必须是你自行创建的ULB...

    Tecode 评论0 收藏0
  • 容器 UK8S服务发现:Kubernetes重要概念Service(即服务,本文中两者等同)以

    摘要:介绍本章节主要为您简要介绍中的一个重要概念即服务,本文中两者等同,以及的相关知识。在每台的固定端口上暴露服务,选择的服务类型,集群会自动创建一个类型的服务,负责处理接收到的外部流量。集群外部的可以通过的方式访问该服务。Service 介绍本章节主要为您简要介绍 Kubernetes 中的一个重要概念 Service(即服务,本文中两者等同),以及ULB的相关知识。Service 介绍Serv...

    Tecode 评论0 收藏0
  • Service 介绍 容器 UK8S

    摘要:介绍介绍介绍是集群中的一个资源对象,用于定义如何访问一组带有相同特征的。下面我们分别介绍下如何通过在内网外网访问。 Service 介绍本篇目录1. Service 介绍2. ULB 简要介绍本章节主要为您简要介绍 Kubernetes 中的一个重要概念 Service(即服务,本文中两者等同),以及ULB的相关知识。1. Service 介绍Service 是 Kubernetes 集群中...

    ernest.wang 评论0 收藏2037
  • 容器 UK8S】镜像库和容器常见问题:集群 ULB 误删处理

    摘要:集群误删处理前置操作负载均衡分内网和外网两种,在误删情况下,首先需要重建,并且保证原地址不变。集群误删创建时类型需要与的类型相匹配,服务类型为时指定报文转发,为时指定请求代理类型删除集群内原根据文档重新绑定和使用已有创建服务。集群 ULB 误删处理前置操作负载均衡(ULB)分内网和外网两种,在误删情况下,首先需要重建 ULB,并且保证原 ULB IP 地址不变。对于内网 ULB,需要联系技术...

    Tecode 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<