k8s的service和endpoint
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相关推荐
- K8S仪表板Service unavailable故障的解决办法
K8S仪表板Service unavailable故障的解决办法 (使用Rancher部署Kubernetes后访问仪表板提示Service unavailable的问题) 一.逐项检查: 1.操作系 ...
- k8s创建service
k8s创建service 一.创建service示例 1.1.已有的deployment 1.2.使用expose创建 1.3.使用yaml创建 1.4.从集群外部访问service 1.5.创建无头 ...
- k8s之 service account token
在前一篇笔记中我们验证了使用sa的token作为一种认证,向apiserver发送请求,这里简述下它的认证原理和流程. 首先得知道这种token称为JWT(json web token),可以参考官网 ...
- k8s中service类型
Kubernetes Kubernetes Pods是有生命周期的.他们可以被创建,而且销毁不会再启动. 如果您使用Deployment来运行您的应用程序,则它可以动态创建和销毁 Pod. 一个Kub ...
- k8s的service端口暴露与代理
文章目录 1 Service 2 service暴露端口的方式 2.1 clusterIP 2.2 NodePort 2.3 loadbalancer 2.4 lngress 3 kubernetes ...
- 7. 丈母娘嫌我不懂K8s的Service概念,让我去面壁
文章目录 一.Service 简介 1.1 Service 概念 1.2 Service 类型 1.3 Service 基础导论 二.代理 2.1 VIP 和 Service 代理 2.2 代理模式分 ...
- k8s中Service ClusterIP ping不通?
一. Service的类型 先来看看<kubernetes权威指南>中对Service类型的介绍: ClusterIP:kubernetes默认会自动设置Service的虚拟IP地址,仅可 ...
- k8s之service服务(微服务)
一.service介绍 Service可以看作是一组提供相同服务的Pod对外的访问接口.借助Service,应用可以方便地实现服务发现和负载均衡. service默认只支持4层负载均衡能力,没有7层功 ...
- k8s核心技术-Service概述_Service如何实现负载均衡_提供虚拟IP_以及Po的IP注册和发现---K8S_Google工作笔记0031
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后咱们再来说下一个概念service概念 . 为什么需要service呢,因为咱们知道,k8s中 ...
最新文章
- MATLAB_图形学_形态学课程_温馨饭店招牌扣出‘温馨饭店’四个大字
- 手游 android 分辨率 适配,安卓不得不玩的神作,十大超高画质手游(安卓)
- 中国WEB 2.0的质变过程
- javsscript练习
- 中后台管理信息系统通用原型方案_AxureUX客户关系管理系统后台设置中心原型模板正式发布...
- mysql 以数组的形式插入更新表
- 页面引用CSS和Javascript时,内联和外置的区别
- android 支付宝沙箱测试环境,Android支付宝沙箱环境使用教程
- Linux 下hosts文件详解
- android 获取当前画布,Android硬件位图填坑之获取硬件画布
- jboss war包放哪_如何将JBoss HR Employee Rewards项目放入云端
- 【BlackHat】速修复!有人正在扫描 Exchange 服务器寻找 ProxyShell 漏洞
- java代码无限弹窗制作_vbs无限弹窗制作方法
- 返回顶部php代码,页面按需返回顶部代码及注释说明
- 在CentOS中安装MySql数据库教程
- 黑马Python笔记1
- 百度地图自定义信息窗口
- java 简单考试系统 ——java程序设计
- Moblin授权中心在台北挂牌开业
- Aurora8B10B IP使用 -04- IP例程应用实例