服务的设计与运行

2022-10-24  本文已影响0人  robot_test_boy

pod部署后还不能对外提供服务,怎样才能访问?

在Kubernetes中,服务定义了一组pod,并提供了一种访问这些pod的方法以供集群内外的其他应用所使用。

运行一个包含3个market-data pod的复制集,market-data pod有标签app:market-data和tier:backend。这很重要,因为服务根据pod标签把它们合成一组的。

要创建一个服务,还需要另一个YAML文件,称之为market-data-service.yml。

---

apiVersion: v1

kind: Service

metadata:

  name: market-data

spec:

  type: NodePort

selector:        ---定义服务要访问哪些pod

  app: market-data

  tier: backend

ports:

  - protocol: TCP

    port: 8000    ---服务会路由到指定pod的这个端口

    nodePort: 30623    --- 这个服务会开放集群指定的端口,没有这一行的话,会随机分配一个30000~32767之间的端口

使用$kubectl apply –f命令来应用这一配置。它会创建一个通过集群的30623端口来访问的服务,这个服务会将请求路由到market-data pod的8000端口。

使用curl工具访问服务并将请求发送到pod。服务将返回处理该请求的pod名称:

$ curl http://`minikube ip`:30623/ping  --- `minikube ip` 命令返回本地集群的IP地址

Kubernetes中的服务类型有三类:

使用NodePort类型将服务映射到集群的外部可用端口上,但是如果只有其他集群服务会访问这个微服务,那么使用ClusterIP来保持对集群的本地访问通常更合理。

服务监控集群的事件并在pod组发生变化后动态更新。如果开发者终止了一个pod,则它会被从该组中移除,而服务会将请求路由到复制集新创建的pod上。

摘取自 摩根·布鲁斯和保罗·A.佩雷拉的《微服务实战》

上一篇 下一篇

猜你喜欢

热点阅读