zoukankan      html  css  js  c++  java
  • kubernets之服务重定向

    一  服务的强大功能之处的其他表现

       前面介绍的所有有关服务的说明,都是将集群内部的pod应用暴露出来提供外部客户端或者内部的客户端进行访问,但是服务的强大之处远远不止于此

    服务甚至可以将集群外部的应用暴露出来给内部pod来访问和应用

    二 下面就来介绍服务是如何做到这一点的

      2.1  认识服务的endpoint

        首先需要了解的一点是,服务并不是直接连接pod,它们之间还有另外一种资源Endpoint

    [root@node01 Chapter05]# k get ep kubia
    NAME    ENDPOINTS                                            AGE
    kubia   10.244.1.50:8080,10.244.2.45:8080,10.244.2.46:8080   3h33m

      申明一点:尽管服务的spec的里面注明了pod的标签,但是在重定向传入的时候,服务并不是直接去使用它,选择器的作用是用于构建IP和端口列表,然后存储在Endpoint的资源中,当客户端

    连接到服务时,会选择一个其中对应一个IP和端口,并将传入连接重定向到该监听的服务器

      2.2  连接外部服务

        知道了2.1的内容的话,我们就可以更大胆的尝试了,例如创建不含选择器的服务和单独创建ep并将其相互关联,而endpoints的列表设置为外部的服务和端口,便可以让集群内部

      的pod通过服务来访问外部的服务了,下面分别展示svc的配置以及ep的配置

    svc的配置

    apiVersion: v1
    kind: Service
    metadata:
      name: ex-svc
    spec:
      ports:
      - port: 80

    ep的配置

    apiVersion: v1
    kind: Endpoints
    metadata:
      name: ex-svc
    subnets:
      - address:
        - ip: 33.33.33.33
        - ip: 44.44.44.44
        - ip: 55.55.55.55
         ports:
         - port: 80

    需要注意的是如果单独的创建这2种资源的时候,需要通过它们的名称相同的情况下才能关联起来,并且在ep的配置里面需要添加服务的目标IP以及端口

    综上所述: 服务可以通过修改选择器或者取消修改器并重定向到外部服务,使得集群内部的应用来访问外部的服务

      2.3 给外部服务创建别名

        除了手动创建配置endpoint之外的话,还有一种更简便方法就是通过FQDN(完全限制外部域名)的方式进行访问

      下面来创建这个服务的配置来用以说明

      

    apiVersion: v1
    kind: Service
    metadata:
      name: EX-service
    spec:
      type: ExternalName
      externalName: www.baidu.com
      ports:
      - port: 80

    画横线的部分应当替换为实际可以访问的外部域名

    此般配置之后pod就可以通过EX-service.default.svc.cluster.local甚至是(EX-service)来访问服务

  • 相关阅读:
    python12306抢票
    函数、迭代器、生成器、装饰器
    类(面向对象、增删改查、继承、多态、封装、反射)
    js循环、异常、函数
    js引入、注释、事件
    天融信护网面试
    Java URL处理
    Java多线程编程
    Java网络编程
    Java序列化
  • 原文地址:https://www.cnblogs.com/wxm-pythoncoder/p/14184434.html
Copyright © 2011-2022 走看看