【Kubernetes】浏览器访问服务
环境
- kubernetes 1.20.2
- Spring Boot 2.5.0-M1
目标
通过浏览器访问 Service,并访问到后端 Pod 提供的服务。
查看 Service
[root@master kubernetes]# kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 6d1h
svc-demo ClusterIP 10.106.217.209 <none> 8080/TCP 40m
在 TYPE 一栏,我们看到类型是 ClusterIP,表示是集群 IP,不能通过外部访问。
之前我们在外面使用命令行访问到了,又是怎么回事了呢?
原因是因为安装了 k8s 这三台服务器,具有路由转发规则,如果是集群内部的 IP,
会被转发到 k8s 的内部,所以才能访问。如果我在宿主机上进行访问,那么是访问不到的。
NodePort
Service 除了默认的 ClusterIP(不写)外,接下来介绍另外一种类型:NodePort。
在服务器上打开一个端口,通过该端口可以访问 k8s 的 Service。
该种方式可以实现,在 Windows 的浏览器上访问虚拟机里提供的服务。
yaml
apiVersion: v1
kind: Service
metadata:
name: svc-demo
spec:
type: NodePort
selector:
app: myapp
ports:
- port: 8080
targetPort: 8080
可以看到新增了一个 type 字段,并且设置为 NodePort。
查看 Service
[root@master kubernetes]# kubectl get -f svc.yaml
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
svc-demo NodePort 10.106.217.209 <none> 8080:32329/TCP 66m
[root@master kubernetes]#
可以看到额外生成了一个端口:32329,通过这个端口,在 Windows 上访问试试。
访问测试
浏览器访问
命令行访问
PS C:\Users\JiangBo> curl http://192.168.56.101:32329/hostname
rc-demo-5tshk actuator
PS C:\Users\JiangBo> curl http://192.168.56.101:32329/hostname
rc-demo-8xdp6 actuator
PS C:\Users\JiangBo> curl http://192.168.56.101:32329/hostname
rc-demo-d95v4 actuator
PS C:\Users\JiangBo> curl http://192.168.56.101:32329/hostname
rc-demo-5tshk actuator
PS C:\Users\JiangBo>
可以看到 curl 访问时,每个 Pod 轮询访问。但是如果在浏览器上访问,会看到一直是一个。
除了稍等久一会访问,才会看到新的。这是因为浏览器为了减少建立连接的时间,会重用连接。
在建立连接之后,如果没有断开,那么将一直是这个 Pod。
总结
介绍了通过外部的机器来访问 k8s 中的服务,包括浏览器和命令行的方式。
附录
分类:
Kubernetes
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!