[英]Unable to access node app from K8s cluster
我已经将一个非常简单的节点应用程序部署到 minikube 集群。 我创建了 docker 映像,并且在容器中一切正常。 当我在 k8s 集群中构建它时,我可以看到部署正在运行。
我正在尝试使用运行“kubectl get svc”时提供的 minikube IP 和端口通过负载均衡器访问节点应用程序。 我知道我至少在做这部分是正确的......
当我尝试访问 URL 并检查网络选项卡时,请求永远不会完成,只是保持挂起状态。
节点应用程序是一个非常简单的 API,我只是为了测试而制作的,因此我在尝试访问应用程序时使用路由 /posts。 它应该返回一些 JSON,这一切都在容器中起作用。 它只是在集群中停止工作。
apiVersion: apps/v1
kind: Deployment
metadata:
name: server-deployment
spec:
replicas: 3
selector:
matchLabels:
targets: nodes
template:
metadata:
labels:
targets: nodes
spec:
containers:
- name: server
image: brandonjones085/mean-backend
ports:
- containerPort: 3000
---
apiVersion: v1
kind: Service
metadata:
name: backend-load
spec:
selector:
targets: nodes
ports:
- protocol: "TCP"
port: 3000
targetPort: 3000
type: LoadBalancer
就像@Hackerman 描述的那样,如果您使用LoadBalancer类型的服务,则需要使用minikube tunnel
。 您可以按照 示例进行操作。 此类服务通常用于预置提供者负载均衡器,例如AWS ELB 。 但是在 minikube 的情况下没有外部提供者,您需要欺骗它认为有一个。
基本上,您需要在创建部署之前运行它。
在单独的终端上:
minikube tunnel
然后应用您的清单 YAML 文件,其中包含您在问题中的定义:
kubectl apply -f <your-deployment>.yaml
✌️
除了@Rico 的回答:还有两种方法可以访问部署在 minikube 上的应用程序。
首先- 使用 NodePort 。 当使用NodePort
服务类型公开应用程序时,您可以通过执行minikube service list
和访问输出显示的 URL 来访问它 - 这是minikube ip
和 nodeport 的结果。 输出将类似于:
|-------------|------------|----------------------------|-----|
| NAMESPACE | NAME | TARGET PORT | URL |
|-------------|------------|----------------------------|-----|
| |
| default | nginx | http://192.168.39.22:30345 |
| |
|-------------|------------|----------------------------|-----|
第二种选择是使用minikube tunnel
命令。 它将 externalIP 分配给LoadBalancer
服务类型公开的应用程序。 尝试访问它时, minikube tunnel
必须运行,并且在单独的终端中,您可以使用externalIP:port
访问它。 minikube tunnel
输出示例:
$minikube tunnel
Status:
machine: minikube
pid: 9284
route: 10.96.0.0/12 -> 192.168.39.22
minikube: Running
services: [backend-load]
然后您可以通过运行kubectl get service
来检查分配给此服务的外部 IP:
kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
backend-load LoadBalancer 10.100.120.115 10.100.120.115 3000:31676/TCP 110s
所以在这个例子中,应用程序可以在10.100.120.115:3000
下访问。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.