我非常确定这是在tkinter
上运行应用时的基本用例,但到目前为止我还无法找到教程,也无法从文档中了解如何让它发挥作用。
我有一个应用程序,正在监听kubernetes
。因此,当我在localhost上运行时,我可以通过localhost:9000上的Web浏览器访问它。在我的port 9000
上运行的docker容器中运行时,它也可以在VPS
上访问。现在的问题是,如何在同一myVPSAddress:9000
上运行的kubernetes
上部署它,并使应用程序也可见,就像部署在docker上一样。我可以从VPS中访问群集地址上的应用程序,但不能访问服务器本身的IP地址。有人可以给我看一些基本的dockerfile,其中有描述它正在做什么或者向我展示一些防止白痴的方式,如何使它工作?感谢
答案 0 :(得分:1)
虽然人们会认为这是一个非常基本的用例,但对于在裸机服务器上运行自己的kubernetes集群的人来说并非如此。 (你的VPS方式)。
向“世界”展示应用程序的推荐方法是使用kubernetes services,请参阅有关exposing services的此文档。您可以定义kubernetes服务,类型为NodePort或类型为Loadbalancer *。
这是一个死的简单服务的样子(提示:它是默认类型NodePort
):
kind: Service
apiVersion: v1
metadata:
name: my-service
spec:
selector:
app: MyApp
ports:
- protocol: TCP
port: 9000
targetPort: 9376
这将在您的VPS群集中端口name: my-service
的所有节点上以标签9376
(在端口9000上运行)公开您的服务。
假设您的节点有一个公共IP(根据您的问题我假设他们这样做),您可以放心地curl localhost:9376
。
由于这通常不是向用户公开的理想用户体验/用户界面,因此人们使用Loadbalancer
类型的服务。此服务类型为您的每个服务而不是端口提供唯一的IP。
这些服务是云托管集群的一等公民,例如Google的GKE,但如果您运行自己的Kubernetes集群(使用说kubeadm
进行设置),则需要部署Loadbalancer服务提供商。我已经使用了优秀的MetalLB,它一旦设置就完美无缺,但你需要自己设置它。如果您还需要服务的DNS名称,您还应该查看ExternalDNS。
*请注意,如果你能以某种方式使IP路由可用,你也可以使用ExternalIP
类型的服务,但除非网络在你的控制范围内,这通常不是一种可行的方法,而且我建议改为寻找LB提供商。