将Pod公开为网络服务的抽象方法
1.当前Pod的访问方式
- 查看Pod的详细情况

- 在各个节点均可访问

- 问题:前端访问这个应用,需要知道3个pod的ip。显然不合适。
- 解决方式

2.创建Service
2.1命令行方式
创建Service
#暴露Deploykubectl expose deployment my-dep --port=8000 --target-port=80

#使用标签检索Podkubectl get pod -l app=my-dep

查看Service
#查看servicekubectl get svc

尝试访问
可以尝试访问,仅限于三台服务器,以及Pod内。和pod的访问范围一样。
curl 10.96.163.244:8000
- 负载均衡验证
- 分别在三个Pod中的index.html写入不同的值
- 在任意云主机控制台访问curl 10.96.163.244:8000

- 域名方式访问,只能在Pod内进行
curl my-dep.default.svc:8000
删除已经创建的service
kubectl delete svc xxx
2.2yaml文件方式
配置文件
#vi my-dep-service.yamlapiVersion: v1kind: Servicemetadata:labels:app: my-depname: my-depspec:selector:app: my-depports:- port: 8000protocol: TCPtargetPort: 80
kubectl apply -f xxx.yaml
3.ClusterIp模式

默认的创建就是ClusterIp模式。集群内可以访问
# 等同于没有--type的kubectl expose deployment my-dep --port=8000 --target-port=80 --type=ClusterIP
apiVersion: v1kind: Servicemetadata:labels:app: my-depname: my-depspec:ports:- port: 8000protocol: TCPtargetPort: 80selector:app: my-deptype: ClusterIP
4.NodePort模式

可以通过外网访问
kubectl expose deployment my-dep --port=8000 --target-port=80 --type=NodePort


