【问题标题】:azure-aks docker container python-django url not workingazure-aks docker 容器 python-django url 不起作用
【发布时间】:2021-09-19 07:14:04
【问题描述】:

我创建了 Docker,它具有在 8000 端口上运行的 debian + python-django。但是在部署到 azure-aks 后,url 路径在 8000 端口下不起作用。在下面保留重要的细节。

第 1 步:

Dockerfile :
 EXPOSE 8000

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

第 2 步: 构建 docker 镜像后,将其推送到 azure registry。

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

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

第 4 步:检查服务

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 步:我看到容器运行正常

kubectl get pods
NAME                                           READY   STATUS             RESTARTS   AGE
myops-5bbd459745-cz2vc                1/1     Running            0          19m

第 6 步:我看到了容器日志,它显示 python 正在主机 0.0.0.0:8000 端口下运行。

 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 中打开它时,它不工作并且超时。

【问题讨论】:

    标签: docker azure-aks


    【解决方案1】:

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

      ports:
      - port: 8000
        targetPort: 8888
    

    但是,Pod myops 中的容器 myops 并未侦听端口 8888。而是侦听端口 8000。

    Dockerfile:

    EXPOSE 8000
    RUN /usr/local/bin/python3 manage.py migrate CMD [ "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 &lt;service-name&gt; -n &lt;namepsace&gt; 来编辑您的服务清单。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-12
      • 1970-01-01
      • 2020-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多