首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >azure-aks docker容器python-django url不起作用

azure-aks docker容器python-django url不起作用
EN

Stack Overflow用户
提问于 2021-09-19 07:14:05
回答 1查看 61关注 0票数 0

我已经创建了Docker,它有debian + python-django,可以在8000端口上运行。但是在部署到azure-ak之后,url path在8000端口下不工作。把重要的细节记在下面。

步骤1:

代码语言:javascript
复制
Dockerfile :
 EXPOSE 8000

 RUN /usr/local/bin/python3 manage.py migrate
 CMD [ "python3", "manage.py", "runserver", "0.0.0.0:8000" ]

步骤2:构建docker镜像后,推送到azure注册表。

步骤3: myfile.yaml :这是将azure注册表文件部署到aks集群。

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: myops
spec:
 replicas: 1
selector:
 matchLabels:
   app: myops
template:
 metadata:
   labels:
     app: myops
 spec:
   containers:
   - name: myops
     image: quantumregistry.azurecr.io/myops:v1.0
     ports:
     - containerPort: 8000
 ---
 # [START service]
 apiVersion: v1
 kind: Service
 metadata:
   name: myops-python
 spec:
   type: LoadBalancer
   ports:
   - port: 8000
     targetPort: 8888
   selector:
     app: myops
 # [END service]

部署到aks : kubectl apply -f myops.yaml

第四步:检查服务

代码语言:javascript
复制
kubectl get service  myops-python --watch
NAME                    TYPE           CLUSTER-IP    EXTERNAL-IP    PORT(S)          AGE
myops-python   LoadBalancer   <cluster-ip>   <external-ip>   8000:30778/TCP   37m

注意:我已经屏蔽了IP,不会暴露给公众。

第5步:我看到容器运行正常

代码语言:javascript
复制
kubectl get pods
NAME                                           READY   STATUS             RESTARTS   AGE
myops-5bbd459745-cz2vc                1/1     Running            0          19m

步骤6:我看到容器日志,显示python在host 0.0.0.0:8000端口下运行。

代码语言:javascript
复制
 kubectl logs -f myops-5bbd459745-cz2vc
Watching for file changes with StatReloader
Performing system checks...

WARNING:param.main: pandas could not register all extension types imports failed with the following error: cannot import name 'ABCIndexClass' from 'pandas.core.dtypes.generic' (/usr/local/lib/python3.9/site-packages/pandas/core/dtypes/generic.py)
System check identified no issues (0 silenced).
September 19, 2021 - 06:47:57
Django version 3.2.5, using settings 'myops_project.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.

问题是,当我在浏览器http://:8000/myops_app中打开它时,它不工作并且超时。

EN

回答 1

Stack Overflow用户

发布于 2021-09-20 19:07:44

服务myops-python设置为在端口8000上接收请求,但随后会将请求发送到目标端口8888上的pod。

端口:-端口: 8000 targetPort: 8888

但是,Pod myops中的容器myops没有侦听端口8888。相反,它正在侦听端口8000。

Dockerfile文件:

EXPOSE 8000run /usr/local/bin/python3 manage.py迁移命令"python3","manage.py","runserver","0.0.0.0: 8000“

请手动将spec.ports[0].targetPort设置为8000,或从服务myops-python中的spec.ports[0]中删除targetPort。为方便起见,默认情况下,targetPort设置为与port字段相同的值。有关详细信息,请参阅Defining a Service

提示:您可以使用kubectl edit service <service-name> -n <namepsace>编辑服务清单。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69241111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档