service定义一组pod的访问规则
1.service存在意义
1)防止Pod失联 (服务发现)
pod之间的相互调用不能使用ip访问,因为pod的ip是不固定的,可以使用servicename访问
CoreDNS 把servicename和service-ip关联起来
2)定义一组Pod访问策略(负载均衡)
2.Pod和Service关系 (Pod和Controller关系)
根据label和selector标签建立关联的
通过service实现Pod的负载均衡
service的ip是vip,虚拟ip,不是实际存在的
3.service常用类型
kubectl export —help # 可以查看type类型
1)ClusterIP:集群IP,集群内部使用
2)NodePort:对外访问应用使用,每个node节点都开一个port
3)LoadBalancer:对外访问应用使用,公有云厂商使用,再进行公有云的负载均衡
kubectl expose deployment web —port=80 —target-port=80 —dry-run -o yaml > service1.yaml
node内网部署应用,外网一般不能访问到的
找到一台可以进行外网访问机器,安装nginx,反向代理
手动把可以访问节点添加到nginx里面
service.yaml 内容有
api
kind
metadata
spec
type: # NodePort、ClusterIP
ports:
- port: # Service暴露端口
targetPort: # 真正提供服务的Pod端口
nodePort: # 宿主机暴露端口
selector:
port是service端口,即k8s中服务之间的访问端口
targetport是pod(也就是容器)的端口
nodeport是容器所在node节点的端口,即外部机器可访问的端口。(通过nodeport类型的service暴露给集群节点)