目录
一.service介绍
Service可以看作是一组提供相同服务的Pod对外的访问接口。借助Service,应
用可以方便地实现服务发现和负载均衡。
service默认只支持4层负载均衡能力,没有7层功能。(可以通过Ingress实现)
service的类型:
ClusterIP:默认值,k8s系统给service自动分配的虚拟IP,只能在集群内部访问。
NodePort:将Service通过指定的Node上的端口暴露给外部,访问任意一个NodeIP:nodePort都将路由到ClusterIP。
LoadBalancer:在 NodePort 的基础上,借助 cloud provider 创建一个外部的负载均衡器,并将请求转发到 :NodePort,此模式只能在云服务器上使用。
ExternalName:将服务通过 DNS CNAME 记录方式转发到指定的域名(通过spec.externlName 设定)
二、IPVS模式
安装服务
yum install -y ipvsadm
lsmod |grep ip_vs
1.更改ipvs模式
更改配置文件的模式为ipvs
kubectl -n kube-system get cm
kubectl -n kube-system edit cm kube-system
修改未生效
ipvsadm -l
2.更新pod
更新kube-proxy pod
kubectl get pod -n kube-system |grep kube-proxy |awk '{system("kubectl delete pod "$1" -n kube-system")}'
再次查看
ipvsadm -ln
修改清单deployment.yaml 的镜像为myapp:v1
执行清单:
kubectl apply -f deployment.yaml
kubectl get pod
查看mysvc的详细信息:
kubectl describe svc mysvc
再次查看,刚才myapp节点生成的IP也出现了!
ipvsadm -ln
测试:访问IP
curl 10.102.253.86
可查看到访问次数
而且ip addr也可以看到这个ip!
三.kube-dns
k8s内内置dns解析服务,用于实现域名访问
kubectl -n kube-system get pod
kubectl -n kube-system get svc
创建并进入交互式pod,使用nslookup 命令查询dns记录,例如可以查看到mysvc的分配ip
kubectl run demo --image=busyboxplus -it --restart=Never
nslookup mysvc.default
可以查看详细信息,看到Endpoints
dns端口为9153
kubectl -n kube-system describe svc kube-dns
查看域名解析pod节点信息如 ip
kubectl