需求:需要两个不同的namespace之间的不同pod可以通过name的形式访问

实现方式:

A:在其他pod内ping [svcname].[namespace] ping出来到结果就是svc的ip地址

B:通过externalname,把对方到[svcname].[namespace].svc.cluster.local,绑定到externalname定义到字符串上

1:创建A名称空间的pod

[root@k8s-m lihongxing]# cat myapp.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
namespace: cjy-test
spec:
replicas: 1
selector: #标签选择器
matchLabels: #匹配的标签为
app: myapp
release: canary
template:
metadata:
labels:
app: myapp #和上面的myapp要匹配
release: canary
spec:
containers:
- name: myapp
image: ikubernetes/myapp:v1
ports:
- name: http
containerPort: 80

  

2:创建无头service,无头服务直接把请求解析到后端pod上,如果创建NodePort,ClusterIP那么后续验证就不要ping了,因为这个解析到是svc的IP,直接telnet加端口,或者curl 业务加端口验证

dig -t A myapp-svc.cjy-test.svc.cluster.local @172.16.132.10

  

[root@k8s-m lihongxing]# cat myapp-svc-headless.yaml
apiVersion: v1
kind: Service
metadata:
name: myapp-svc
namespace: cjy-test
spec:
selector:
app: myapp #挑选的pod还是myapp。一个pod可以有多个service
release: canary
clusterIP: None #None表示是无头service
ports:
- port: 39320 #service ip中的端口
targetPort: 80 #容器ip中的端口

  

3:创建ExternalName

[root@k8s-m lihongxing]# cat myapp-svc-extername.yaml
kind: Service
apiVersion: v1
metadata:
name: myapp-svcname
namespace: cjy-test
spec:
type: ExternalName
externalName: myapp-svc.cjy2-test.svc.cluster.local

  

在另一个名称空间的创建方式同上三步

两个名称空间都做完后,验证

[root@k8s-m ~]# kubectl get pods -n cjy-test
NAME READY STATUS RESTARTS AGE
myapp-deploy-f4db5d79c-zdgvv 1/1 Running 0 116m
myapp-f4db5d79c-xfs9l 1/1 Running 0 47m
[root@k8s-m ~]# kubectl exec -it myapp-f4db5d79c-xfs9l -n cjy-test -- /bin/sh
/ # nslookup myapp-svcname
nslookup: can't resolve '(null)': Name does not resolve Name: myapp-svcname
Address 1: 172.16.129.11 172-16-129-11.maypp.cjy2-test.svc.cluster.local
/ # ping myapp-svcname
PING myapp-svcname (172.16.129.11): 56 data bytes
64 bytes from 172.16.129.11: seq=0 ttl=64 time=0.534 ms
^C
--- myapp-svcname ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.534/0.534/0.534 ms / # nslookup myapp-svc.cjy2-test.svc.cluster.local
nslookup: can't resolve '(null)': Name does not resolve Name: myapp-svc.cjy2-test.svc.cluster.local
Address 1: 172.16.129.11 172-16-129-11.maypp.cjy2-test.svc.cluster.local / # exit
command terminated with exit code 127 [root@k8s-m ~]# kubectl get pods -n cjy2-test -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
myapp-f4db5d79c-6mpsm 1/1 Running 0 50m 172.16.129.11 k8s-w1.sai.corp <none> <none>
[root@k8s-m ~]# kubectl get svc -n cjy2-test -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
maypp ClusterIP 172.16.135.109 <none> 6381/TCP 101m app=myapp
myapp-svc ClusterIP None <none> 39321/TCP 55m app=myapp,release=canary
[root@k8s-m ~]# kubectl get svc -n cjy-test
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
maypp ClusterIP 172.16.134.116 <none> 6380/TCP 105m
myapp-svc ClusterIP None <none> 39320/TCP 69m
myapp-svcname ExternalName <none> myapp-svc.cjy2-test.svc.cluster.local <none> 62m

  

k8s系列---Service之ExternalName用法的更多相关文章

  1. k8s系列---service

    来源 : http://blog.itpub.net/28916011/viewspace-2214745/ service是要通过coreDNS来管理pod的. kube-proxy始终监视着api ...

  2. Docker & k8s 系列二:本机k8s环境搭建

    本篇将会讲解k8s是什么?本机k8s环境搭建,部署一个pod并演示几个kubectl命令,k8s dashboard安装. k8s是什么 k8s是kubernetes的简写,它是一个全新的基于容器技术 ...

  3. Docker & k8s 系列三:在k8s中部署单个服务实例

    本章将会讲解: pod的概念,以及如何向k8s中部署一个单体应用实例. 在上面的篇幅中,我们了解了docker,并制作.运行了docker镜像,然后将镜像发布至中央仓库了.然后又搭建了本机的k8s环境 ...

  4. Kubernetes K8S之Service服务详解与示例

    K8S之Service概述与代理说明,并详解所有的service服务类型与示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master Cent ...

  5. 容器编排系统k8s之Service资源

    前文我们了解了k8s上的DemonSet.Job和CronJob控制器的相关话题,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14157306.html:今 ...

  6. k8s之Service详解-Service使用

    实验环境准备 在使用service之前,首先利用deployment创建出3个pod,注意要为pod设置app=nginx-pod的标签 创建deployment.yaml,内容如下 apiVersi ...

  7. Spring3系列5-Bean的基本用法

    Spring3系列5-Bean的基本用法 本篇讲述了Bean的基本配置方法,以及Spring中怎样运用Bean. 主要内容如下: 一.      Spring中Bean的相互引用 二.      Sp ...

  8. 学习javascript基础知识系列第二节 - this用法

    通过一段代码学习javascript基础知识系列 第二节 - this用法 this是面向对象语言中的一个重要概念,在JAVA,C#等大型语言中,this固定指向运行时的当前对象.但是在javascr ...

  9. SpringBoot系列之@Conditional注解用法简介

    SpringBoot系列之@Conditional注解用法简介 引用Spring官方文档的说法介绍一下@Conditional注解:Spring5.0.15版本@Conditional注解官方文档 @ ...

随机推荐

  1. L1-006 连续因子 (20分)

    题意分析 题目中已经将意思说的很清楚了,就是输出一个数的最长连续因子的个数,并且输出是哪几个因子相乘.可以将题目从这两个角度进行分析: N为素数时,最长连续因子的个数为1,即它自己. N不为素数时,即 ...

  2. USACO简介导论

      1000: USACO简介 时间限制: 1 Sec  内存限制: 128 MB提交: 8  解决: 7[提交] [状态] [讨论版] [命题人:外部导入] 题目描述 来源/分类 USACO-00  ...

  3. JVM性能优化系列-(2) 垃圾收集器与内存分配策略

    2. 垃圾收集器与内存分配策略 垃圾收集(Garbage Collection, GC)是JVM实现里非常重要的一环,JVM成熟的内存动态分配与回收技术使Java(当然还有其他运行在JVM上的语言,如 ...

  4. 继承Exception⭐⭐

    public class ECOrderException : Exception { //第一种类型: throw new ECOrderException { ErrorCode = " ...

  5. 《C# 爬虫 破境之道》:第一境 爬虫原理 — 第一节:整体思路

    在构建本章节内容的时候,笔者也在想一个问题,究竟什么样的采集器框架,才能算得上是一个“全能”的呢?就我自己以往项目经历而言,可以归纳以下几个大的分类: 根据通讯协议:HTTP的.HTTPS的.TCP的 ...

  6. 异想家Eclipse的偏好配置

    1.汉化 http://www.eclipse.org/babel/downloads.php 找到Babel Language Pack Zips,下面选自己版本点进去,找到如下类似的中文包: Ba ...

  7. python实例:从excel读取股票代码,爬取股票信息写到代码后面的单元格中

    关键词:爬虫.python.request.接口.excel处理 思路: 1.首先准备好excel文档,把股票代码事先编辑进去. 2.脚本读取文档,依次读出股票代码到指定站点发起请求获取股票信息 3. ...

  8. python应用airtest库的环境搭建

    参考https://blog.csdn.net/ywyxb/article/details/64126927 注意:无论是在线还是离线安装,最好在管理员权限下执行命令 1.安装Python36(32位 ...

  9. Quantitative Trading with R(一):两个简单的策略

    下面是两个使用R中的Quantstrat包进行策略构建的例子,都是对600550.ss.600192.ss.600152.ss.600644.ss.600885.ss.600151.ss六只股票进行投 ...

  10. PBR原理

    漫反射和镜面反射 漫反射和镜面反射(或反射)光是描述光和材料之间两种主要相互作用类型的两个术语.镜面光是指从表面反弹的光.在光滑的表面上,这种光将反射所有相同的方向,并且表面将呈现镜像.漫射光是被吸收 ...