什么是service?
k8s每次构建pod的时候ip地址都会变化,pod之间直接访问就会有问题,不能每次重建pod的时候手动修改pod的ip地址,如果pod之间加上一个固定的访问接口就可以解决访问的问题。 比如nginx调用tomcat,正常的访问都是通过添加nginx的upstream添加固定的node地址去轮询访问,容器化后每次重新构建tomcat后ip地址 都会发生变化,这样我们就需要每次重建后都需要更改配置。这样一来使用过程很糟糕,我们可以把service想象成一个服务的接口,nginx访问不直接访问tomcat而是去访问tomcat的service 这样一来无论tomcat的ip怎么变化,我们只需要访问tomcat的service就可以了。
service的访问流程
service常用的暴露接口的方式
1、NodePort:在Node节点上监听端口,来访问service的服务。
2、ClusterIP:此ip仅在k8s内部访问。
yaml格式模版
kind: Service #指定资源对象
apiVersion: v1 #版本
metadata: #元数据
labels:
app: lhl-nginx-service #service的标签
name: bhb-nginx-service #service的名称
namespace: lhl #指定在lhl的ns中创建
spec:
type: NodePort #暴露方式
ports:
– name: http
port: 80 #service端口
targetPort: 80 #pod端口
nodePort: 43990 #node节点暴露端口
selector:
app: nginx-app1 #把消息指定转发到lhl的ns下pod有app: nginx-app1 的标签