文章目录
1.什么是service

2.service的类型
2.1 clusterip类型


运行一个pod2使其可以访问:

2.2 NodePort类型的service
更改其service类型:


发现类型已更改:

发现server3和server4上分别开启了31069的端口:


测试:

2.3.更改iptables规则的方式为ipvsadm

所有节点安装ipvsadm:



发现生成了好多ip_vs的规则:

修改IPVS模式:


更新kube-proxy pod:
为了更新可以将其删除再重新生成即可:


IPVS模式下,kube-proxy会在service创建后,在宿主机上添加一个虚拟网卡: kube-ipvs0,并分配service IP:
ip addr查看:

kube-proxy通过linux的IPVS模块,以rr轮询方式调度service中的Pod:

可以直接访问:

发现访问几次论调就发生几次:


若增加副本则策略也会随之增加:




这样可以直接访问域名,防止删除以后解析不到ip:


虽然删除后ip变了但是域名不变可以继续访问:

2.4.Headless Service “无头服务”
• Headless Service不需要分配一个VIP,而是直接以DNS记录的方式解析出被代理Pod 的IP地址。
• 域名格式:$(servicename).$(namespace).svc.cluster.local


虽然没有ip依然可以通过域名访问:


Pod滚动更新后,依然可以解析:


四个地址:

3. 外部访问service
从外部访问 Service 的第二种方式,适用于公有云上的 Kubernetes 服务。
这时 候,你可以指定一个 LoadBalancer 类型的 Service。 在service提交后,Kubernetes就会调用 CloudProvider 在公有云上为你创建
一个负载均衡服务,并且把被代理的 Pod 的 IP地址配置给负载均衡服务做 后端 LoadBalancer 类型的 Service
3.1 LoadBalancer 类型的 Service


3.2 ExternalName类型的服务器
保证虚拟机正常上网
• 从外部访问的第三种方式叫做ExternalName。

发现只是多了一个别名,依然可以访问域名:


3.3 分配公有ip的service



可以直接访问:

本文详细介绍了Kubernetes中的Service,包括ClusterIP、NodePort、Headless Service和LoadBalancer等类型,以及如何通过ipvsadm更改iptables规则。重点讲解了如何使Service能够从外部访问,如通过LoadBalancer类型分配公有IP或使用ExternalName实现域名映射。
565

被折叠的 条评论
为什么被折叠?



