k8s系列---Service之ExternalName用法

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

1:创建A名称空间的pod

[[email protected] 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

[[email protected] 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

[[email protected] 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

  

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

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

[[email protected] ~]# 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
[[email protected] ~]# 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

[[email protected] ~]# 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>
[[email protected] ~]# 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
[[email protected] ~]# 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

  

原文地址:https://www.cnblogs.com/dribs/p/11676768.html

时间: 2024-08-30 16:53:47

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

iOS开发系列之二 - UILabel 用法小结

// 初始化标签 UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 100, 300, 150)]; // 设置标签文字 label.text = @"This is a test text.This is a test text.This is a test text."; // 设置标签文字字体 // 使用系统字体 label.font = [UIFont systemFontOfSize:20]; //

关于Android Service的基本用法(上)(转)

相信大多数朋友对Service这个名词都不会陌生,没错,一个老练的Android程序员如果连Service都没听说过的话,那确实也太逊了. Service作为Android四大组件之一,在每一个应用程序中都扮演着非常重要的角色.它主要用于在后台处理一些耗时的逻辑,或者去执行某些需要长 期运行的任务.必要的时候我们甚至可以在程序退出的情况下,让Service在后台继续保持运行状态. 不过,虽然Service几 乎被每一个Android程序员所熟知,但并不是每个人都已经将Service的各个知识点都

服务Service的基本用法

作为 Android四大组件之一, 服务也少不了有很多非常重要的知识点,那自然要从最基本的用法开始学习了. 定义一个服务: public class MyService extends Service { /** * onBind是继承Service后唯一的一个抽象方法所以必须要重写的一个方法 */ @Override public IBinder onBind(Intent intent) { return null; } /** * 服务每次启动的时候调用 */ @Override publ

关于Android Service的基本用法(下)(转)

在上篇文章中我们知道了,Service其实是运行在主线程里的,如果直接在Service中处理一些耗时的逻辑,就会导致程序ANR. 让我们来做个实验验证一下吧,修改上一篇文章中创建的ServiceTest项目,在MyService的onCreate()方法中让线程睡眠60秒,如下所示: [java] view plaincopy public class MyService extends Service { ...... @Override public void onCreate() { su

k8s系列0--Kubernetes基础知识

Kubernetes介绍 参考:Kubernetes核心组件解析 Pod是k8s的最小调度单元 每个pod有独立的IP,但是pod的IP是不可靠的,重新调度pod就会改变IP,service概念就是为了解决这些问题. 给service会分配虚拟IP即ClusterIP,通过ClusterIP和端口,访问会自动负载均衡到后端的pod上. 目前k8s提供两种负载均衡策略:RoundRobin和SessionAffinity. RoundRobin:轮询模式 SessionAffinity:基于客户端

k8s 之service资源介绍(三)

kubernetes service资源 apiVersion: v1 kind: Service metadata: name: kubia spec: ports: - port: 80 targetPort: 8080 selector: app: kubia kubectl get svc kubectl exec kubia-id -- curl -s http://service_ip 双横缸代表着kubectl 命令项的结束,下面的是容器内部执行的命令 apiVersion: v1

SpringBoot系列之集成Thymeleaf用法手册

目录 1.模板引擎 2.Thymeleaf简介 2.1).Thymeleaf定义 2.2).适用模板 3.重要知识点 3.1).th:text和th:utext 3.2).标准表达式 3.3).Thymeleaf遍历 3.4).公共模块抽取 3.5).行内写法介绍 3.6).Thymeleaf语法规则 4.SpringBoot集成 4.1).Springboot集成Thymeleaf简介 4.2).Thymeleaf自动配置源码简单分析 SpringBoot系列之Thymeleaf语法简单介绍

K8s系列-Kubeedge实现原理

感谢分享原文-http://bjbsair.com/2020-04-03/tech-info/29914.html Kubeedge除了在kubernetes的方面做了各种异步通信通道,保障offline后的业务连续性之外:还定义了一系列的设备抽象,用来管理边缘设备.而且,其v1.0版本正朝着边缘端服务网格,以及函数式计算等方向发展. 官方文档:https://docs.kubeedge.io/en/latest/ 架构 整体架构图比较明了,在不考虑edgesite的情况下,其架构分为了云端和边

【SqlServer系列】AS的用法

1   概述 本篇文章简要分析,在SQL SERVER中,AS的基本用法. 2   具体分析 2.1  定义变量类型 1 DECLARE @UserName AS VARCHAR(50)='Alan_beijing' 2.2 取别名 2.2.1 为结果集列取别名 code: 1 SELECT OrderID,CustID,OrderDate 2 FROM Orders result: code: 1 SELECT OrderID AS '订单ID',CustID AS '顾客ID',OrderD