中暑虚脱

注册

 

发新话题 回复该主题

关于Kubernetes中Servic [复制链接]

1#
写在前面

学习K8s中Service遇到,单独整理分享给小伙伴

博文内容涉及:

Metallb的创建

LoadBalancer类型的Service的负载Demo

有些人心如花木,皆向阳而生——烽火戏诸侯《剑来》

Service负载均衡问题

NodePort还没有完全解决外部访问Service的所有问题,比如负载均衡问题,假如我们的集群中有10个Node,则此时最好有一个负载均衡器,外部的请求只需访问此负载均衡器的IP地址,由负载均衡器负责转发流量到后面某个Node的NodePort上。如图

NodePort的负载均衡LoadBalancer方式

Loadbalancer组件独立于Kubernetes集群之外,通常是一个硬件的负载均衡器,或者是以软件方式实现的,例如HAProxy或者Nginx。对于每个Service,我们通常需要配置一个对应的Loadbalancer实例来转发流量到后端的Node上

Kubernetes提供了自动化的解决方案,如果我们的集群运行在谷歌的GCE公有云上,那么只要我们把Service的type-NodePort改为type-LoadBalancer,此时Kubernetes会自动创建一个对应的Loadbalancer实例并返回它的IP地址供外部客户端使用。在没有公有云的情况下,我们也可以用一些插件来实现,如metallb等

LoadBalancer需要建立服务之外的负载池。然后给Service分配一个IP。

我们直接创建一个LoadBalancer的Service的时候,会一直处于pending状态,是因为我们没有对应的云负载均衡器

┌──[root

vms81.liruilongs.github.io]-[~/ansible/k8s-svc-create]└─$kubectlexpose--name=blogsvcpodblog--port=80--type=LoadBalancerservice/blogsvcexposed┌──[root

vms81.liruilongs.github.io]-[~/ansible/k8s-svc-create]└─$kubectlgetsvc-owide

grepblogsvcblogsvcLoadBalancer10..28.pending80:/TCP26srun=blog┌──[root

vms81.liruilongs.github.io]-[~/ansible/k8s-svc-create]└─$Metallb创建

Metallb可以通过k8s原生的方式提供LB类型的Service支持

使用:metallb
分享 转发
TOP
发新话题 回复该主题