K8S service (四)
ExternalName
把集群外部的服务引入到集群内部中来,实现了集群内部pod和集群外 部的服务进行通信
ExternalName 类型的服务适用于外部服务使用域名的方式,缺点是不能指定端口
注意:
集群内的Pod会继承Node上的DNS解析规则。所以只 要Node可以访问的服务,Pod中也可以访问到, 这就实现了集群内服务 访问集群外服务
一、将公网域名引入
1, 编写YAML文件
vim externelname.yml
apiVersion: v1 kind: Service metadata: name: my-externalname namespace: default spec: type: ExternalName externalName: www.baidu.com # 对应的外部域名为www.baidu.com
2, 应用YAML文件
kubectl apply -f externelname.yml
kubectl get svc |grep exter
3, 查看my-service的dns解析
dig -t A my-externalname.default.svc.cluster.local.@10.68.153.83
kubectl exec -it deploy-nginx-6c9764bb69-7k86s -- /bin/sh
/ # nslookup www.baidu.com
/ # nslookup my-externalname.default.svc.cluster.local
解析此my-externalname.default.svc.cluster.local域名和解析 www.baidu.com是一样的结果
二、不同namespace服务名引入
1, 创建ns1命名空间和相关deploy, pod,service
vim ns1-nginx.yml
apiVersion: v1 kind: Namespace metadata: name: ns1 # 创建ns1命名空间 --- apiVersion: apps/v1 kind: Deployment metadata: name: deploy-nginx namespace: ns1 # 属于ns1命名空间 spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.15-alpine imagePullPolicy: IfNotPresent ports: - containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: svc1 # 服务名 namespace: ns1 # 属于ns1命名空间 spec: selector: app: nginx clusterIP: None # 无头service ports: - port: 80 targetPort: 80 --- kind: Service apiVersion: v1 metadata: name: external-svc1 namespace: ns1 # 属于ns1命名空间 spec: type: ExternalName externalName: svc2.ns2.svc.cluster.local # 将ns2空间的svc2服务引入到ns1命名空间
kubectl apply -f ns1-nginx.yml
2.创建ns2命名空间和相关deploy, pod,service
vim ns2-nginx.yml
apiVersion: v1 kind: Namespace metadata: name: ns2 # 创建ns2命名空间 --- apiVersion: apps/v1 kind: Deployment metadata: name: deploy-nginx namespace: ns2 # 属于ns2命名空间 spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.15-alpine imagePullPolicy: IfNotPresent ports: - containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: svc2 # 服务名 namespace: ns2 # 属于ns2命名空间 spec: selector: app: nginx clusterIP: None # 无头service ports: - port: 80 targetPort: 80 --- kind: Service apiVersion: v1 metadata: name: external-svc2 namespace: ns2 # 属于ns2命名空间 spec: type: ExternalName externalName: svc1.ns1.svc.cluster.local # 将ns1空间的svc1服务引入到ns2命名空间
kubectl apply -f ns2-nginx.yml
3, 在ns1命名空间的pod里验证
kubectl get pods -n ns1
kubectl exec -it -n ns1 deploy-nginx-6c9764bb69-g5xl8 -- /bin/sh
/ # nslookup svc1
/ # nslookup svc2.ns2.svc.cluster.local
/ # nslookup external-svc1.ns1.svc.cluster.local. # 将 ns2里的svc2服务引到了ns1里的名字,也可以访问
/ # exit
kubectl get pods -o wide -n ns1
kubectl get pods -o wide -n ns2
反之,在ns2命名空间的pod里访问ns1里的service也是OK的(请自行验证)
4, 验证ns2中的pod的IP变化, ns1中的pod仍然可以使用访问
kubectl get pod -n ns2
kubectl delete pod deploy-nginx-6c9764bb69-mk62x -n ns2
因为有replicas控制器,所以删除pod会自动拉一个起来
kubectl get pod -o wide -n ns2
pod名称变了,IP也变成了172.20.166.187
5.回到ns1中的pod验证
kubectl exec -it -n ns1 deploy-nginx-6c9764bb69-g5xl8 -- /bin/sh
/ # ping external-svc1.ns1.svc.cluster.local -c 2
/ # exit
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
微软正在开发新的Windows商店 对所有Win32应用程序和游戏开放
微软正在对其Windows应用商店进行一次大修。据Windows Central报道,该软件制造商计划在今年晚些时候发布一个更新版本的商店,将对所有类型的应用程序和游戏更加开放。这可能为开发者铺平道路,使其能够向商店提交任何传统意义上的Windows应用程序,包括Chrome或Firefox等浏览器,甚至允许应用程序中的第三方商务平台。 如果微软在今年晚些时候实现了这一传言中的全面改革,这对Windows上的应用商店来说是一个很大的转变。目前,Windows商店(或微软称其为微软商店)要求开发者将其Win32应用程序打包成MSIX,并使用微软自己的更新机制和商业平台。据报道,微软将允许开发者向商店提交标准的EXE或MSI包,并且可以通过开发者自己的内容交付网络(CDN)来管理更新。 这样的改变将使Windows商店向更多的应用程序开放,包括像Adobe的生产力应用程序的Creative Cloud套件这样的大型流行应用程序,甚至像Chrome和Firefox这样的竞争对手开发的浏览器。微软去年推出了自己的Windows软件包管理器,它很快就成为现在商店中缺少的数百个应用程序的一个重要选...
- 下一篇
【超详细】一文学会链表解题
前言 如果说数据结构是算法的基础,那么数组和链表就是数据结构的基础。 因为像堆,栈,对,图等比较复杂的数组结基本上都可以由数组和链表来表示,所以掌握数组和链表的基本操作十分重要。 今天就来看看链表的基本操作及其在面试中的常见解题思路,本文将从以下几个点来讲解链表的核心知识 什么是链表,链表的优缺点 链表的表示及基本操作 面试中链表的常见解题思路---翻转 面试中链表的常见解题思路---快慢指针 什么是链表 相信大家已经开始迫不及待地想用链表解题了,不过在开始之前我们还是要先来温习下链表的定义,以及它的优势与劣势,磨刀不误砍柴功! 链表的定义 链表是物理存储单元上非连续的、非顺序的存储结构,它是由一个个结点,通过指针来联系起来的,其中每个结点包括数据和指针。 链表的非连续,非顺序,对应数组的连续,顺序,我们来看看整型数组 1,2,3,4 在内存中是如何表示的 可以看到数组的每个元素都是连续紧邻分配的,这叫连续性,同时由于数组的元素占用的大小是一样的,在 Java 中 int 型大小固定为 4 个字节,所以如果数组的起始地址是 100, 由于这些元素在内存中都是连续紧邻分配的,大小也一样,...
相关文章
文章评论
共有0条评论来说两句吧...