k8s系列---Service之ExternalName用法
需求:需要两个不同的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用法的更多相关文章
- k8s系列---service
来源 : http://blog.itpub.net/28916011/viewspace-2214745/ service是要通过coreDNS来管理pod的. kube-proxy始终监视着api ...
- Docker & k8s 系列二:本机k8s环境搭建
本篇将会讲解k8s是什么?本机k8s环境搭建,部署一个pod并演示几个kubectl命令,k8s dashboard安装. k8s是什么 k8s是kubernetes的简写,它是一个全新的基于容器技术 ...
- Docker & k8s 系列三:在k8s中部署单个服务实例
本章将会讲解: pod的概念,以及如何向k8s中部署一个单体应用实例. 在上面的篇幅中,我们了解了docker,并制作.运行了docker镜像,然后将镜像发布至中央仓库了.然后又搭建了本机的k8s环境 ...
- Kubernetes K8S之Service服务详解与示例
K8S之Service概述与代理说明,并详解所有的service服务类型与示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master Cent ...
- 容器编排系统k8s之Service资源
前文我们了解了k8s上的DemonSet.Job和CronJob控制器的相关话题,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14157306.html:今 ...
- k8s之Service详解-Service使用
实验环境准备 在使用service之前,首先利用deployment创建出3个pod,注意要为pod设置app=nginx-pod的标签 创建deployment.yaml,内容如下 apiVersi ...
- Spring3系列5-Bean的基本用法
Spring3系列5-Bean的基本用法 本篇讲述了Bean的基本配置方法,以及Spring中怎样运用Bean. 主要内容如下: 一. Spring中Bean的相互引用 二. Sp ...
- 学习javascript基础知识系列第二节 - this用法
通过一段代码学习javascript基础知识系列 第二节 - this用法 this是面向对象语言中的一个重要概念,在JAVA,C#等大型语言中,this固定指向运行时的当前对象.但是在javascr ...
- SpringBoot系列之@Conditional注解用法简介
SpringBoot系列之@Conditional注解用法简介 引用Spring官方文档的说法介绍一下@Conditional注解:Spring5.0.15版本@Conditional注解官方文档 @ ...
随机推荐
- sqlalchemy 单表增删改查
1.连接数据库,并创建session from sqlalchemy.orm import sessionmaker from sqlalchemy import create_engine engi ...
- Flask DBUtils
作用:创建连接池,解决多线程问题 1.安装模块 pip3 install -i https://pypi.douban.com/simple DBUtils 2.settings.py(配置文件) f ...
- Xadmin的实现
一.启动 1.前提 配置setting.py文件 INSTALLED_APPS 2.定位Xadmin,找到对应的类 'Xadmin.apps.XadminConfig', 3.根据admin源码,实现 ...
- SpringSecurity 自定义表单登录
SpringSecurity 自定义表单登录 本篇主要讲解 在SpringSecurity中 如何 自定义表单登录 , SpringSecurity默认提供了一个表单登录,但是实际项目里肯定无法使用的 ...
- EFK教程(5) - ES集群开启用户认证
基于ES内置及自定义用户实现kibana和filebeat的认证 作者:"发颠的小狼",欢迎转载 目录 ▪ 用途 ▪ 关闭服务 ▪ elasticsearch-修改elastics ...
- 深入学习MySQL 03 Schema与数据类型优化
Schema是什么鬼 schema就是数据库对象的集合,这个集合包含了各种对象如:表.视图.存储过程.索引等.为了区分不同的集合,就需要给不同的集合起不同的名字,默认情况下一个用户对应一个集合,用户的 ...
- 图像处理:AlphaBlend混合两张图片
使用vs2017新建一个项目 混合A,B两张图的基础算法: outColor = srcColor * srcAlpha + destColor * (1 - srcAlpha) 输出颜色 = 源颜色 ...
- SSM 配置文件 分析
spring 配置文件(主要整合的是spring 和 mybatis 的配置文件) 问题: 两者之间没有整合在一起的时候是怎么样的 spring配置文件: Spring配置文件是用于指导Spri ...
- maven项目pom.xml加载本地jar,自定义jar
将jar放到resource目录下面: pom添加配置 <!-- 加载IK自定义 依赖--> <dependency> <groupId>com.ik.up< ...
- Leetcode 题目整理-3 Palindrome Number & Roman to Integer
9. Palindrome Number Determine whether an integer is a palindrome. Do this without extra space. clic ...