kubernetes Service:让客户端发现pod并与之通信

  • 时间:
  • 浏览:1

通过如下措施来定义服务使用负载均衡

YAML 文件类式如下:

你你是什么措施的最大缺点是每有有二个 用 LoadBalancer 暴露的服务都是有它自己的 IP 地址,每个用到的 LoadBalancer 都前要付费,这将是非常昂贵的。

将会某个pod未就绪成功,则会从该服务中删除该pod,将会pod再次就绪成功,则从新加带pod。

启动容器时,k8s设置了有有二个 等待歌曲时间,等待歌曲时间后才会执行一次准备就绪检查。以前就会周期性的进行调用探针,并根据就绪探针的结果采取行动。

5.3.将服务暴露给内外部客户端

有3种措施在内外部访问服务:

5.4.4.配置Ingress处置TLS传输

客户端和控制器之间的通信是加密的,而控制器和后端pod之间的通信则都是。

  1.每个端口什么什么都越来越是你是什么服务

就绪探针将会容器未准备就绪,则不多再终止将会重启启动。

service中创建endpoint资源,其包暗含二个 作用可是我用于service知道暗含什么pod。

你你是什么步说是将服务暴露出去,实际上是在服务前面加有有二个 负载均衡,将会pod将会分布在不同的结点上。

–port:暴露出去的端口

–type=NodePort:使用结点+端口措施访问服务

–target-port:容器的端口

–name:创建service指定的名称

  2.通过yaml文件创建

5.3.1.使用nodeport类型的服务

NodePort 服务是引导内外部流量到你的服务的最原始措施。NodePort,正如你你是什么名字所示,在所有节点(虚拟机)上开放有有二个 特定端口,任何发送到该端口的流量都被转发到对应服务。

5.5.2.向pod加带就绪探针

加带的yml文件如下

Endpoint资源可是我暴露有有二个 服务的IP地址和端口列表。

将会节点/VM 的 IP 地址发生变化,你前不多再 处置你你是什么情况

通过如下命令进行查看ingress

2.将不同的服务映射到不同的主机上

好久使用你你是什么措施?

5.4.1.创建Ingress资源

Ingress 事实上都是你是什么服务类型。相反,它发生多个服务的前端,扮演着“智能路由”将会集群入口的角色。

  1.将服务的类型设置成NodePort;

Ingress 将会是暴露服务的最强大措施,但同去也是最冗杂的。Ingress 控制器有各种类型,包括 Google Cloud Load Balancer, Nginx,Contour,Istio,等等。它还有各种插件,比如 cert-manager[5],它可不里能为你的服务自动提供 SSL 证书。

5.1.1.4.在运行的容器中远程执行命令

  使用kubectl exec 命令来远程执行容器中命令

模拟就绪探针

2.HTTP GET探针,向容器发送HTTP GET请求,通过响应http情况码判断容器与非 准备好。

5.2.3.为内外部服务创建别名

除了手动配置来访问内外部服务外,还可不里能使用完整性限定域名(FQDN)访问内外部服务。

5.5.pod就绪后发出信号

5.5.1.介绍就绪探针

就绪探针有你是什么类型:

5.1.1.2.Service的创建

  创建Service的措施有你是什么:

5.4.通过Ingress暴露服务

为何使用Ingress,有有二个 重要的原困着是LoadBalancer服务都前要创建自己的负载均衡器,以及独有的公有Ip地址,而Ingress只前要有有二个 公网Ip就能为许多服务提供访问。

5.3.2.通过Loadbalance将服务暴露出来

LoadBalancer 服务是暴露服务到 internet 的标准措施。在 GKE 上,你你是什么措施会启动有有二个 Network Load Balancer[2],它将让你有有二个 单独的 IP 地址,转发所有流量到你的服务。

与存活探针区别:

就绪探针什么什么都越来越准备好处置请求pod才会接收他的请求。

双横杠(--)代表kubectl命令项的现在现在刚开始,在双横杠上方的内容是指pod内内外部前要执行的命令。

  

  1.通过kubectl expose创建

直接查看endpoint信息措施如下:

确保客户端只与正常的pod进行交互,为何让永远不多再知道系统发生问题。

第二种:Headless Services还有有有二个 用处(PS:也可是我你们都前要的那个型态)。Headless Service的对应的每有有二个 Endpoints,即每有有二个 Pod,都是有对应的DNS域名;以前Pod之间就可不里能互相访问。

编写如下ingress.yml文件

  2.端口范围什么什么都越来越是 300000-32767

apiVersion: v1

kind: Service

metadata:

name: Service-yaohong

spec:

type: ExternalName //代码的type被设置成了ExternalName

externalName: someapi.somecompany.com // 实际服务的完整性限定域名(FQDN)

port: - port: 3000

  服务创建完成后,pod可不里能通过external-service.default.svc.cluster.local域名(甚至是external-service)连接内外部服务。

host:主机名,默认为pod的IP。

scheme:用于连接主机的方案(HTTP或HTTPS)。默认为HTTP。

path:探针的路径。

httpHeaders:在HTTP请求中设置的自定义标头。 HTTP允许重复的请求头。

port:端口的名称或编号。数字前要在1到65535的范围内

将会你让你使用同有有二个 IP 暴露多个服务,什么服务都是使用相同的七层协议(典型如 HTTP),什么什么都越来越Ingress 可是我最有用的。将会你使用本地的 GCP 集成,你只前要为有有二个 负载均衡器付费,且将会 Ingress是“智能”的,你还可不里能获取各种开箱即用的型态(比如 SSL、认证、路由等等)。

你你是什么措施有许多缺点:

顾名思义,Headless Service可是我没头的Service。有什么使用场景呢?

基于以上原困着,我不建议在生产环境上用你你是什么措施暴露服务。将会你运行的服务不须求突然可用,将会对成本比较敏感,让你使用你你是什么措施。以前的应用的最佳例子是 demo 应用,将会许多临时应用。

将会你让你直接暴露服务,这可是我默认措施。所有通往你指定的端口的流量都是被转发到对应的服务。它什么什么都越来越过滤条件,什么什么都越来越路由等。这原困着着你几乎可不里能发送任何种类的流量到该服务,像 HTTP,TCP,UDP,Websocket,gRPC 或其它任意种类。

  Service 是由 kube-proxy 组件,加带 iptables 来同去实现的。

5.2.连接集群内外部的服务

5.2.1.介绍服务endpoint

服务并都是和pod直接相连的,介于你们都之间的可是我Endpoint资源。

  使用kubectl creat来创建serivice

  2.将服务的类型设置成LoadBalance;

1.Exec探针,执行任务管理器运行运行的地方。容器的情况由任务管理器运行运行的退出情况代码选择。

让你用 Ingress 来做许多不同的事情,各种不类式型的 Ingress 控制器都是不同的能力。

5.2.2.手动配置服务的endpoint

将会创建pod时不暗含选择器,则k8s将不多再创建endpoint资源。以前就前要创建endpoint来指的服务的对应的endpoint列表。

5.4.2.通过Ingress访问服务

通过kubectl get ing命令进行查看ingress

5.1.Service介绍

5.1.1.Serice简介

5.1.1.1什么是Service

  service是k8s中的有有二个 重要概念,主可是我提供负载均衡和服务自动发现。

了解Ingress的工作原理

第你是什么:自主选择权,有以前client想自己来决定使用哪个Real Server,可不里能通过查询DNS来获取Real Server的信息。

通过service查看endpoint措施如下:

  创建有有二个 名为hostnames-yaohong的服务,将在端口3000接收请求并将链接路由到具有标签选择器是app=hostnames的pod的9376端口上。

  3.创建有有二个 Ingress资源。

5.6.使用headless服务发现独立的pod

5.6.1.创建headless服务

Headless Service也是你是什么Service,但不同的是会定义spec:clusterIP: None,也可是我不前要Cluster IP的Service。

存活探针通过杀死异常容器,并用新的正常的容器来替代他保证pod正常工作。

initialDelaySeconds:容器启动和探针启动之间的秒数。

periodSeconds:检查的频率(以秒为单位)。默认为10秒。最小值为1。

timeoutSeconds:检查超时的秒数。默认为1秒。最小值为1。

successThreshold:失败后检查成功的最小连续成功次数。默认为1.活跃度前要为1。最小值为1。

failureThreshold:当Pod成功启动且检查失败时,Kubernetes将在放弃以前尝试failureThreshold次。放弃生存检查原困着着重新启动Pod。而放弃就绪检查,Pod将被标记为未就绪。默认为3.最小值为1。

HTTP探针在httpGet上的配置项:

好久使用你你是什么措施?

重要性;

5.4.3.通过相同的Ingress暴露几条服务

1.将不同的服务映射到相同的主机不同的路径

相关参数解释如下:

3.TCP socket探针,它打开有有二个 TCP连接到容器的指定端口,将会连接建立,则认为容器将会准备就绪。

5.1.1.3.检测服务

  使用如下命令来检查服务: