1. 简介2. ClusterIP模式2.1 准备2.2 查看信息2.3 统一暴露成服务2.4 访问端口2.4.1 使用IP2.4.2 使用域名的方式2.5 以文件的形式创建Service2.6 下线测试2.7 上线测试3. NodePort模式3.1 暴露端口3.2 集群IP访问3.3 使用随机端口访问4. 补充4.1查看每个Pod的标签
1. 简介
service: Pod的服务发现与负载均衡。一组Pod配置成
2. ClusterIP模式
2.1 准备
- 环境:3个Pod部署了Nignx
- 3个Pod中分别写入内容
root@my-dep-5b7868d854-99m5h:/# cd /usr/share/nginx/html/ root@my-dep-5b7868d854-99m5h:/usr/share/nginx/html# ls 50x.html index.html root@my-dep-5b7868d854-99m5h:/usr/share/nginx/html# echo 2222 > index.html
2.2 查看信息
2.3 统一暴露成服务
# 1. 暴露端口 # 等价于kubectl expose deploy my-dep --port=8000 --target-port=80 --type=ClusterIP kubectl expose deploy my-dep --port=8000 --target-port=80 # 2. 访问service kubectl get service
2.4 访问端口
2.4.1 使用IP
# 访问暴露端口8000 root@docker01:/home# curl 10.96.250.75:8000
集群内任意位置使用service的
ip:port
都可以访问,可以发现随机打印3台中的内容,达到负载均衡。2.4.2 使用域名的方式
- 创建一个tomcat
kubectl create deploy my-tomcat --image=tomcat
- 模拟前端访问后台,使用后台ip地址
root@my-tomcat-b4c9b6565-q2cmz:/usr/local/tomcat# curl 10.96.250.75:8000
- 使用域名
- 由于创建服务的时候没有加名称空间,使用默认的名称空间
default
,也可以负载均衡访问。
- 域名只能在Pod内访问
# 使用服务名.名称空间.svc root@my-tomcat-b4c9b6565-q2cmz:/usr/local/tomcat# curl my-dep.default.svc:8000
2.5 以文件的形式创建Service
apiVersion: apps/v1 kind: Service metadata: name: my-dep labels: app: my-dep # namespace: default spec: selector: app: my-dep ports: - port: 8000 protocol: TCP targetPort: 80
2.6 下线测试
模拟一台宕机(集群进行缩放)
发现数据只会在存活的两台进行打印,同样可以负载均衡。
2.7 上线测试
扩容,也可以达到负载均衡。
3. NodePort模式
- 删除my-dep服务
root@docker01:/home# kubectl delete svc my-dep service "my-dep" deleted
3.1 暴露端口
kubectl expose deploy my-dep --port=8000 --target-port=80 --type=NodePort
3.2 集群IP访问
root@docker01:/home# curl 10.96.53.48:8000
3.3 使用随机端口访问
NodePort范围在30000~32767之间
# 8000:30820/TCP # 外部可以访问http://192.168.92.138:30820/ # docker02:http://192.168.92.139:30820/ # docker03:http://192.168.92.140:30820/ # docker04:http://192.168.92.141:30820/
外部可以访问,使用浏览器访问主机IP:随机端口号。任意主机的IP都可以
4. 补充
4.1查看每个Pod的标签
root@docker01:/home# kubectl get pod --show-labels NAME READY STATUS RESTARTS AGE LABELS my-dep-5b7868d854-99m5h 1/1 Running 1 (18h ago) 18h app=my-dep,pod-template-hash=5b7868d854 my-dep-5b7868d854-gnrrv 1/1 Running 1 (18h ago) 18h app=my-dep,pod-template-hash=5b7868d854 my-dep-5b7868d854-xdrnw 1/1 Running 1 (18h ago) 18h app=my-dep,pod-template-hash=5b7868d854