k8s-service 7

2023-12-13 03:49:31

由控制器来完成集群的工作负载,service(微服务)是将工作负载的应用暴露出去,从而解决访问问题

作用:无论是在集群内还是集群外,都可以访问pod上的应用,其实现对集群内的应用pod自动发现和负载均衡

service默认支持四层负载均衡,七层需要inggress来支持

通信必须要有proxy,如果是跨节点网络通信还需要flannel节点,然后再结合每个节点上的iptables,从而实现负载均衡

默认类型为ClusterIP,不指定的话就默认为ClusterIP

默认使用iptables,调度iptables算法是随机的,推荐使用lvs

IPVS模式

kube-proxy 通过 iptables 处理 Service 的过程,需要在宿主机上设置相当多的 iptables 规则,如果宿主机有大量的Pod,不断刷新iptables规则,会消耗大量的CPU 资源;

IPVS模式的service,可以使K8s集群支持更多量级的Pod。

lvs内核调度,算法更强大,性能更好,可以减少在刷iptables所带来的cpu消耗

修改proxy配置

? ?

重启pod,删除重建

在切换成ipvs模式后,kube-proxy会自动在宿主机上添加一个虚拟网卡,并给其分配serviceIP


Nodeport

nodeport在集群节点上绑定端口,每个端口对应一个服务


Headless(无头服务)

headless模式不需要分配VIP

该类型也是以一中特殊的clusterIP类型,clusterIP仅限于集群内进行访问

headless通过svc名称访问,由集群内dns提供解析

集群内直接使用service名称进行访问

该模式访问仅限于在集群内


LoadBalancer(从外部访问的第二种方式)

默认无法分配外部访问ip

loadBlabcer -> nodeport -> clusterip -> pod

LoadBalancer模式适用于云平台,裸金属环境需要安装metallb提供支持

官网:https://metallb.universe.tf/installation/

下载部署文件

在harbor仓库中新建一个metallb项目,并将镜像拉取在上面

拉取完成后,修改文件中的镜像地址,与刚拉取的harbor仓库保持一致

给镜像打上标签,并且上传到harbor仓库

部署服务

配置分配地址段

文章来源:https://blog.csdn.net/m0_65366762/article/details/134807837
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。