千家信息网

深入玩转K8S之外网如何访问业务应用

发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,有一个问题就是现在我的业务分配在多个Pod上,那么如果我某个Pod死掉岂不是业务完蛋了,当然也会有人说Pod死掉没问题啊,K8S自身机制Deployment和Controller会动态的创建和销毁Po
千家信息网最后更新 2025年02月23日深入玩转K8S之外网如何访问业务应用

有一个问题就是现在我的业务分配在多个Pod上,那么如果我某个Pod死掉岂不是业务完蛋了,当然也会有人说Pod死掉没问题啊,K8S自身机制DeploymentController会动态的创建和销毁Pod来保证应用的整体稳定性,那这时候还会有问题,那就是每个Pod产生的IP都是动态的,那所以说重新启动了我对外访问的IP岂不是要变了,别急,下面我们来解决下这个问题。

可以通过Service来解决如上所遇到的问题,那么什么是Service呢?

Service是kubernetes最核心的概念,通过创建Service,可以为一组具有相同功能的容器应用提供一个统一的入口地址,并且将请求进行负载分发到后端的各个容器应用上。

简单来说Service就是一个把所有Pod都池化的一个组,然后对外统一固定一个IP,具体是哪些Pod可以通过之前介绍到的Label标签来进行设置。

在创建Service之前先看看我们在部署应用的时候创建的nginx.yml


刚在有提到,就是说哪些PodService池化是根据Label标签来的,那么可以看到图上所标识的nginx字样,后面我们创建Service会用到。

下面来创建个Service看看

解释下这个yml文件哈,其意思就是说呢V1api的版本,然后Kind表示当前资源类型为Serviceselector选择之前Label标签为nginxPod作为Service池化的对象,最后说的是把Service8080端口映射到Pod80端口。


执行kubectl apply创建Servie nginx-svc

1

kubcetl apply -f nginx-svc.yml

创建完成之后nginx-svc会分配到一个cluster-ip,可以通过该ip访问后端nginx业务。

创建完之后可以查看service详情查看后端都包含哪些pod

1

kubectl describe service nginx-svc

那它是怎么实现的呢?答案是通过iptables实现的地址转换和端口转换,可以用iptables-save查看。

那这时候有人说了,还是不能外网访问啊,别急下面我们来进行外网地址访问设置。在实际生产环境中,对Service的访问可能会有两种来源:Kubernetes集群内部的程序(Pod)和Kubernetes集群外部,为了满足上述的场景,Kubernetes service有以下三种类型:

1.ClusterIP:提供一个集群内部的虚拟IP(与Pod不在同一网段),以供集群内部的pod之间通信使用。

2.NodePort:在每个Node上打开一个随机端口并且每个Node的端口都是一样的,通过:NodePort的方式Kubernetes集群外部的程序可以访问Service。

3.LoadBalancer:利用Cloud Provider特有的Load Balancer对外提供服务,Cloud Provider负责将Load Balancer的流量导向Service

本篇文章我们着重讲下第二种方式,也就是NodePort方式,修改nginx-svc.yml文件,也就是刚才前面创建的Service文件,相信细心的同学会发现在之前截图的时候已经做好了NodePort,因为我的环境已经配置好了所以这样就不在截图了,配置很简单,可以网上看下截图,就是添加一个typeNodePort,然后重新创建下nginx-svc,命令的话和创建的命令一样,我们来看看创建完事的结果。

如果刚开始你没有设置NodePort这个type的时候在端口那只会显示一个8080端口,而设置了之后会看到多了一个端口也就是31337,那8080大家斗志是cluster-ip监听的端口,那31337就是在节点上新起的一个端口,Kubernetes会从30000~32767中分配一个可用的端口,每个节点都会监听这个端口,并转发给Service,也就是防止说一个节点挂了影响访问。可能有人会问了,说这里的Service可不可以固定?当时可以了,可以在Service nginx-svc.yml文件里面添加一个nodeport

最后我们可以验证下,我这里就不截图了,太长了。

curl x.x.x.x:31337

OK可能会有人说这个访问是随机的还是负载均衡的?答案是负载均衡的,依旧是采用iptables实现的,感兴趣的可以自己研究下iptables里面做的那些规则,这里就不再赘述了。


初级玩家的话,使用系统性,点点鼠标即可操作的容器也是棒棒哒~

华为云容器引擎,一个点点鼠标就可以完成容器创建的应用服务!美滋滋~

目前,华为云容器引擎推出容器体验馆,7天免费!欢迎体验哦~

https://www.huaweicloud.com/product/cce.html

端口 容器 就是 应用 问题 集群 也就是 截图 文件 业务 可以通过 地址 方式 时候 标签 节点 对外 均衡 动态 命令 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 金山区自动化软件开发项目信息 信息检索怎样选择数据库 专业软件开发创意 网络安全就业岗位多吗 数据库强制访问策略 幼儿园网络安全创意海报 网吧网络安全策略 网络安全和数据安全培训收获 华为手机退出账号无法连接服务器 属于数据库管理系统软件 杨浦区市场软件开发怎么样 数据库文本编辑器最新中文版 数据库的毕业设计 邯郸软件开发互动平台哪里好 合肥网络技术 魔兽怀旧服紧急服务器 奥维企业服务器怎么购买 长治网络安全和信息化工作会议 山东单招网络技术试题 安卓的数据库技术 江西智能化网络技术管理系统 方舟手游服务器可以传龙吗 网络安全建设包括哪些内容 宁波瑞千网络技术 传奇为什么找不到原来的服务器 免费云服务器永久使用推荐 过家家互联网科技公司 访问银行服务器有两个ip出口 数据库中的if用法 软件开发对应的测试
0