Linux中怎么用cat命令创建文件并写入数据
284
2022-09-09
K8S之Service详解
文章目录
一、概念
`1.1.Service存在的意义``1.2.三种常用类型`
(1)ClusterIP(集群内部使用)(2)NodePort(对外暴露应用)(3)LoadBalancer(对外暴露应用,适用于公有云)
二、Service代理模式
`2.1.iptables模式``2.2.IPVS模式【推荐使用】`
`2.2.1.修改代理模式为ipvs`
`2.3.Iptables VS IPVS`
三、示例
`3.1.tomcat-service.yaml``3.2.解释``3.3.验证`
`3.3.1.集群内通过ClusterIP+虚端口可以访问服务``3.3.2.集群外通过NodeIP+nodePort端口可以访问Service服务``3.3.3.在Pod里面,建议通过ServiceName.Namespace.svc.cluster.local访问`
参考视频:IP]:[NodePort]作为后端添加进去
二、Service代理模式
通过两种方式实现负载均衡规则,分别是iptables和IPVS
2.1.iptables模式
查看规则 iptables-save |grep web
#NodePort转发规则-A KUBE-NODEPORTS -p tcp -m comment --comment "default/web" -m tcp --dport 30018 -j KUBE-SVC-LOLE4ISW44XBNF3G
iptables-save |grep KUBE-SVC-LOLE4ISW44XBNF3G
#ClusterIP转发规则,10.98.116.150为ClusterIP地址-A KUBE-SERVICES -d 10.98.116.150/32 -p tcp -m comment --comment "default/web cluster IP" -m tcp --dport 80 -j KUBE-SVC-LOLE4ISW44XBNF3G#Port转发规则#0.50000000000表示该条规则被匹配的概率为50%,那么后面一条被匹配的概率为100%-A KUBE-SVC-LOLE4ISW44XBNF3G -m comment --comment "default/web" -m statistic --mode random --probability 0.50000000000 -j KUBE-SEP-WM2JAV2WVEC2WHK4-A KUBE-SVC-LOLE4ISW44XBNF3G -m comment --comment "default/web" -j KUBE-SEP-WT22VOHQFMRGULTR
假设匹配到第一条规则,也即把请求转发给KUBE-SEP-WM2JAV2WVEC2WHK4
iptables-save |grep KUBE-SEP-WM2JAV2WVEC2WHK4
#转发到具体的Pod,10.244.235.234:80-A KUBE-SEP-WM2JAV2WVEC2WHK4 -p tcp -m comment --comment "default/web" -m tcp -j DNAT --to-destination 10.244.235.234:80
实现流程
客户端 ->NodePort/ClusterIP(iptables/Ipvs负载均衡规则) -> 分布在各节点Pod
2.2.IPVS模式【推荐使用】
2.2.1.修改代理模式为ipvs
加载ip_vs相关内核模块
modprobe ip_vsmodprobe ip_vs_rrmodprobe ip_vs_wrrmodprobe ip_vs_sh
设置模式为ipvs
kubectl edit configmaps kube-proxy -nkube-system
kubectl delete pod kube-proxy-9lvgh -nkube-system
ipvsadm -Ln #查看规则
2.3.Iptables VS IPVS
Iptables灵活,功能强大;规则遍历匹配和更新,呈线性时延
IPVS工作在内核态,有更好的性能;调度算法丰富:rr,wrr,lc,wlc,ip hash…
三、示例
3.1.tomcat-service.yaml
apiVersion: v1kind: Servicemetadata: name: tomcat-servicespec: type: NodePort ports: - port: 8080 name: service-port nodePort: 31005 - port: 8005 name: shutdown-port selector: tier: frontend
kubectl apply -f tomcat-service.yaml
3.2.解释
定义了一个名为tomcat-service的Service,服务端口为8080和8005,采用NodePort的方式对外提供服务,拥有“tier=frontend”这个标签的所有Pod示例都属于它。
3.3.验证
kubectl get svc
3.3.1.集群内通过ClusterIP+虚端口可以访问服务
3.3.2.集群外通过NodeIP+nodePort端口可以访问Service服务
kubectl get endpoints
kubectl get svc tomcat-service -o yaml
可以看到Service更详细的信息,如名字、命名空间、clusterIP、虚端口
3.3.3.在Pod里面,建议通过ServiceName.Namespace.svc.cluster.local访问
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~