赞
踩
要了解服务暴露,首先需要先知道什么是service,service可以看作是一组提供相同的pod对外的访问接口,借助service可以实现服务发现和负载均衡。服务暴露就是通过clusterIP或nodeport或loadbalancer等方式将pod内部的流量数据可以供外部访问的一种方式
service常见的类型有下面四种:
* Cluster IP : 默认值,是k8s系统给service自动分配的虚拟IP,只能在集群内部访问。
* NodePort: 将Service通过指定的Node上的端口暴露给外部,访问任意一个NodeIP:NodePort都将路由到Cluster IP
* LoadBlancer: 与NodePort类似,在每个节点上启动一个端口暴露服务。除此之外,kubernetes会请求底层云平台(如阿里云,腾讯云,AWS等)上的负载均衡器,将每个Node(NodeIP:NodePort)作为后端添加进去
* ExternalName: 将服务通过DNS Cname记录方式转发到指定的域名(通过spec.externlname设定)
Service是由kube-proxy组件,加上iptables来共同实现的
kube-proxy通过iptable处理service的过程,需要在宿主机上设置相当多的iptables规则,如果宿主机有大量的Pod在不断的刷新iptables规则,会不断的消耗CPU资源。
IPVS模式的service,可以使k8s集群支持更多量级的pod。
开启kube-proxy的ipvs模式方法:
* # yum -y install ipvasdm # 所有节点都安装
* # kubectl edit cm kube-proxy -n kube-system # 修改ipvs的模式为ipvs
mode:“ipvs”
* # kubectl get pod -n kube-system |grep kube-proxy |awk ‘{system(“kubectl delete pod “$1” -n kube-system”)}’
更新kube-proxy的pod
Ingress公开了从集群外部到集群内部服务的HTTP和HTTP路由的规则集合,而具体实现流量路由则是由Ingress Controller负责。
Ingress:是k8s中的一个抽象资源,给管理员提供一个暴露应用的入口定义方法
Ingress Controller:根据Ingress生成具体的路由规则,并对Pod负载均衡器
使用流程是:1、部署INgress Crontroller 2、创建Ingress规则
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。