kubernetes - 使用 Kubernetes 和 minikube 在端口 80 上公开一个 Web 应用程序
问题描述
我正在使用我的笔记本电脑(没有云)学习 Kubernetes。我按照 kubernetes(.)io 上的文档开始使用 minikube。我不确定我错过了什么,因为我只能使用高 TCP 端口 32744 而不是标准端口 80 访问我的网络应用程序。我希望能够通过访问 http:// 使用网络浏览器访问我的网络应用程序IP地址。
这是我的deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: webapp-deployment
spec:
replicas: 2
selector:
matchLabels:
app: nodejs
template:
metadata:
labels:
app: nodejs
spec:
containers:
- name: nodeapp
image: localregistry/nodeapp:1.0
ports:
- containerPort: 3000
$ minikube service webapp-deployment
|-----------|-------------------|-------------|---------------------------|
| NAMESPACE | NAME | TARGET PORT | URL |
|-----------|-------------------|-------------|---------------------------|
| default | webapp-deployment | 3000 | http://192.168.64.2:32744 |
|-----------|-------------------|-------------|---------------------------|
解决方案
这就是 Kubernetes 的工作原理。
3000
是容器中的端口,也是暴露应用程序32744
的NodePort 。造成这种情况的原因有很多,其中之一是该端口是 Web 服务的标准保留端口,80
并且443
Kubernetes 需要能够运行许多容器和服务。另一个原因是端口0-1024
仅限于root
*nix 系统。
如果您真的想80
在本地机器上的端口上提供它,我只需设置 Nginx 之类的东西并将流量代理到http://192.168.64.2:32744
# nginx.conf
...
location / {
proxy_set_header Accept-Encoding "";
proxy_pass http://192.168.64.2:32744;
}
...
或者,您可以port-forward
按照此处建议的其他答案从不受限制的本地帖子中进行操作。
✌️
推荐阅读
- android - 背景渲染和UI显示
- matlab - MATLAB 为复杂表示绘制一系列图形
- git - MacOS 上的 Git 尝试使用 SSLv3(openSSL / git 已更新)
- tree - 在 Prolog 中的 is_a() 树中查找叶节点
- dart - 如何在上传之前检查视频的文件大小
- c++ - 验证码在 Arduino 中不起作用
- c - 替换字符串C语言上的字母
- json - Scala - 从包含 JSON 格式数据的文件中提取值
- gremlin - values() 的奇怪行为
- python - 如何连接数据框,但仅在 ID 列值同时为数据框的情况下,并删除 ID 不匹配的行?