我有一个容器,该容器使用python运行聊天机器人,暴露了运行该机器人的端口5000。现在,当我在kubernetes上部署此容器时,我有几个问题
我有点困惑,因为我在网上看到的大多数示例中,每个人几乎都在他们的pod中有nginx容器以及应用程序容器
答案 0 :(得分:1)
正如您提到的,Kubernetes可以处理其自身的负载平衡,因此第一个问题的答案是“否”,您不需要运行nginx,尤其是在您的应用程序所在的pod中运行。 通常,服务和Pod具有可由群集网络路由的IP,并且终止于边缘路由器的所有流量都将被丢弃。因此,在Kubernetes中存在一组规则,这些规则允许入站连接访问集群服务。我们称之为Ingress:
一个API对象,用于管理外部访问服务中的服务 群集,通常是HTTP。
令人困惑的部分是,仅Ingress并不会做太多事情。您将必须创建一个Ingress controller,它是作为Pod部署的守护程序。它的工作是读取Ingress资源信息并进行相应处理。实际上,任何能够反向代理的系统都可以是入口控制器。您可以通过实用方法in this article阅读有关Ingress和Ingress控制器的更多信息。另外,我也不了解您的环境,因此请记住,如果您在云上,则应使用LoadBalancer类型,而在裸机环境中则应使用NodePort。
关于第二个问题,您可以在所需的任何端口上运行应用程序,只需记住在所有其他配置文件中调整该端口即可。
关于端口以及如何公开服务,您应该检查文档中有关Kubernetes模型与容器模型相比如何工作的源。您可以找到具有启发性的文章here。
很遗憾,我没有使用过Gunicorn的经验,所以我无法告诉您它在这里起什么作用。希望这可以帮助。