当前位置: 首页 > news >正文

k8s-service、endpoints、pod之间是怎么进行网络互通的

k8s-service、endpoints、pod之间是怎么进行网络互通的

  • 1、service
  • 2、endpoints
  • 3、service、endpoints、pod通信图
  • 4、不通服务pod内部间访问

1、service

在K8S中,Service是一种抽象,定义了一组Pod的逻辑集合和访问这些Pod的策略。首先,我们需要创建一个Service,并指定该Service的selector来确定要选中的Pod。
k8s集群也会为service分配个cidr,每个service都有对应的IP。
查看service。

 kubectl get svc
[root@k8s-node2 k8s]# kubectl get svc 
NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP        33h
nginx        NodePort    10.102.104.249   <none>        80:30940/TCP   5h20m

查看指定service详情。

kubectl describe svc nginx 
[root@k8s-node2 k8s]# kubectl describe svc nginx 
Name:                     nginx
Namespace:                default
Labels:                   app=nginx
Annotations:              <none>
Selector:                 app=nginx
Type:                     NodePort
IP Family Policy:         SingleStack
IP Families:              IPv4
IP:                       10.102.104.249
IPs:                      10.102.104.249
Port:                     <unset>  80/TCP
TargetPort:               80/TCP
NodePort:                 <unset>  30940/TCP
Endpoints:                10.244.169.129:80,10.244.36.65:80
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

2、endpoints

Endpoints是将Service与其后端Pod关联的方式。我们需要在创建Service后,自动创建与Service相关的Endpoints。

查看ep,可以发现,nginx对应的endpoints是pod的ip地址和端口。

[root@k8s-node2 k8s]# kubectl get ep
NAME         ENDPOINTS                           AGE
kubernetes   192.168.8.132:6443                  33h
nginx        10.244.169.129:80,10.244.36.65:80   5h22m

3、service、endpoints、pod通信图

盗用的大佬的,哈哈
在这里插入图片描述

4、不通服务pod内部间访问

比如,部署了nginx和mysql。 从nginx的pod要去访问mysql,直接可以访问mysql的service的name去访问。

演示,服务间通信,我是用busybox的pod去访问nginx。

apiVersion: v1
kind: Pod
metadata:name: busyboxlabels:purpose: demonstrate-busybox
spec:containers:- name: busyboximage: busyboxcommand:- sleep- "3600"resources:limits:memory: "128Mi"cpu: "500m"
kubectl apply -f busybox.yaml

进入busybox容器

kubectl exec -it busybox -- sh

通过nginx的service的name访问nginx

wget http://nginx

访问成功
在这里插入图片描述
注意:不同pod服务之间可以跨命名空间去访问的,访问格式,service的name.命名空间name,nginx放到默认命名空间default里的。

wget http://nginx.default
http://www.lryc.cn/news/480504.html

相关文章:

  • Go语言开发商城管理后台-GoFly框架商城插件已发布 需要Go开发商城的朋友可以来看看哦!
  • 【51单片机】UART串口通信原理 + 使用
  • 高性能分布式缓存Redis-高可用部署
  • 如何使用XSL-FO生成PDF格式的电子发票的技术博文示例
  • TDengine 签约山东港,赋能港口数字化转型
  • 基于YOLO11/v10/v8/v5深度学习的煤矿传送带异物检测系统设计与实现【python源码+Pyqt5界面+数据集+训练代码】
  • mysql-workbench 导入csv格式数据报错:Unhandled exception: Could not determine delimiter
  • 使用Python简单实现客户端界面
  • 15分钟学 Go 第 43 天:前端与Go的结合
  • 解决SRS推送webrtc流卡顿问题
  • GDPU Andriod移动应用 Broadcast Receiver
  • CSP/信奥赛C++刷题训练:经典例题 - 栈(1):洛谷P3056 :[USACO12NOV] Clumsy Cows S
  • WiFi一直获取不到IP地址是怎么回事?
  • 蓝牙BLE开发——iOS 每次写入数据超过200字节报错?
  • Ascend Extension for PyTorch是个what?
  • 学习docker第五弹-----高级篇start-Dockerfile
  • 【Elasticsearch】Elasticsearch集成Spring Boot
  • HarmonyOS 移
  • 跨子网的WinCC客户机/服务器如何实现通讯?
  • java 面向对象高级
  • 递推经典例题 - 爬楼梯
  • OpenCV视觉分析之目标跟踪(12)找到局部的最大值函数meanShift()的使用
  • 《数据治理精选案例集2.0(2024版)》592页PDF(已授权分享)
  • 【51单片机】LED点阵屏 原理 + 使用
  • Java基于SpringBoot+Vue的宠物共享平台的设计与实现(附源码,文档)
  • 【案例】Excel使用宏来批量插入图片
  • 报名开启|开放原子大赛“Rust数据结构与算法学习赛”
  • [翻译] 创始人模式(Founder Mode)
  • 拓扑排序(C++类封装+数组模拟队列和邻接表)
  • FP独立站引流革命:GG斗篷技术解锁流量新策略