kubernetes之service

一、了解service

 
• Service可以看作是一组提供相同服务的Pod对外的访问接口。借助Service,应用可以方便地实现服务发现和负载均衡。
 
• service默认只支持4层负载均衡能力,没有7层功能。(可以通过Ingress实现)
 
• service的类型:
 
• ClusterIP:默认值,k8s系统给service自动分配的虚拟IP,只能在集群内部访问。
• NodePort:将Service通过指定的Node上的端口暴露给外部,访问任意一个
NodeIP:nodePort都将路由到ClusterIP。
• LoadBalancer:在 NodePort 的基础上,借助 cloud provider 创建一个外部的负载均
衡器,并将请求转发到 <NodeIP>:NodePort,此模式只能在云服务器上使用。
• ExternalName:将服务通过 DNS CNAME 记录方式转发到指定的域名(通过
spec.externlName 设定)。
 
 

2. Service的三种工作方式:

第一种: 是Userspace方式
  如下图描述, Client Pod要访问Server Pod时,它先将请求发给本机内核空间中的service规则,由它再将请求,
  转给监听在指定套接字上的kube-proxy,kube-proxy处理完请求,并分发请求到指定Server Pod后,再将请求
  递交给内核空间中的service,由service将请求转给指定的Server Pod。
  由于其需要来回在用户空间和内核空间交互通信,因此效率很差,接着就有了第二种方式.
 第二种: iptables模型
  此工作方式是直接由内核中的iptables规则,接受Client Pod的请求,并处理完成后,直接转发给指定ServerPod.
 第三种: ipvs模型
  它是直接有内核中的ipvs规则来接受Client Pod请求,并处理该请求,再有内核封包后,直接发给指定的Server Pod。
 

以上不论哪种,kube-proxy都通过watch的方式监控着kube-APIServer写入etcd中关于Pod的最新状态信息,
  它一旦检查到一个Pod资源被删除了 或 新建,它将立即将这些变化,反应再iptables 或 ipvs规则中,以便
  iptables和ipvs在调度Clinet Pod请求到Server Pod时,不会出现Server Pod不存在的情况。

 

自k8s1.1以后,service默认使用ipvs规则,若ipvs没有被激活,则降级使用iptables规则. 但在1.1以前,service使用的模式默认为userspace.

 

IPVS模式的service(ClusterIP

 
 

4f585d4784384dbea5ccc5c8f0860bf0.png

 

master主机上安装

dc6115e8b08a40c38f48b07754edb3f6.png

 修改 ipvs模式

4e8669a7b05e49d3a44ae425d227fee0.png

 

8961e9704c024fbfbc718bb21f27e73d.png

 

使其生效

72a3ab781f5f4929aa7d47f7f17b0b14.png

 

我们输入ip addr 发现多一个接口

3c153418c78d4ea2a0469f2368c94a3f.png

 

2e60658d0d2d4dd997b024036550b347.png

 

Headless Service 无头服务(ClusterIP)

 

1e133e58d05f462f983209e5363e1e74.png

 

13c7599242c54f65a661e7e508f29c49.png

 

 

我们有没有考虑一个问题  一个端口对应一个服务 万一不够分怎么办  以下方法可以解决

nodeport 范围是30000————32767

我们把nodeport修改为33333   我们运行会有什么情况?

我们根据下图发现如果范围超过根本就运行不了

a2056ae0f32a48acab2a953bb6a36b0b.png

 

 

修改文件把范围变大

8f4452bd499b42d9abd1b1abfcc5af21.png

 

e4833936ad274de6a0cfa9058de364b2.png

 

再次启动svc2.yaml  发现启动成功 端口33333

9c69a22e38474c9abc9d72f8ffac2213.png

 

 

 

从外部暴露(LoadBalancer)

 

c337b0e24b724f23b30c5ae74d8873ee.png

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值