kubernetes学习笔记-如何连接集群外部的服务20220403

1、介绍endpoint
服务并不是和pod直接相连,有一种资源介于两者之间—endpoint资源
Endpoint资源就是暴露一个服务的ip地址和端口的列表,Endpoint资源和其他kubernets资源一样,使用kubectl info来获取它的基本信息
kubectl get endpoints kubia

2、手动配置服务endpoint
如果创建了不包含pod选择器的服务,kubernetes将不会创建endpoint资源,这样就需要创建Endpoint资源来指定该服务的endpoint列表

要使用手动配置endpoint的方式创建服务,需要创建服务和endpoint资源

1)创建没有选择器的服务

为服务创建一个yaml文件:

apiVersion:v1

kind:Service

metadata:

        name:external-service

spec:

        ports:

        -port:80

注意:服务的名字必须和Endpoint对象的名字相匹配

2)为没有选择器的服务创建Endpoint资源

endpoint上一个单独的资源并不是服务的一种属性。由于创建的资源中并不创建选择器,相关的endpoint资源并没有自动创建,所以必须手动创建,

apiVersion:v1

kind:Endpoints

metadata:

        name:external-service

subsets:

        -addresses:

                -ip:11.11.11.11

                -ip:22.22.22.22

        ports:

        -port:80

注意:endpoint对下需要与服务具有相同的名字,并包含该服务的目标ip地址和端口列表。

3、为外部服务创建别名

除了手动配置服务的endpoint来代替公开外部服务方法,有一种更简单的方法,就是通过气完全限定域名(FQDN)来访问你外部服务

1)创建ExternalName类型的服务

要创建一个具有别名的外部服务的服务时,要将创建服务资源的一个type字段设置为ExternalName

apiVersion:v1

kind:Service

metadata:

        name:external-service

spec:

        type:ExternalName

        externalName:someapi.somecompany.com

        ports:

        -port:80

服务创建完后,pod可以通过external-service.default.svc.cluster.local域名(甚至是external-service)连接到外部服务,而不是使用服务的实际FQDN。这隐藏了实际的服务名称及其使用该服务的pod位置,允许修改服务定义,并且在以后如果将其指向不同的服务,只需简单的修改externalName属性,或者将类型重新碧昂辉ClusterIP并为服务创建endpoint,无论是手动创建,还是对服务上指定标签选择器使其自动创建。

externalName服务仅在dns级别实施,为服务创建了简单的cname dns记录

注意:cname记录指向完全限定的域名而不是数字ip地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值