kubernetes in action - Services

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

内容简介:问题,如何将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


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

查看所有标签

猜你喜欢:

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

谁排第一

谁排第一

Amy N. Langville、Carl D. Meyer / 郭斯羽 / 机械工业出版社 / 2014-6 / 49

《谁排第一?关于评价和排序的科学》是首个关于评分和排名科学的著作。它是搜索排序姊妹篇的第二本。本书主要内容有:排名概述、梅西法、科利法、基纳法、埃洛体系、马尔可夫法、攻防评分法、基于重新排序的排名方法、分差、用户偏好评分、处理平局、加入权重、“假如……会怎样”的问题与敏感性、排名聚合、比较排名的方法、数据等。 《谁排第一?关于评价和排序的科学》可作为数学、计算机、网络技术、管理学和数据科学等......一起来看看 《谁排第一》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换