一个 Kubernetes Pod 如何服务多个用户?

How Can One Kubernetes Pod Serve Multiple Users?

我和我的同事有一个问题,一个 Kubernetes Pod 如何服务多个用户。我们相信 is/was 一个 Pod 服务于一个最终用户。这是我们的实验。

我们有一个基本的 Angular 前端与 .Net API 服务器通信,该服务器在 Linode Kubernetes 集群上使用 MySQL PVClaim 结构 运行。集群有 3 个节点,具有大量 RAM、磁盘 space 和 CPU。这是 'kubectl get all' 的打印输出:

C:\development\Kubernetes >kubectl get all

NAME                                  READY   STATUS    RESTARTS   AGE
pod/dataapi-server-57c87f56c6-2fcdz   1/1     Running   0          21h
pod/gems-deployment-c9f6dbdbb-2qhff   1/1     Running   0          20h
pod/mysql-6d4b9f6f46-8m66h            1/1     Running   0          21h

NAME                            TYPE           CLUSTER-IP      EXTERNAL-IP      PORT(S)        AGE
service/dataapi-server          ClusterIP      10.128.6.155    <none>           80/TCP         21h
service/gems-frontend-service   LoadBalancer   10.128.76.185   104.***.**.**    80:31190/TCP   20h 
service/kubernetes              ClusterIP      10.128.0.1      <none>           443/TCP        4d23h
service/mysql                   ClusterIP      None            <none>           3306/TCP       21h

NAME                              READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/dataapi-server    1/1     1            1           21h
deployment.apps/gems-deployment   1/1     1            1           20h
deployment.apps/mysql             1/1     1            1           21h

我和我的同事在两台不同的客户端机器上并肩工作,在我们各自的 Chrome 浏览器中启动了前端,并且都做了一些基本的独立工作。令我们惊讶的是,我们都能够访问同一个 Pod ('gems-deployment-c9...') 并高效地工作。基于我们在 Pods 和虚拟机上的所有理解,这对我们来说没有意义。我会在这里指出,我们对 Kubernetes 和容器世界来说是相当新的。

谁能解释一下为什么会这样?是否有任何文件可以指出我们?我的 Google 搜索只找到了关于每个 Pod 多个容器的论文,这不是我们的情况。

提前致谢!

当您向 Angular 应用程序发出常规 HTTP GET 请求时,负载均衡器(服务)会根据节点上的压力确定哪个 pod 应该接收请求。因为你有一个前端 pod,它只驻留在一个节点上,所以选择了那个节点。

然后该节点会创建一个新线程,该线程的持续时间与向您发送响应(即网页)所需的时间一样长。如果您的请求是同时发出的,该节点通常只会打开另一个线程并同时为您提供服务,这与您在 Kubernetes 之外托管此前端时会发生的情况相同。

对于您担心成为问题的问题,节点必须接收比它能够有效处理的更多的请求。在这种情况下,优化负载均衡器或提高节点功率都是有效的响应。