一、Service简介
利用Deployment来创建一组Pod来提供具有高可用性的服务,每个Pod都会分配一个单独的Pod IP,却存在以下两个问题:
-
Pod IP 会随着Pod的重建产生变化
-
Pod IP 仅仅是集群内可见的虚拟IP,外部无法访问
对于访问这个服务带来了难度。kubernetes设计了Service来解决这个问题。
Service可以看作是一组同类Pod对外的访问接口。借助Service,应用可以方便地实现服务发现和负载均衡。
二、Service配置
(1)命令式对象管理
# 创建集群内部可访问的Service
kubectl expose deploy tomcat --name=svc-tomcat1 --type=ClusterIP --port=80 --target-port=8080 -n mk
# 查看service
kubectl get svc svc-tomcat1 -n dev -o wide
# 这里产生了一个CLUSTER-IP,这就是service的IP,在Service的生命周期中,这个地址是不会变动的# 创建集群外部也可访问的Service
# 修改type为NodePort
kubectl expose deploy tomcat --name=svc-tomcat2 --type=NodePort --port=80 --target-port=8080 -n mk# 删除Service
kubectl delete svc svc-tomcat1 -n mk
(2)命令式对象配置
创建一个svc-tomcat.yaml,内容如下:
apiVersion: v1
kind: Service
metadata:name: svc-tomcatnamespace: dev
spec:clusterIP: 172.21.12.34 #固定svc的内网ipports:- port: 80protocol: TCPtargetPort: 8080selector:name: tomcattype: ClusterIP
然后就可以执行对应的创建和删除命令了:
创建:kubectl create -f svc-tomcat.yaml
删除:kubectl delete -f svc-tomcat.yaml