我正在尝试在本地使用 Kubernetes 运行我的第一个应用程序(或者我应该说 minikube)。
我有一个非常基本的 Web 服务器(一个本地 docker 镜像)和官方 mongodb(我想从 dockerhub 中提取)镜像。
我并不是想部署 mongodb 集群,只是让我的应用程序在本地运行的最低限度的东西将是一个很好的开始!
首先,我成功地单独运行我的网络服务器kubectl run <MY_APP> --image=<MY_IMAGE> --port 3030 --image-pull-policy=IfNotPresent
, then kubectl port-forward <MY_POD> 3030:80
它工作正常,我可以从 3030 端口访问该应用程序(该应用程序正在侦听并且容器公开端口 80)。
但我想将其转换为清单文件来描述我需要轻松运行的所有容器。
我的第一个问题是我找不到如何kubectl port-forward
应该被翻译成清单文件。
我在想targetPort
但我在尝试时遇到验证错误,看起来我们无法使用targetPort
在 Pod 容器端口描述中。
我的第二个问题是,我不太确定我通过尝试仅通过描述 Pod 来运行该堆栈正在做什么。可能还需要其他部件,service
我认为我的需要是可选的,我不确定deployment
,但我见过一个endpoint
善良,我可以忽略其他人......
我有点困惑,因为kubectl run
似乎创建了一个 Pod、一个部署和一个副本集,我不确定是否必须从清单文件创建所有这些。
我只想在本地运行我的两个容器来处理代码并在每次进行更改时刷新它并测试它。
由于我对 Kubernetes 缺乏了解,所以我的问题有一些子问题,但基本上,我想知道如何翻译我的kubectl run <MY_APP>
and kubectl port-forward <MY_POD> 3030:80
到清单文件中,这样我就可以添加 mongodb 容器并使用单个启动整个堆栈kubectl create -f ./local.yaml
命令行。
这是初稿:
apiVersion: v1
kind: Pod
metadata:
name: my_app
spec:
containers:
- name: web-server
image: my_app
imagePullPolicy: IfNotPresent
ports:
- name: my_app
containerPort: 3030
targetPort: 80
protocol: TCP
- name: mongodb
image: mongodb
ports:
- name: mongodb
containerPort: 27017
protocol: TCP