kubernetes in action - Services

栏目: 编程工具 · 发布时间: 7年前

内容简介:问题,如何将Pod所提供的功能提供给别人用?微服务,是服务,所以关键要把服务提供出去直接把pod的静态ip提供给用户用,这个会有很多问题,比如failover,扩容,负载均衡等所以需要services组件

问题,如何将Pod所提供的功能提供给别人用?微服务,是服务,所以关键要把服务提供出去

直接把pod的静态ip提供给用户用,这个会有很多问题,比如failover,扩容,负载均衡等

所以需要services组件

A Kubernetes Service is a resource you create to make a single, constant point of entry to a group of pods providing the same service.

Each service has an IP address and port that never change while the service exists

应用中service也可以分层,frontend和backend

kubernetes in action - Services

sevices和pods之间的关联,也是通过label selector,

这里还有个endpoint的概念,service是通过endpoint来访问pod

如果你用label selector来选择pods,会自动为所有pods创建endpoints

kubernetes in action - Services kubernetes in action - Services

kubernetes in action - Services

这里还可以不按照Selector选择pods,你可以手工指定service所管理的endpoints,这里就不详细写了

查看你创建的services,

kubernetes in action - Services

可以看到这里只有 Cluster-IP ,可以在集群内部访问

并没有external-ip,所以无法从集群外访问,

那我只能在集群内部试试这个服务是否ready,利用kubectel exec可以远程在pod上执行命令

$ kubectl exec kubia-7nog1 -- curl -s http://10.111.249.153

You’ve hit kubia-gzwli

过程如下,

kubernetes in action - Services

那么对于某个Pod,我们需要怎么知道他的sevice IP?

有多个方法,

首先可以通过查看环境变量,

kubernetes in action - Services

或者通过DNS,kube-dns组件

kubernetes in action - Services

最终服务还是要提供给外部的client的,如何做?

NodePort

一种方式是提供NodePort service,直观的说,就是在Kubernetes Node上打个洞,提供个port给外部使用

kubernetes in action - Services

这个时候去看,

$ kubectl get svc kubia-nodeport

NAME             CLUSTER-IP  EXTERNAL-IP PORT(S)   AGE

kubia-nodeport 10.111.254.223 <nodes> 80:30123/TCP 2m

可以看到,External-IP变成nodes,说明你可以用任意的node ip来访问,

kubernetes in action - Services

Load Balancer

或者使用一个外部的load balancer,

kubernetes in action - Services

和NodePort不同在于,loadbalancer会有一个明确的external-ip

$ kubectl get svc kubia-loadbalancer

NAME               CLUSTER-IP     EXTERNAL-IP    PORT(S)      AGE

kubia-loadbalancer 10.111.241.153 130.211.53.173 80:32143/TCP 1m

kubernetes in action - Services

Ingress

load balancer,对于每个service都需要创建一个

ingress可以同时作为多个service的出口

kubernetes in action - Services

创建ingress

kubernetes in action - Services

定义访问ingress的域名,后面可以把不同的path指向不同的service

对于service管理那么多的pods,那么如何判断这些pods可以提供服务?

之前有一个liveness probes,这个可以用吗?语义上有些问题,pods活着并不代表他可以提供服务,比如还在初始化

所以这里提供一个新的probes,readiness probe


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Design for Hackers

Design for Hackers

David Kadavy / Wiley / 2011-10-18 / USD 39.99

Discover the techniques behind beautiful design?by deconstructing designs to understand them The term ?hacker? has been redefined to consist of anyone who has an insatiable curiosity as to how thin......一起来看看 《Design for Hackers》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具