node.js - 无法从 K8s 集群访问节点应用程序
问题描述
我已经将一个非常简单的节点应用程序部署到了 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
✌️
推荐阅读
- android - 地方建议未加载在地方自动完成
- asp.net-identity - 身份服务器无效的参考令牌错误
- ag-grid - 从 Ag-grid 9.1.0 中的特定页面开始
- c# - 错误 CS1525:意外符号“?”,应为“。” 在单体开发中
- c# - WPF MVVM Tabconrol 突出显示带有验证错误的选项卡
- cuda - 示例 deviceQuery cuda 程序
- javascript - 递归地从 javascript 对象中添加和删除值
- python - 覆盖 AuthenticationForm 类以使用电子邮件登录
- c# - 统一:绳索摆动 3d 角色在开始时跳跃
- docker - 如何创建 Docker 本地私有仓库