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

时间:2018-04-24 10:28:36

标签: kubernetes

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

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

我有两个问题:

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

  1. 如果我的微服务终点是 FragmentTransaction fragmentTransaction = getSupportFragmentManager() .beginTransaction(); Fragment profileFragment = new InfoFragment();//the fragment you want to show profileFragment.setArguments(bundle); fragmentTransaction .replace(R.id.content_frame, profileFragment);//R.id.content_frame is the layout you want to replace fragmentTransaction.addToBackStack(null); fragmentTransaction.commit(); ,我怎么称呼这个终点?我是否还需要使用clusterIP?我可以简单地拨打192.168.1.15:8080/api/v1/loadCustomers吗?

  2. 当我调用终点时,clusterIP的作用是什么?我可以直接使用端口吗?

  3. 我指的是以下探索链接:

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

1 个答案:

答案 0 :(得分:1)

<强> tldr:

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

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

长答案

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

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

  • 每个pod都有一个IP和tragetPort,它是 UNIQUE

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

kubectl get endpoints --all-namespaces 

clusterIP和端口:它由 kube-proxy 组件提供。

  • 复制的pod共享一个clusterIP和端口。

  • 将请求负载平衡到复制的pod。

  • 在内部公开,以便其他pod可以发现它

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

kubectl get services --all-namespaces 

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

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

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