ExternalName
是Service
的第四种类型,其主要的作用是将集群外部服务的服务引入到集群内部来,能实现类似于常规服务一样的名称解析,服务发现等功能,但是它所有的对应的服务记录维护既不需要标签选择器关联任何对象,也无需定义任何端口和端点,但是必须在服务定义中使用ExternalName
定义一个cname
用于返回真正提供服务的名称的别名。
ExternalName
类型Servcie在coreDNS中解析为一个cname,其对应的是一个外部服务的名称,该服务要能在外部DNS中被解析;此处的外部指的是公网DNS,或者在CoreDNS中通过forward转发给公司内部的DNS。
ExternalName
示例
-
编写配置清单
root@k8s-master01:~/yaml/chapter07# vim externalname-redis-svc.yaml
kind: Service
apiVersion: v1
metadata:
name: externalname-redis-svc
namespace: default
spec:
type: ExternalName # 类型为ExternalName
externalName: redis.ik8s.io # externalname-redis-svc将会被解析为redis.ik8s.io
ports:
- name: redisport
protocol: TCP
port: 6379
targetPort: 6379
nodePort: 0
selector: {} # {}表示没有选择条件,无需标签选择器
-
应用配置清单
root@k8s-master01:~/yaml/chapter07# kubectl apply -f externalname-redis-svc.yaml
service/externalname-redis-svc created
root@k8s-master01:~/yaml/chapter07# kubectl get svc externalname-redis-svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
externalname-redis-svc ExternalName <none> redis.ik8s.io 6379/TCP 12s
-
验证 ExternalName
解析结果
root@k8s-master01:~/yaml/chapter07# kubectl exec demoapp-5f7d8f9847-r7h7b -- nslookup externalname-redis-svc
Server: 10.96.0.10
Address: 10.96.0.10#53
# 此为coreDNS中的Cname记录
externalname-redis-svc.default.svc.cluster.local canonical name = redis.ik8s.io.
Name: redis.ik8s.io
Address: 1.2.3.4 # 此为cname通过外部DNS解析的结果。
原文始发于微信公众号(TechOps之窗):Service externalName类型
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/287168.html