有一个问题就是现在我的业务分配在多个Pod上,那么如果我某个Pod死掉岂不是业务完蛋了,当然也会有人说Pod死掉没问题啊,K8S自身机制Deployment和Controller会动态的创建和销毁Pod来保证应用的整体稳定性,那这时候还会有问题,那就是每个Pod产生的IP都是动态的,那所以说重新启动了我对外访问的IP岂不是要变了,别急,下面我们来解决下这个问题。
可以通过Service来解决如上所遇到的问题,那么什么是Service呢?
Service是kubernetes最核心的概念,通过创建Service,可以为一组具有相同功能的容器应用提供一个统一的入口地址,并且将请求进行负载分发到后端的各个容器应用上。
简单来说Service就是一个把所有Pod都池化的一个组,然后对外统一固定一个IP,具体是哪些Pod可以通过之前介绍到的Label标签来进行设置。
在创建Service之前先看看我们在部署应用的时候创建的nginx.yml
刚在有提到,就是说哪些Pod被Service池化是根据Label标签来的,那么可以看到图上所标识的nginx字样,后面我们创建Service会用到。
下面来创建个Service看看
解释下这个yml文件哈,其意思就是说呢V1是api的版本,然后Kind表示当前资源类型为Service,selector选择之前Label标签为nginx的Pod作为Service池化的对象,最后说的是把Service的8080端口映射到Pod的80端口。
执行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

本文介绍了在K8S中如何通过Service解决Pod动态IP导致的对外访问问题。Service为Pod提供统一入口并实现负载均衡。详细讲解了ClusterIP、NodePort和LoadBalancer三种Service类型,重点讨论了使用NodePort允许外网访问K8S集群内的应用。
最低0.47元/天 解锁文章
1014

被折叠的 条评论
为什么被折叠?



