service工作原理与手动配置endpoint资源

1.service

由RS和RC托管的pod,随时都会因为各类原因而死亡,或是因为物理节点宕机,或是因为pod中进程异常终止。为了保证集群中总是存在replica count个pod,RS和RC就会创建新的pod,而新的pod的ip地址不会与旧pod的ip地址一模一样。这样的行为,使得pod的ip地址总是在不停变化的。因此希望有一个组件能够对外提供一个固定单一的ip和端口地址,然后所有想要访问pod的链接,都由这个拥有固定单一ip地址的组件重定向至集群中的pod。这个组件就是service。

1.1 service 中的selector

//创建一个service的yaml文件片段
ports:
-port:80
 targetPort:8080
selector:
	app:kubia

这个service将在端口80上面监听,并请求转发到标签名为app=kubia的pod的8080端口上。换句话说,想要访问标签名为app=kubia的pod,就可以通过直接访问这个service的ip地址。这个service将会将链接请求重定向至标签名为app=kubia的pod。

Q:若在创建pod之后,再创建service,pod如何获取service的ip地址?
A:pod能够自动的通过环境变量来获取service的ip地址,不过在这之前,应该删除掉旧的pod,然后由RC和RS自动创建出来新的pod将会自动的知道service的ip地址。
BTW:service的ip是虚拟ip地址,无法使用ping命令ping通。

1.2 selector与endpoint

在上文中提到了service的作用-----对外提供统一固定的ip地址,并将请求重定向至集群中的pod。其中“将请求重定向至集群中的pod”就是通过endpoint与selector协同工作实现。selector是用于选择pod,由selector选择出来的pod的ip地址和端口号,将会被记录在endpoint中。endpoint便记录了所有pod的ip地址和端口号。当一个请求访问到service的ip地址时,就会从endpoint中选择出一个ip地址和端口号,然后将请求重定向至pod中。

//使用命令kubectl describe svc kubia 的部分返回
Endpoints:10.108.1.4:8080,10.108.2.5:8080 ......//所有pod的ip地址和端口号。

endpoint也可以手动自己配置,可以通过yaml文件生成endpoint资源。

//一个endpoint的yaml文件
-addresses
 -ip:xx.x.x.x
 -ip:xx.x.x.x

Q:为什么要将endpoint单独剥离出来,并可以手动创建它?
A:这样可以人为地将所有访问服务的链接请求,重新定向至自己希望的ip地址,这个ip地址可以是由第三方软件公司所i共的服务。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值