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

   前面介绍的所有有关服务的说明,都是将集群内部的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)来访问服务

kubernets之服务重定向的更多相关文章

  1. dSploitzANTI渗透教程之HTTP服务重定向地址

    dSploitzANTI渗透教程之HTTP服务重定向地址 HTTP服务 HTTP服务主要用于重定向地址的.当用户创建一个钓鱼网站时,可以通过使用HTTP服务指定,并通过实施中间人攻击,使客户端访问该钓 ...

  2. kubernets之服务的实现方式

    一  服务如何通过kubernetes集群的组件来实现其功能 1.1  节点上的所有的服务相关的功能实现都是通过节点上面的kube-proxy来实现的,服务提供了一个或者多个服务IP以及端口对客户端开 ...

  3. kubernets之服务发现

    一  服务与pod的发现 1.1  服务发现pod是很显而易见的事情,通过简称pod的标签是否和服务的标签一致即可,但是pod是如何发现服务的呢?这个问题其实感觉比较多余,但是接下来你就可能不这么想了 ...

  4. kubernets之服务资源

    一  服务集群内部或者客户端与pod的通信桥梁   kubernets集群的内部pod访问为啥不能使用传统的IP:PORT的形式? pod是短暂的,它们会随时启动或者关闭,原因可能是pod所在的节点下 ...

  5. xinetd服务

    xinetd(eXtended InterNET services daemon) 一.xinetd的功能介绍: xinetd提供类似于inetd+tcp_wrapper的功能,但是更加强大和安全.它 ...

  6. 基于云原生DevOps服务自动化部署前端项目学习总结

    本文主要以部署前端Vue项目为例,讲述了如何基于云原生DevOps服务自动化部署前端项目~从开发完成到线上环境,我们只需提交代码即可~ 一.引言 作为一名开发人员,日常工作中我们除了需要负责代码的开发 ...

  7. 【分布式】SpringCloud(3)--Eureka服务注册与发现

    1.Eureka概述 1.1.什么是Eureka Eureka是Netflix的一个子模块.基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移. 只需要使用服务的标识符,就可以访问到 ...

  8. SpingMVC 核心技术帮助文档

    声明:本篇文档主要是用于参考帮助文档,没有实例,但几乎包含了SpringMVC 4.2版本的所有核心技术,当前最新版本是4.3,4.2的版本已经经是很新的了,所以非常值得大家一读,对于读完这篇文档感觉 ...

  9. (heartbeat与KeepAlived)

    总拓扑图 两种实现方式: 实验一. LVS+heartbeat+ldirectord实现集群负载: 1.在主Director Server上和备用Director Server上分别安装heartbe ...

随机推荐

  1. CSS3全览_动画+滤镜

    CSS3全览_动画+滤镜 目录 CSS3全览_动画+滤镜 1. 列表和生成的内容 2. 变形 3. 过渡 4. 动画 5. 滤镜, 混合, 裁剪和遮罩 6. 针对特定媒体的样式 作者: https:/ ...

  2. css进阶 02-CSS布局

    02-CSS布局 #前言 #常见的布局属性 (1)display 确定元素的显示类型: block:块级元素. inline:行内元素. inline-block:对外的表现是行内元素(不会独占一行) ...

  3. 一位年薪30w软件测试员的职业规划

    先抛出一个观点: 那些,担心30岁后,35岁后,40岁后,无路可走的:基本属于能力不够.或者思维太局限.总之,瞎担心/不长进. 具体,见下面正文 曾经,在16年,写过一系列的软件测试从业者职业成长文章 ...

  4. DateUtils 时间工具类

    首先,定义`时间枚举值` public enum TimeEnum { /** * 时间格式 */ YYYY_MM_DD("yyyy-MM-dd"), YYYY_MM_DD_HH_ ...

  5. html中table表格标题固定表数据行出现滚动条

    需求 web系统中有的用户不喜欢分页,希望数据能在一个页面中全部显示出来. 但是页面中是有滚动条的,当查看下面的数据时就不知道数据行中的列对应的是哪个标题的列. 也就是无法知道这个列是什么数据. 所以 ...

  6. GDI+中发生一般性错误 Winform Image.Save(mstream, ImageFormat.Png)引发

    在处理图片时,读取本地图像文件,进行另存时发生GDI+中发生一般性错误 . 具体情况如下: 用OpenFileDialog打开图像文件,文件名为filename StreamReader sr = n ...

  7. Android自定义ViewGroup-入门

    1.效果 2步骤 自定义ViewGroup的步骤是 1.1测量onMeasure /** * 获取子view的个数 * 逐个测量其宽高 得到整个ViewGroup的宽高 * * @param widt ...

  8. 【扫盲】i++和++i的区别

    从学java开始,我们就听说过i++和++i的效果一样,都能使i的值累加1,效果如同i=i+1: 但是使用过程中,有和不同呢,今天我们来说说看. 案例一: int i=0; int j=i++; Sy ...

  9. 【electron+vue3+ts实战便笺exe】二、electron+vue3开发内容

    不要让自己的上限成为你的底线 本来以为有万字的..没想到才堪堪近6000字.为了水文的嫌疑,只挑了重点的地方讲,比如component内的组件就挑了右键弹窗去说明,建议在看本文的时候边查看项目,有不懂 ...

  10. Java中常见的json序列化类库 - Jackson

    Jackson 介绍 Jackson框架是基于Java平台的一套数据处理工具,被称为"最好的Java Json解析器". Jackson框架包含了3个核心库:streaming,d ...