使用Kubernetes业务流程从部署的微服务访问微服务端点

问题描述 投票:1回答:1

我正在尝试在具有2个节点的Kubernetes集群中部署我的示例微服务Docker镜像。我探讨了有关Pods,Services,Deployment,StatefulSets和Daemon-sets等的所有内容。

我正在尝试为此创建示例部署和服务。在这里,我探讨了部署如何提供可伸缩性和负载平衡功能。并通过提供Services ClusterIp探索服务发现。

我有两个问题:

我的情况是我正在尝试在我的内部部署Ubuntu机器上部署微服务。本机的IP地址为192.168.1.15。当我指的是Kubernetes时,服务也会有一个clusterIP。

  1. 如果我的微服务终点是/api/v1/loadCustomer,我怎么称呼这个终点?我是否还需要使用clusterIP?我可以简单地拨打192.168.1.15:8080/api/v1/loadCustomers吗?
  2. 当我调用终点时,clusterIP的作用是什么?我可以直接使用端口吗?

我指的是以下探索链接:

https://kubernetes.io/docs/concepts/services-networking/connect-applications-service/

kubernetes
1个回答
1
投票

tldr:

您无法从群集外部使用clusterIP访问应用程序。您可以使用loadbalancer的IP(type=LoadBalaner)或Node的IP(type=NodePort)访问应用程序。

clusterIP的好处:如您所知,pod可以在其生命周期中创建和终止,从而创建和终止IP(端点IP)地址。因此,clusterIP是静态的,不依赖于pod的生命周期。

答案很长

在Kubernetes集群中,应用程序或pod具有以下抽象。

端点IP和端口:它由CNI插件提供,如法兰绒,印花布。

  • 每个pod都有一个IP和tragetPort,它是独一无二的。

您可以通过以下命令列出并观察端点。

kubectl get endpoints --all-namespaces 

clusterIP和port:由kube-proxy组件提供。

  • 复制的pod共享一个clusterIP和Port。
  • 请求到复制的pod的负载平衡。
  • 内部暴露,以便其他pod可以发现它

您可以使用以下命令列出并查看clusterIP和端口

kubectl get services --all-namespaces 

externalIP和port:它可以是3-4层负载均衡器的IP和端口或节点的IP和Nodeport。

如果要使用loadbalancer的IP和端口,可以在服务文件中使用type=LoadBalaner

如果要使用节点的IP,则需要在服务文件中使用type=NodePort

© www.soinside.com 2019 - 2024. All rights reserved.