service: 在k8s中,pod之间是通信是一般通过service名称完成的
endpoint: pod和service之间的关联关系,是通过endpoint实现的。 Endpoints表示了一个Service对应的所有Pod副本的访问地址,而Endpoints Controller负责生成和维护所有Endpoints对象的控制器。它负责监听Service和对应的Pod副本的变化。

对于pod,endpoint是集群自动创建的,用于将service和pod关联起来;而对于外部服务(部署在集群外边的数据库啥的),我们可以人工的创建endpoint和service。使其能够更规范的和pod进行通信。

这里主要记录一下endpoint和service的书写规则。两种场景:

一个端口,多个地址

创建脚本
[root@10-9-71-11 ~]# cat redis.yaml
kind: Endpoints
apiVersion: v1
metadata:name: redis-cluster
subsets:- addresses:- ip: 10.130.25.161- ip: 10.130.25.162- ip: 10.130.25.163 ports:- port: 6379
---
kind: Service
apiVersion: v1
metadata:name: redis-cluster
spec:ports:- protocol: TCPport: 6379targetPort: 6379
查看servcie和endpoint详情,可看到ip和端口的对应关系
[root@10-9-71-11 ~]# kubectl describe endpoints redis-cluster
Name:         redis-cluster
Namespace:    default
Labels:       <none>
Annotations:  kubectl.kubernetes.io/last-applied-configuration:{"apiVersion":"v1","kind":"Endpoints","metadata":{"annotations":{},"name":"redis-cluster","namespace":"default"},"subsets":[{"addresses":[...
Subsets:Addresses:          10.130.25.161,10.130.25.162,10.130.25.163NotReadyAddresses:  <none>Ports:Name     Port  Protocol----     ----  --------<unset>  6379  TCPEvents:  <none>
[root@10-9-71-11 ~]# kubectl describe svc redis-cluster
Name:              redis-cluster
Namespace:         default
Labels:            <none>
Annotations:       kubectl.kubernetes.io/last-applied-configuration:{"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"name":"redis-cluster","namespace":"default"},"spec":{"ports":[{"port":63...
Selector:          <none>
Type:              ClusterIP
IP:                10.0.147.90
Port:              <unset>  6379/TCP
TargetPort:        6379/TCP
Endpoints:         10.130.25.161:6379,10.130.25.162:6379,10.130.25.163:6379
Session Affinity:  None
Events:            <none>

简单查看service和endpoint

[root@10-9-71-11 ~]# kubectl get endpoints redis-cluster
NAME            ENDPOINTS                                                  AGE
redis-cluster   10.130.25.161:6379,10.130.25.162:6379,10.130.25.163:6379   2m3s
[root@10-9-71-11 ~]#
[root@10-9-71-11 ~]# kubectl get svc redis-cluster
NAME            TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)    AGE
redis-cluster   ClusterIP   10.0.147.90   <none>        6379/TCP   2m16s

一个地址,多个端口

创建脚本
[root@10-9-71-11 ~]# cat  redis.yaml
kind: Endpoints
apiVersion: v1
metadata:name: redis
subsets:- addresses:- ip: 10.130.25.161 ports:- name: port1port: 26379- name: port2port: 26380- name: port3port: 26381
---
kind: Service
apiVersion: v1
metadata:name: redis
spec:ports:- name: port1protocol: TCPport: 26379targetPort: 26379- name: port2protocol: TCPport: 26380targetPort: 26380- name: port3protocol: TCPport: 26381targetPort: 26381 
  • 使用多个端口时,端口必须有名字
  • 多端口之间通过列表的形式展现
查看servcie和endpoint详情,可看到ip和端口的对应关系
[root@10-9-71-11 ~]# kubectl describe  endpoints redis
Name:         redis
Namespace:    default
Labels:       <none>
Annotations:  kubectl.kubernetes.io/last-applied-configuration:#             {"apiVersion":"v1","kind":"Endpoints","metadata":{"annotations":{},"name":"redis","namespace":"default"},"subsets":[{"addresses":[{"ip":"1...}]
Subsets:Addresses:          10.130.25.161NotReadyAddresses:  <none>Ports:Name   Port   Protocol----   ----   --------port3  26381  TCPport2  26380  TCPport1  26379  TCPEvents:  <none>
--------------------------------------------------
[root@10-9-71-11 ~]# kubectl describe  service  redis
Name:              redis
Namespace:         default
Labels:            <none>
Annotations:       kubectl.kubernetes.io/last-applied-configuration:{"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"name":"redis","namespace":"default"},"spec":{"ports":[{"name":"port1","p...
Selector:          <none>
Type:              ClusterIP
IP:                10.0.92.98
Port:              port1  26379/TCP
TargetPort:        26379/TCP
Endpoints:         10.130.25.161:26379
Port:              port2  26380/TCP
TargetPort:        26380/TCP
Endpoints:         10.130.25.161:26380
Port:              port3  26381/TCP
TargetPort:        26381/TCP
Endpoints:         10.130.25.161:26381
Session Affinity:  None
Events:            <none>

简单查看service和endpoint

[root@10-9-71-11 ~]# kubectl get endpoints redis
NAME    ENDPOINTS                                                     AGE
redis   10.130.25.161:26381,10.130.25.161:26380,10.130.25.161:26379   48m
[root@10-9-71-11 ~]# kubectl get svc redis
NAME    TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)                         AGE
redis   ClusterIP   10.0.92.98   <none>        26379/TCP,26380/TCP,26381/TCP   49m

k8s的service和endpoint相关推荐

  1. K8S仪表板Service unavailable故障的解决办法

    K8S仪表板Service unavailable故障的解决办法 (使用Rancher部署Kubernetes后访问仪表板提示Service unavailable的问题) 一.逐项检查: 1.操作系 ...

  2. k8s创建service

    k8s创建service 一.创建service示例 1.1.已有的deployment 1.2.使用expose创建 1.3.使用yaml创建 1.4.从集群外部访问service 1.5.创建无头 ...

  3. k8s之 service account token

    在前一篇笔记中我们验证了使用sa的token作为一种认证,向apiserver发送请求,这里简述下它的认证原理和流程. 首先得知道这种token称为JWT(json web token),可以参考官网 ...

  4. k8s中service类型

    Kubernetes Kubernetes Pods是有生命周期的.他们可以被创建,而且销毁不会再启动. 如果您使用Deployment来运行您的应用程序,则它可以动态创建和销毁 Pod. 一个Kub ...

  5. k8s的service端口暴露与代理

    文章目录 1 Service 2 service暴露端口的方式 2.1 clusterIP 2.2 NodePort 2.3 loadbalancer 2.4 lngress 3 kubernetes ...

  6. 7. 丈母娘嫌我不懂K8s的Service概念,让我去面壁

    文章目录 一.Service 简介 1.1 Service 概念 1.2 Service 类型 1.3 Service 基础导论 二.代理 2.1 VIP 和 Service 代理 2.2 代理模式分 ...

  7. k8s中Service ClusterIP ping不通?

    一. Service的类型 先来看看<kubernetes权威指南>中对Service类型的介绍: ClusterIP:kubernetes默认会自动设置Service的虚拟IP地址,仅可 ...

  8. k8s之service服务(微服务)

    一.service介绍 Service可以看作是一组提供相同服务的Pod对外的访问接口.借助Service,应用可以方便地实现服务发现和负载均衡. service默认只支持4层负载均衡能力,没有7层功 ...

  9. k8s核心技术-Service概述_Service如何实现负载均衡_提供虚拟IP_以及Po的IP注册和发现---K8S_Google工作笔记0031

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后咱们再来说下一个概念service概念 . 为什么需要service呢,因为咱们知道,k8s中 ...

最新文章

  1. MATLAB_图形学_形态学课程_温馨饭店招牌扣出‘温馨饭店’四个大字
  2. 手游 android 分辨率 适配,安卓不得不玩的神作,十大超高画质手游(安卓)
  3. 中国WEB 2.0的质变过程
  4. javsscript练习
  5. 中后台管理信息系统通用原型方案_AxureUX客户关系管理系统后台设置中心原型模板正式发布...
  6. mysql 以数组的形式插入更新表
  7. 页面引用CSS和Javascript时,内联和外置的区别
  8. android 支付宝沙箱测试环境,Android支付宝沙箱环境使用教程
  9. Linux 下hosts文件详解
  10. android 获取当前画布,Android硬件位图填坑之获取硬件画布
  11. jboss war包放哪_如何将JBoss HR Employee Rewards项目放入云端
  12. 【BlackHat】速修复!有人正在扫描 Exchange 服务器寻找 ProxyShell 漏洞
  13. java代码无限弹窗制作_vbs无限弹窗制作方法
  14. 返回顶部php代码,页面按需返回顶部代码及注释说明
  15. 在CentOS中安装MySql数据库教程
  16. 黑马Python笔记1
  17. 百度地图自定义信息窗口
  18. java 简单考试系统 ——java程序设计
  19. Moblin授权中心在台北挂牌开业
  20. Aurora8B10B IP使用 -04- IP例程应用实例

热门文章

  1. Vmware安装就出现感叹号怎么解决
  2. opencsv解析csv文件
  3. 软件测试面试如何写出HR青睐的简历?
  4. JSP之四大作用域(pageContext,request,session,application)
  5. Java—I/O系统
  6. 奥凯丰 PDF转换大师使用教程
  7. Scrapy框架爬取数据
  8. JAVA一头母羊的寿命是5年_母羊生小羊,N年有多少羊问题
  9. 看看谁还不会用【ARM汇编】求最大值
  10. 2600万——运营思维的胜利