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

news/2024/11/14 11:09:06/

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地址和端口, 也就是访问nginx的service时,会自动映射到pod上

[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

虽然service有IP,但是一般都是通过nginx的service的name访问nginx服务的

wget http://nginx

访问成功
在这里插入图片描述


注意:不同pod服务之间可以跨命名空间去访问的,访问格式,service的name.命名空间name,nginx放到默认命名空间default里的。

wget http://nginx.default

http://www.ppmy.cn/news/1546902.html

相关文章

Unity3D 制作MMORPG 3D地图编辑器详解

前言 在MMORPG&#xff08;大型多人在线角色扮演游戏&#xff09;开发中&#xff0c;地图编辑器是一个至关重要的工具。它不仅能帮助开发者快速创建游戏世界&#xff0c;还能设计各种地形和场景。本文将详细介绍如何使用Unity3D制作一个3D地图编辑器&#xff0c;包括技术详解和…

图论基本术语

图论算法 —— 图论概述-CSDN博客 理论基础 —— 图_依附于顶点v是什么意思-CSDN博客 理论基础 —— 图 —— 图的存储结构_十字链表和链式前向星-CSDN博客 语雀版本 概括&#xff1a;图是计算机中常用的一种存储结构&#xff0c;图论是数学的一个分支&#xff0c;他以图为…

JAVA-队列

一、队列的概念 队列&#xff1a;只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表&#xff0c;队列具有先进先出FIFO(First In First Out) 入队列&#xff1a;进行插入操作的一端称为队尾&#xff08;Tail/Rear&#xff09; 出队列&#xff1a…

GitLab 如何跨版本升级?

本分分享 GitLab 跨版本升级的一些注意事项。 众所周知&#xff0c;GitLab 的升级必须要严格遵循升级路径&#xff0c;否则就会出现问题&#xff0c;导致升级失败。因此&#xff0c;在 GitLab 升级之前需要做好两件事情&#xff1a; 当前版本的确认升级路径的确认 极狐GitLa…

[基础] 003 使用github提交作业

注意 : 这篇文章是水分子HOH社区举办的move共学营中提交作业的方法 项目地址 : https://github.com/move-cn/letsmove/ 第一步 : fork 项目 fork项目就是将官方的仓库同步一份到自己github上,但需要注意的是这个同步不是实时同步,每次自己拉取代码之前需要手动同步一下 create…

Excel打印图片变形:问题根源与解决方案

在日常的办公和学习中&#xff0c;Excel作为数据处理和展示的利器&#xff0c;被广泛应用于各种场景。然而&#xff0c;当我们在Excel中插入并尝试打印圆形图片时&#xff0c;却常常会遇到图片变形的问题。一个原本正常的圆形图片&#xff0c;在打印预览或实际打印出来时&#…

对称加密与非对称加密:密码学的基石及 RSA 算法详解

对称加密与非对称加密&#xff1a;密码学的基石及 RSA 算法详解 在当今数字化的时代&#xff0c;信息安全至关重要。对称加密和非对称加密作为密码学中的两种基本加密技术&#xff0c;为我们的数据安全提供了强大的保障。本文将深入探讨对称加密和非对称加密的特点、应用场景&…

Docker解决暴露2375端口引发的安全漏洞

docker的暴露api端口2375&#xff0c;没有任何安全防护&#xff0c;我们通过linux系统防火墙&#xff08;iptables&#xff09;来进行ip访问限制 # 查看iptables所有规则 iptables -L -nv # 只允许某个ip访问2375端口 iptables -I INPUT -s 127.0.0.1 -p tcp --dport 2375 -j A…