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

  • 时间:
  • 浏览:2

5.1.Service介绍

5.1.1.Serice简介

5.1.1.1有哪些是Service

  service是k8s中的一个重要概念,主本来 提供负载均衡和服务自动发现。

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

将会节点/VM 的 IP 地址位于变化,你时也能处理你这个情况汇报

你这个土办法的最大缺点是每一个用 LoadBalancer 暴露的服务都在有它自己的 IP 地址,每个用到的 LoadBalancer 都时要付费,这将是非常昂贵的。

5.1.1.2.Service的创建

  创建Service的土办法有有五种:

5.5.pod就绪后发出信号

5.5.1.介绍就绪探针

就绪探针有有五种类型:

  3.创建一个Ingress资源。

基于以上原因,我不建议在生产环境上用你这个土办法暴露服务。将会你运行的服务不多求无缘无故可用,将会对成本比较敏感,你可以使用你这个土办法。曾经的应用的最佳例子是 demo 应用,将会某些临时应用。

几时使用你这个土办法?

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

5.3.1.使用nodeport类型的服务

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

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

5.2.2.手动配置服务的endpoint

将会创建pod时不中有 确定器,则k8s将不多创建endpoint资源。曾经就时要创建endpoint来指的服务的对应的endpoint列表。

就绪探针那末准备好处理请求pod才会接收他的请求。

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

5.6.1.创建headless服务

Headless Service也是有五种Service,但不同的是会定义spec:clusterIP: None,也本来 不时要Cluster IP的Service。

  1.每个端口那末是有五种服务

5.4.4.配置Ingress处理TLS传输

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

确保客户端只与正常的pod进行交互,因此 永远不多知道系统严重不足。

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

–port:暴露出去的端口

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

–target-port:容器的端口

–name:创建service指定的名称

  2.通过yaml文件创建

通过如下命令进行查看ingress

将会你我应该 直接暴露服务,这本来 默认土办法。所有通往你指定的端口的流量都在被转发到对应的服务。它那末过滤条件,那末路由等。这原因你几乎可以发送任何种类的流量到该服务,像 HTTP,TCP,UDP,Websocket,gRPC 或其它任意种类。

5.1.1.3.检测服务

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

5.4.1.创建Ingress资源

Ingress 事实上都在有五种服务类型。相反,它位于多个服务的前端,扮演着“智能路由”将会集群入口的角色。

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

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

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

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

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

HTTP探针在httpGet上的配置项:

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

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

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

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

path:探针的路径。

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

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

5.2.3.为实物服务创建别名

除了手动配置来访问实物服务外,还可以使用删改限定域名(FQDN)访问实物服务。

  2.端口范围那末是 300000-32767

第二种:Headless Services还一个多用处(PS:也本来 .我都歌词 都时要的那个实物)。Headless Service的对应的每一个Endpoints,即每一个Pod,都在有对应的DNS域名;曾经Pod之间就可以互相访问。

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

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

双横杠(--)代表kubectl命令项的开始了了,在双横杠上方的内容是指pod实物时要执行的命令。

  

Endpoint资源本来 暴露一个服务的IP地址和端口列表。

你这个土办法有某些缺点:

几时使用你这个土办法?

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

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

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)连接实物服务。

5.4.通过Ingress暴露服务

为有哪些使用Ingress,一个重要的原因是LoadBalancer服务都时要创建自己的负载均衡器,以及独有的公有Ip地址,而Ingress只时要一个公网Ip就能为某些服务提供访问。

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

第有五种:自主确定权,有后来client想自己来决定使用哪个Real Server,可以通过查询DNS来获取Real Server的信息。

编写如下ingress.yml文件

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

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

service中创建endpoint资源,其中一个作用本来 用于service知道包中有 哪些pod。

与存活探针区别:

了解Ingress的工作原理

相关参数解释如下:

顾名思义,Headless Service本来 没头的Service。有有哪些使用场景呢?

将会你我应该 使用同一个 IP 暴露多个服务,有有哪些服务都在使用相同的七层协议(典型如 HTTP),那末Ingress 本来 最有用的。将会你使用本地的 GCP 集成,你只时要为一个负载均衡器付费,且将会 Ingress是“智能”的,你还可以获取各种开箱即用的实物(比如 SSL、认证、路由等等)。

模拟就绪探针

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

加进去去的yml文件如下

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

5.2.连接集群实物的服务

5.2.1.介绍服务endpoint

服务不假如有一天和pod直接相连的,介于.我都歌词 都之间的本来 Endpoint资源。

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

1.Exec探针,执行任务管理器池池的地方。容器的情况汇报由任务管理器池池的退出情况汇报代码确定。

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

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

5.4.2.通过Ingress访问服务

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

  1.通过kubectl expose创建

你可以用 Ingress 来做某些不同的事情,各种不类事 型的 Ingress 控制器都在不同的能力。

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

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

YAML 文件类事 如下:

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

重要性;

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

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

5.3.将服务暴露给实物客户端

有3种土办法在实物访问服务:

  使用kubectl creat来创建serivice