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

  • 时间:
  • 浏览:1
  • 来源:大发彩神8官网—大发彩神8快3

apiVersion: v1

kind: Service

metadata:

name: Service-yaohong

spec:

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

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

port: - port: 400

  服务创建完成后,pod能非要通过external-service.default.svc.cluster.local域名(甚至是external-service)连接结构服务。

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

5.6.1.创建headless服务

Headless Service也是两种Service,但不同的是会定义spec:clusterIP: None,也也不我不前要Cluster IP的Service。

可能节点/VM 的 IP 地址地处变化,你前能够防止这人 情况

通过service查看endpoint土法子如下:

5.3.1.使用nodeport类型的服务

NodePort 服务是引导结构流量到你的服务的最原始土法子。NodePort,正如这人 名字所示,在所有节点(虚拟机)上开放一另另一个多特定端口,任何发送到该端口的流量都被转发到对应服务。

什么然后使用这人 土法子?

5.4.通过Ingress暴露服务

为那先 使用Ingress,一另另一个多重要的原应着是LoadBalancer服务都前要创建当事人的负载均衡器,以及独有的公有Ip地址,而Ingress只前要一另另一个多公网Ip就能为一些服务提供访问。

确保客户端只与正常的pod进行交互,否则永远后该知道系统地处疑问。

3.TCP socket探针,它打开一另另一个多TCP连接到容器的指定端口,可能连接建立,则认为容器可能准备就绪。

通过如下土法子来定义服务使用负载均衡

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

5.2.连接集群结构的服务

5.2.1.介绍服务endpoint

服务并后该 和pod直接相连的,介于一群人之间的也不我Endpoint资源。

顾名思义,Headless Service也不我没头的Service。有那先 使用场景呢?

5.5.pod就绪后发出信号

5.5.1.介绍就绪探针

就绪探针有两种类型:

5.4.1.创建Ingress资源

Ingress 事实上后该 两种服务类型。相反,它地处多个服务的前端,扮演着“智能路由”可能集群入口的角色。

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

5.1.1.3.检测服务

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

第两种:自主选取权,有你还后能 client想当事人来决定使用哪个Real Server,能非要通过查询DNS来获取Real Server的信息。

5.1.Service介绍

5.1.1.Serice简介

5.1.1.1那先 是Service

  service是k8s中的一另另一个多重要概念,主也不我提供负载均衡和服务自动发现。

YAML 文件类似如下:

service中创建endpoint资源,其中一另另一个多作用也不我用于service知道蕴含那先 pod。

重要性;

5.5.2.向pod加进去去就绪探针

加进去去的yml文件如下

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

  1.每个端口非也不我两种服务

  3.创建一另另一个多Ingress资源。

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

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

这人 步说是将服务暴露出去,实际上是在服务前面加一另另一个多负载均衡,可能pod可能分布在不同的结点上。

–port:暴露出去的端口

–type=NodePort:使用结点+端口土法子访问服务

–target-port:容器的端口

–name:创建service指定的名称

  2.通过yaml文件创建

  使用kubectl creat来创建serivice

了解Ingress的工作原理

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

直接查看endpoint信息土法子如下:

就绪探针可能容器未准备就绪,则后该终止可能重启启动。

基于以上原应着,我不建议在生产环境上用这人 土法子暴露服务。可能你运行的服务后该说求突然可用,可能对成本比较敏感,让我使用这人 土法子。从前的应用的最佳例子是 demo 应用,可能一些临时应用。

  1.通过kubectl expose创建

让我用 Ingress 来做一些不同的事情,各种不类似型的 Ingress 控制器后该 不同的能力。

双横杠(--)代表kubectl命令项的结束了了了,在双横杠里面的内容是指pod结构前要执行的命令。

  

5.2.3.为结构服务创建别名

除了手动配置来访问结构服务外,还能非要使用完正限定域名(FQDN)访问结构服务。

这人 土法子有一些缺点:

5.2.2.手动配置服务的endpoint

可能创建pod时不蕴含选取器,则k8s将后该创建endpoint资源。从前就前要创建endpoint来指的服务的对应的endpoint列表。

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

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

path:探针的路径。

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

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

可能某个pod未就绪成功,则会从该服务中删除该pod,可能pod再次就绪成功,则从新加进去去pod。

Endpoint资源也不我暴露一另另一个多服务的IP地址和端口列表。

  2.端口范围非也不我 40000-32767

5.4.4.配置Ingress防止TLS传输

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

1.Exec探针,执行系统守护进程的地方。容器的情况由系统守护进程的退出情况代码选取。

与存活探针区别:

就绪探针非要准备好防止请求pod才会接收他的请求。

模拟就绪探针

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

第二种:Headless Services还一另另一个多多用处(PS:也也不我一群人前要的那个特性)。Headless Service的对应的每一另另一个多Endpoints,即每一另另一个多Pod,后该 有对应的DNS域名;从前Pod之间就能非要互相访问。

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

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

什么然后使用这人 土法子?

5.1.1.2.Service的创建

  创建Service的土法子有两种:

可能你你还后能 直接暴露服务,这也不我默认土法子。所有通往你指定的端口的流量后该 被转发到对应的服务。它非要 过滤条件,非要 路由等。这原应着分析你几乎能非要发送任何种类的流量到该服务,像 HTTP,TCP,UDP,Websocket,gRPC 或其它任意种类。

相关参数解释如下:

这人 土法子的最大缺点是每一另另一个多用 LoadBalancer 暴露的服务后该 有它当事人的 IP 地址,每个用到的 LoadBalancer 都前要付费,这将是非常昂贵的。

5.4.2.通过Ingress访问服务

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

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

LoadBalancer 服务是暴露服务到 internet 的标准土法子。在 GKE 上,这人 土法子会启动一另另一个多 Network Load Balancer[2],它将让我一另另一个多单独的 IP 地址,转发所有流量到你的服务。

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

通过如下命令进行查看ingress

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

5.3.将服务暴露给结构客户端

有3种土法子在结构访问服务:

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

编写如下ingress.yml文件

可能你你还后能 使用同一另另一个多 IP 暴露多个服务,那先 服务后该 使用相同的七层协议(典型如 HTTP),非要 Ingress 也不我最有用的。可能你使用本地的 GCP 集成,你只前要为一另另一个多负载均衡器付费,且可能 Ingress是“智能”的,你还能非要获取各种开箱即用的特性(比如 SSL、认证、路由等等)。

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

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

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

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

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

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

HTTP探针在httpGet上的配置项: