kubernetes - minikube 上的简单 kubernetes 部署,helm 3 不工作(无法访问应用程序)
问题描述
我正在尝试在 Kubernetes 集群上部署一个简单的 FLASK 应用程序(python Web 框架)。我正在使用 minikube。
这是我的 Helm 3 的东西:
部署:
apiVersion: apps/v1
kind: Deployment
metadata:
name: flask-app-deployment
labels:
app: flask-app
some: label
spec:
replicas: 1
selector:
matchLabels:
app: flask-app-pod
template:
metadata:
labels:
app: flask-app-pod
spec:
containers:
- name: flask-app-container
image: flask_app:0.0.1
imagePullPolicy: Never
ports:
- name: app
containerPort: 5000
protocol: TCP
securityContext: # root access for debugging
allowPrivilegeEscalation: false
runAsUser: 0
服务:
apiVersion: v1
kind: Service
metadata:
name: flak-app-service
labels:
service: flask-app-services
spec:
type: NodePort
ports:
- port: 5000
targetPort: 5000
protocol: TCP
name: https
selector:
app: flask-app-pod
图表:
apiVersion: v2
name: flask-app
type: application
version: 0.0.1
appVersion: 0.0.1
我通过这样做来部署它helm install test-chart/ --generate-name
。
的样本输出kubectl get all
:
NAME READY STATUS RESTARTS AGE
pod/flask-app-deployment-d94b86cc9-jcmxg 1/1 Running 0 8m19s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/flak-app-service NodePort 10.98.48.114 <none> 5000:30317/TCP 8m19s
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 7d2h
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/flask-app-deployment 1/1 1 1 8m19s
NAME DESIRED CURRENT READY AGE
replicaset.apps/flask-app-deployment-d94b86cc9 1 1 1 8m19s
我执行到 pod 以检查它是否正在侦听正确的端口,看起来很好(netstat 输出):
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:5000 0.0.0.0:* LISTEN 1/python3
我的 Dockerfile 应该没问题。我可以创建一个容器并调用该应用程序,然后运行一个“普通”dcker 容器。
一定是什么蠢事。我在这里没有看到什么?
我希望能够将https://localhost:30317
其转发到内部侦听端口 5000 的服务,该服务将其转发到也侦听端口 5000 的 Pod。
解决方案
要验证流量,您可以使用以下内容作为中断的地方:
kubectl port-forward pods/flask-app-deployment-d94b86cc9-jcmxg 5000:12345
或者
kubectl port-forward deployment/flask-app-deployment 5000:12345
或者
kubectl port-forward service/flak-app-service 5000:12345
取决于您要调试的位置。
另外请通过运行netstat -tunlp
您的主机是否正在侦听分配的端口来验证。
希望这可以解决您的错误,或者如果没有,请告诉我。
推荐阅读
- vuejs2 - 编辑表单上的多选
- python - 如何为 Tesseract 处理图像?
- javascript - 为以下设置运行单元测试:
- python - Python使用正则表达式在大字符串中查找具有动态值的字符串
- javascript - redux 的做法对我的 sessionStorage 不起作用
- azure - 为什么通过 Visual Studio 部署的逻辑应用程序不会将自定义创建的 Azure 应用程序服务带到新订阅
- jsp - JSP 中 c:choose 的问题
- node.js - 查询 find mongoose 返回一个文档而不是 $in 数组
- c# - 加入多个表并选择具有多个结果的顶部 LinQ to SQL
- c++ - C++中CURL下载的文件打不开