我是Kubernetes的新人,我有一些疑虑。 我已经build立了由一个主节点和一个节点组成的Kubernetes集群。 我已经部署了一个非常简单的基于NodeJS的应用程序,使用Deployment种类2副本。 然后,我通过kubectl expose deployment my-app --port=80其作为服务kubectl expose deployment my-app --port=80 。
现在,我的服务如下所示:
root@sw-kubernetes01:~# kubectl get services NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE my-app 192.168.100.167 <none> 80/TCP 10m kubernetes 192.168.100.1 <none> 443/TCP 1h
是否应该访问我的应用程序导航到http://192.168.100.167: 我收到一个超时错误。 否则,我怎样才能让外部IP访问外部服务?
我知道,如果我声明服务type: NodePort ,我可以访问我的应用程序使用节点IP,不存在一种方法来自动平衡负载之间的豆荚?
如果您正在使用本地群集,则可以使用--type=NodePort
kubectl expose deployment my-app --port=80 --type=NodePort
然后grep的端口
kubectl get svc my-service -o yaml | grep nodePort
你可以使用cluster ip和前一个grep结果输出的端口来浏览。
如果您在GCE,EC2或OpenStack上运行,则通常需要一两分钟的时间才能创build负载均衡器,而EXTERNAL_IP字段则需要填充。 该领域中的IP是您应该用来访问您的服务的IP。
如果您未在GCE,EC2或OpenStack上运行,则外部负载平衡器function不适用于您,因为Kubernetes不知道如何在您的环境中创build一个。
正如问题中已经提到的那样,您可以使用提供的端口访问NodePort服务
kubectl get svc my-service -o yaml | grep nodePort
和任何公共节点IP。 但是,这些请求不需要在具有用于请求的IP的节点上结束。 实际上,这些请求会在群集内路由到与该服务关联的任何Pod。 所以这里有一些负载平衡。