一、验证创建的service是否代理到pod上
### --- 验证service是否代理到对应的pod上
~~~     查看创建的pod及service地址[root@k8s-master01 ~]# kubectl get po -owide
NAME                     READY   STATUS    RESTARTS   AGE   IP               NODE           NOMINATED NODE   READINESS GATES
busybox                  1/1     Running   9          19h   172.25.244.211   k8s-master01   <none>           <none>
nginx-66bbc9fdc5-jnzhz   1/1     Running   0          11m   172.18.195.17    k8s-master03   <none>           <none>
nginx-66bbc9fdc5-vhq59   1/1     Running   0          11m   172.25.244.214   k8s-master01   <none>           <none>
[root@k8s-master01 ~]# kubectl get svc
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
nginx-svc    ClusterIP   10.101.145.83   <none>        80/TCP,443/TCP   4s

### --- 在同一namespace下去验证通过service访问pod
~~~     那么我们就可以通过clusterIP访问到应用,但是我们是不建议使用clusterIP反问应用的,
~~~     我们建议是使用service的name去访问[root@k8s-master01 ~]# curl 172.18.195.17                       // 通过pod的地址是可以访问到pod的页面内容的
<title>Welcome to nginx!</title>
[root@k8s-master01 ~]# curl 10.101.145.83                       // 也可以通过service的clusterIP访问到pod的页面的内容
<title>Welcome to nginx!</title>
[root@k8s-master01 ~]# kubectl logs -f nginx-66bbc9fdc5-jnzhz   // 查看日志可以看到有人已经请求它的根路径了。
172.25.244.192 - - [20/Apr/2021:10:46:43 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.29.0" "-"
172.25.244.192 - - [20/Apr/2021:10:47:17 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.29.0" "-"

二、登录busybox容器验证
### --- 登录busybox容器[root@k8s-master01 ~]# kubectl exec -ti busybox -- sh   // 登入busybox访问该页面验证
/ # wget http://nginx-svc                               // 访问service名称
Connecting to nginx-svc (10.101.145.83:80)
index.html           100% |*************************************************************************************************************************************|   612   0:00:00 ETA
/ # cat index.html
<title>Welcome to nginx!</title>

### --- 跨namespace访问这个service下的pod:需要加上namespace的名称;
~~~     # 假设这个service不在default的命名空间下,我们该怎么去访问?~~~     什么情况下需要用到跨namespace调用呢?
~~~     一般情况下:应用之间的调用不要使用跨namespace,因为它很容易形成一个网状结构的网络,很不好处理
~~~     使用到情况:假设我们有一个中间件,比如说Redis,这个Redis可能会跟很多项目去共用数据,
~~~     这个项目可能部署在好几个namespace下,这个namespace去访问公共的Redis,
~~~     那么我们就可以把这个中间件或Redis单独的找一个namespace存放,
~~~     可以为其它的namespace调用。这样就可以使用跨namespace去调用。

/ # wget http://nginx-svc.default                       // 若是跨namespace需要加上.default
Connecting to nginx-svc.default (10.101.145.83:80)
index.html           100% |*************************************************************************************************************************************|   612   0:00:00 ETA
/ # cat index.html
<title>Welcome to nginx!</title>

三、通过service去访问这个pod的话,这个pod的后端有变化的话;会不会影响到这个service的访问呢?
### --- 通过service去访问这个pod的话,这个pod的后端有变化的话;
~~~     会不会影响到这个service的访问呢?
~~~     # 查看创建的容器[root@k8s-master01 ~]# kubectl get po
NAME                     READY   STATUS    RESTARTS   AGE
nginx-66bbc9fdc5-jnzhz   1/1     Running   0          27m
nginx-66bbc9fdc5-vhq59   1/1     Running   0          27m

~~~     # 删除重启,重启容器[root@k8s-master01 ~]# kubectl delete po nginx-66bbc9fdc5-jnzhz  nginx-66bbc9fdc5-vhq59
pod "nginx-66bbc9fdc5-jnzhz" deleted
pod "nginx-66bbc9fdc5-vhq59" deleted

~~~     # 查看重启的容器,IP地址发生变化
~~~     删除之前的两个pod,删除之后这两个pod会重建,重建之后它的IP地址会发生变化,
~~~     那么此刻我们还能不能通过service名去访问到我们需要的资源呢?[root@k8s-master01 ~]# kubectl get po -owide
NAME                     READY   STATUS    RESTARTS   AGE    IP               NODE           NOMINATED NODE   READINESS GATES
busybox                  1/1     Running   10         20h    172.25.244.211   k8s-master01   <none>           <none>
nginx-66bbc9fdc5-mdlr5   1/1     Running   0          119s   172.25.244.215   k8s-master01   <none>           <none>
nginx-66bbc9fdc5-rsxpd   1/1     Running   0          118s   172.18.195.18    k8s-master03   <none>           <none>

### --- 验证通过busybox是否可以正常访问到数据~~~     # 进入到busybox容器访问获取数据
[root@k8s-master01 ~]# kubectl exec -ti busybox -- sh
/ # wget http://nginx-svc                                                           //也是可以访问到的
Connecting to nginx-svc (10.101.145.83:80)
index.html           100% |*************************************************************************************************************************************|   612   0:00:00 ETA

~~~     # 查看service地址及pod地址对应的endpoints
~~~     可以看到它把重建后的地址更新到service针对的ep中。[root@k8s-master01 ~]# kubectl get svc
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP          10d
nginx-svc    ClusterIP   10.101.145.83   <none>        80/TCP,443/TCP   28m
[root@k8s-master01 ~]# kubectl get ep
NAME         ENDPOINTS                                                           AGE
kubernetes   192.168.1.11:6443,192.168.1.12:6443,192.168.1.13:6443               10d
nginx-svc    172.18.195.18:443,172.25.244.215:443,172.18.195.18:80 + 1 more...   28m

### --- 删除一个容器,查看service对应的yaml变化~~~     # 删除一个pod,查看service的yaml文件的变化
[root@k8s-master01 ~]# kubectl get po -owide
NAME                     READY   STATUS    RESTARTS   AGE    IP               NODE           NOMINATED NODE   READINESS GATES
nginx-66bbc9fdc5-mdlr5   1/1     Running   0          119s   172.25.244.215   k8s-master01   <none>
[root@k8s-master01 ~]# kubectl delete po nginx-66bbc9fdc5-mdlr5
pod "nginx-66bbc9fdc5-mdlr5" deleted
[root@k8s-master01 ~]# kubectl get po -owide        // 新启的这个Pod的地址是13
NAME                     READY   STATUS    RESTARTS   AGE     IP               NODE           NOMINATED NODE   READINESS GATES
nginx-66bbc9fdc5-766d9   1/1     Running   0          67s     172.17.125.13    k8s-node01     <none>

~~~     # 查看service对应的endpoints变化
~~~     所以说我们不需要关系service后端应用到底产生了什么样的变化,而是直接可以访问到我们的应用,
~~~     而且service的名称会更可靠,而且会更有稳定性。
~~~     服务之间的调用使用service的名称去调用,不要使用clusterIP地址去调用。[root@k8s-master01 ~]# kubectl get ep nginx-svc -oyaml                              //可以看到之前的Pod的地址已经不见了,更新为新的Pod的地址
subsets:
- addresses:- ip: 172.17.125.13nodeName: k8s-node01- ip: 172.18.195.18nodeName: k8s-master03

四、查看定义的service.yaml
### --- 查看定义的service.yaml配置文件
~~~     # 查看创建的service.pod[root@k8s-master01 ~]# kubectl get svc nginx-svc
NAME        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
nginx-svc   ClusterIP   10.101.145.83   <none>        80/TCP,443/TCP   19h

~~~     # 查看service.yaml配置文件
~~~     可以看到这个service定义了2个Pod,这两个pod里面一个是http的一个是https的,[root@k8s-master01 ~]# kubectl get svc nginx-svc -oyaml
spec:clusterIP: 10.101.145.83clusterIPs:- 10.101.145.83ports:- name: httpport: 80                                       // 这个是service的端口是80protocol: TCPtargetPort: 80                                 // 这个是service下pod容器启用的端口号- name: httpsport: 443protocol: TCPtargetPort: 443selector:                                        // 这个selector:通过selector查找出当前namespace下的pod,过滤出这个pod之后,会根据这个pod的IP地址生成我们的ep,刷新我们的epapp: nginxsessionAffinity: Ntype: ClusterIP
status:loadBalancer: {}

### --- 查看创建的service文件中包含的pod地址及endpoints地址是否一致
~~~     # 查看创建的pod地址[root@k8s-master01 ~]# kubectl get po -l app=nginx -owide
NAME                     READY   STATUS    RESTARTS   AGE   IP              NODE           NOMINATED NODE   READINESS GATES
nginx-66bbc9fdc5-766d9   1/1     Running   0          19h   172.17.125.13   k8s-node01     <none>           <none>
nginx-66bbc9fdc5-rsxpd   1/1     Running   0          19h   172.18.195.18   k8s-master03   <none>           <none>

~~~     # 查看创建的endpoints下pod地址
~~~     这种是k8s下最常用的应用,去访问我们k8s中内部的应用需求的。[root@k8s-master01 ~]# kubectl get ep nginx-svc
NAME        ENDPOINTS                                                          AGE
nginx-svc   172.17.125.13:443,172.18.195.18:443,172.17.125.13:80 + 1 more...   19h

CC00157.CloudKubernetes——|KuberNetes服务发布.V08|——|service.v04|验证service|相关推荐

  1. CC00167.CloudKubernetes——|KuberNetes服务发布.V18|——|HPA.v01|资源查看|

    一.HPA概述 ### --- 什么是HPA~~~ Horizontal Pod Autoscaler:Pod的水平自动伸缩器. ~~~ 观察Pod的CPU.内存使用率自动扩展或缩容Pod的数量. ~ ...

  2. CC00307.CloudKubernetes——|KuberNetes运维.V27|——|监控.v04|PromQL查询_运算符|

    一.运算符: ### --- 集合运算:~~~ 集合运算:and ,or,unless ### --- OR:查找小于等于2977,并且等于2977.7890625:or:~~~ 并列关系,前面符合后 ...

  3. 15分钟在阿里云Kubernetes服务上快速建立Jenkins X Platform并运用GitOps管理应用发布...

    本文主要介绍如何在阿里云容器服务Kubernetes上快速安装部署Jenkins X Platform并结合demo实践演示GitOps的操作流程. 注意: 本文中使用的jx工具.cloud-envi ...

  4. 自动化运维之k8s——Kubernetes集群部署、pod、service微服务、kubernetes网络通信

    目录 一.Kubernetes简介 1.Kubernetes简介 2.kubernetes设计架构 3.Kubernetes核心组件 4.kubernetes设计结构 二.Kubernetes部署 1 ...

  5. 阿里云Kubernetes服务上使用Tekton完成应用发布初体验

    Tekton 是一个功能强大且灵活的 Kubernetes 原生开源框架,用于创建持续集成和交付(CI/CD)系统.通过抽象底层实现细节,用户可以跨多云平台和本地系统进行构建.测试和部署. 本文是基于 ...

  6. Kubernetes系列之五:使用yaml文件创建service向外暴露服务

    系列链接 Kubernetes系列之一:在Ubuntu上快速搭建一个集群Demo Kubernetes系列之二:将Slave节点加入集群 Kubernetes系列之三:部署你的第一个应用程序到k8s集 ...

  7. AKS==donet6代码生成镜像到dockerhub并发布到Azure Kubernetes 服务 (AKS)

    将微服务部署到 Azure Kubernetes 服务 (AKS) 实践_dotNET跨平台的博客-CSDN博客 将微服务部署到 Azure Kubernetes 服务 (AKS) 实践_dotNET ...

  8. Kubernetes K8S在IPVS代理模式下Service服务的ClusterIP类型访问失败处理

    Kubernetes K8S使用IPVS代理模式,当Service的类型为ClusterIP时,如何处理访问service却不能访问后端pod的情况. 背景现象 Kubernetes K8S使用IPV ...

  9. 微软发布多项Azure Kubernetes服务更新,增加GPU支持

    微软宣布对他们托管的Azure Kubernetes服务进行多项更新.更新公告中包括AKS虚拟节点的特性更新.对Azure容器实例的GPU支持以及将Virtual Kubelet项目捐赠给原生云计算基 ...

最新文章

  1. 『求助』请求服务器超时或失败问题
  2. 全球三大芯片架构之一MIPS倒下!转身投入RISC-V阵营
  3. TCP/IP详解学习笔记(13)-TCP坚持定时器,TCP保活定时器
  4. OSX 使用“终端”远程登录linux主机
  5. QT实现Media Player(媒体播放器)
  6. CSS Hack(Safari、Opera、Chrome、IE6、IE7、 IE8和IE9)
  7. APP自动化测试系列之获取Android的Activity 和 Package
  8. micropython入门教程-【ESP8266】MicroPython的快速入门教程
  9. 利用MapShaper将.shp文件转换成JSON文件
  10. java 行政区划代码 民政部 json
  11. LINUX 用户 及 组
  12. Unity Translate方法使用指南
  13. 区块链加持的家用摄像头能拯救你的隐私吗?
  14. 第一部份1:JMF基础原理与相关术语介绍 。。。。快速了解JMF有什么相关内容
  15. elementui级联选择器
  16. 【台大郭彦甫】Matlab入门教程超详细学习笔记二:基本操作与矩阵运算(附PPT链接)
  17. 第十二届蓝桥杯大赛软件赛省赛C/C++ B组真题解析
  18. 4417. 神奇的字符串
  19. FreeSWITCH学习笔记 第二场 第二个镜头 JsSIP视频通讯
  20. 用do…while循环按公式e=计算 e 的值(精度为 1e-6)

热门文章

  1. spark:Task,Partition,RDD、节点数、Executor数、core数目的关系和Application,Driver,Job,Task,Stage理解
  2. kafka系列(4)- kafka集群操作
  3. 跟小博老师一起学JSP ——EL表达式
  4. 创建会计凭证保存前BTE增强
  5. 计算机ctrl加什么作用,ctrl是什么意思 Ctrl键的作用有哪些
  6. 4种常见的鉴权方式及说明
  7. 启动tim时为我自动登录不能勾选(为灰色)
  8. 英文pdf的划词翻译阅读方法
  9. 最长等差数列_最长等差子序列的长度
  10. 2022年下半年软考网络规划设计师下午真题及答案解析