1、Service概述
Service 是 Kubernetes 最核心概念,通过创建 Service,可以为一组具有相同功能的容器应用提供一个统一的入口地址,并且将请求负载分发到后端的各个容器应用上
2、Service存在意义
- 防止Pod失联(服务发现)
- 定义一组Pod访问策略(负载均衡)
3、Pod和Service关系
spec:
replicas: 1
selector:
matchLabels:
app: web
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: web
spec:
containers:
- image: nginx
name: nginx
- 根据label和selector标签建立关联
- 通过service实现pod的负载均衡
- service对外有一个 vip及虚拟ip
4、常用的Service类型
- ClusterIP:集群内部使用(node可以访问master的)
- NodePort:对外访问应用使用
- LoadBalancer:对外访问应用使用,<公有云>
kubectl get pods
//查看对外暴露的端口
kubectl get svc
//对外暴露端口并生成yaml文件
kubectl expose deployment web --port=80 --target-port=80 --dry-run -o yaml > service1.yaml
//vi service1.yaml 生成的yaml文件如下:
apiVersion: v1
kind: Service
metadata:
labels:
app: web
name: web
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: web
type: ClusterIP
status:
loadBalancer: {}
node 内网部署应用,外网一般不能访问到
- 找到一台可以进行外网访问机器,安装nginx,反向代理(手动把可以访问的节点添加到nginx里面)
LoadBalancer:公有云,把负载均衡,控制器