我正在使用笔记本电脑(没有云)学习Kubernetes。我通过关注kubernetes(.io)上的文档开始使用minikube。我不确定我缺少什么,因为我只能使用高TCP端口32744而不是标准端口80访问我的Web应用程序。我希望能够使用Web浏览器访问http://来访问我的Web应用程序ipaddress。
这是我的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 |
|-----------|-------------------|-------------|---------------------------|
答案 0 :(得分:4)
这就是Kubernetes的工作方式。
3000
是容器中的端口,32744
是应用程序暴露所在的NodePort。造成这种情况的原因有多种,其中之一是端口80
和443
是Web服务的标准保留端口and,Kubernetes需要能够运行许多容器和服务。另一个原因是端口0-1024
是restricted to root
only on *nix systems??。
如果您真的想在本地计算机的端口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
,作为此处建议的其他答案。
✌️</ p>
答案 1 :(得分:1)
您可以为此使用kubectl port-forward
。
$ kubectl port-forward -n <namespace> pod/mypod 8888:5000
在本地侦听端口8888,然后转发到Pod中的端口5000。
注意:您也可以通过port-forward
将kubectl port-forward svc/<service-name> PORT:PORT
与k8s服务一起使用。