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

k8s-Pod中的网络通信(3)

部署的pod都会涉及到和内外网络通信,我们部署的pod 有一个ip,这个IP 是集群内部的IP ,只能在集群内被访问,k8s中pod的网路通信是交给service来管理的,简称svc。负责将外部流量引入,和内部流量引出。

1.外部流量访问内部

我们pod部署的时候是有一个标签label的,service在创建的时候也会指定一个标签,这样就可以把对应label的pod关联起来,podIP+端口形成一个端点-ednpoint,service也有自己的IP和端口,service的端口和宿主机的端口通过NodePort形成映射,这样访问宿主机的端口就能访问到service,service再转发到对应的pod上。

service的这能力都是kude-proxy来实现的(部署k8s的时候对应的有一个kube-proxy:v1.28.15镜像)。kude-proxy最终会把这这些映射规则转化成iptables规则,来完成流量的转发。

image

 

创建service的方式

命令:expose

清单文件:apply -f 文件

 

kubectl expose deployment my-nginx-deploment --port=8001 --target-port=80 --type=NodePort

创建一个service将流量引入到my-nginx-deploment部署的pod上,

--port是service暴露的端口,

--target-port是背后实际应用容器的端口,我们部署的nginx是80端口

--type=NodePort 映射到宿主机端口 取值有这几个 ClusterIP, NodePort, LoadBalancer, or ExternalName. Default is 'ClusterIP'.

 

kubectl expose deployment my-nginx-deploment --port=8001 --target-port=80 --type=NodePort --dry-run=client -o yaml > my-nginx-svc.yaml

 

image

 

apply -f my-nginx-svc.yaml

kubectl get svc 查看service

kubectl describe svc my-nginx-deploment 查看详细的信息

 

image

 

启了一个service 给svc分配的ip是 10.108.229.67 这个IP 也是集群内部的IP,端口8001,指向了10.244.2.6:80,

在集群其他节点可以访问这个地址curl 10.104.212.94:8001 也能访问我们之前启动的nginx

集群外部访问的话就需要用到NodePort暴露的端口

任意node宿主机节点IP:NodePort暴露的端口

我的是

192.168.255.102:31101

192.168.255.103:31101

都可以访问到我们部署k8s里面的nginx了

 

image

 

2.内部访问外部:

pod——service——endpoint——外部服务

外部访问内部的时候endpoint 是pod的IP和端口,k8s自己可以知道是啥,内部访问外部的,走出去的时候K8s就不知道关联外部的endpoint了,这就需要手工配置endpoint了

image

 

我在vmware宿主机 IP:192.168.255.1 上面部署一个nginx:

image

 

创建资源清单文件:out-ng.yaml  内容如下

apiVersion: v1
kind: Service
metadata:name: out-ng
spec:ports:- port: 80targetPort: 80# 注意:没有 selector!
---
apiVersion: v1
kind: Endpoints   # 手动配置的端点
metadata:name: out-ng       # 必须和 Service 同名!
subsets:- addresses:- ip: 192.168.255.1   # 外部服务的 IPports:- port: 80

 

kubectl apply -f out-ng.yaml 

 

image

 

分配给service 的ip是 10.107.74.203 对应端点的是192.168.255.1:80

进入我们之前的pod里面,再访问service 的ip,就能看到访问到了我们外面机器部署的nginx

kubectl exec my-nginx-deploment-799c59bc4d-nkgbc -it -- /bin/bash

curl 10.107.74.203

image

 

我们现在建了两个svc,内部访问外部和外部访问内部是不同的svc负责。

 

http://www.jsqmd.com/news/29339/

相关文章:

  • 一个灵感:思维的断章
  • 第十届中国大学生程序设计竞赛 哈尔滨站(CCPC 2024 Harbin Site)
  • CSP-S 回顾
  • https://heylink.me/tizihacks/
  • 2025CSP-J游记
  • 通达信:引用函数 - Leone
  • 20231427田泽航第七周预习报告
  • CSP总结
  • AI泡沫再思考:技术革命与投资狂潮的真相
  • [群表示论]基本概念
  • P14362 [CSP-S 2025] 道路修复
  • 10.30总结
  • 基于 Maxwell 实现 MySQL 数据实时迁移到 Mongodb
  • CSP2025-S 坠机记
  • jenkins安装排错
  • 一、RK3562板卡上手
  • 【题解】CCPC 2024 Jinan Site [J] Temperance
  • 2025 年 11 月金属件去毛刺机,五金去毛刺机,自动去毛刺机厂家最新推荐,聚焦资质、案例、售后的五家机构深度解读!
  • 原来求凸包这么简单
  • 2025 年 11 月全自动激光去毛刺机,金属件去毛刺机,自动去毛刺机厂家最新推荐,精准检测与稳定性能深度解析!
  • 2025 年 11 月数控激光去毛刺机,冲压件去毛刺机,精密去毛刺机厂家最新推荐,实力品牌深度解析采购无忧之选!
  • AT ARC156C Tree and LCS 题解
  • 2025 年 11 月回转式风机厂家最新推荐,实力品牌深度解析采购无忧之选!
  • CSPT漏洞浅析
  • 【题解】CCPC 2024 Jinan Site [F] The Hermit
  • Ubunt 搭建Samba服务
  • 2025 年 11 月精密无缝钢管,镀锌无缝钢管,定制无缝钢管厂家最新推荐,产能、专利、环保三维数据透视!
  • 2025 年 11 月合金无缝钢管,大口径无缝钢管,厚壁无缝钢管厂家最新推荐,技术实力与市场口碑深度解析!
  • 题解:AT_abc131_e [ABC131E] Friendships
  • C 运算符、表达式、语句