首页 > 解决方案 > Kubernetes 部署连接被拒绝

问题描述

我正在尝试将一个简单的 python 应用程序部署到 Google Container Engine:

我已经创建了一个集群然后运行kubectl create -f deployment.yaml 它已经在我的集群上创建了一个部署 pod。之后,我创建了一个服务:kubectl create -f deployment.yaml

这是我的 Yaml 配置:

pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: test-app
spec:
  containers:
  - name: test-ctr
    image: arycloud/flask-svc
    ports:
    - containerPort: 5000

这是我的 Dockerfile:

FROM python:alpine3.7
COPY . /app
WORKDIR /app
RUN pip install -r requirements.txt
EXPOSE 5000
CMD python ./app.py

部署.yaml:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    app: test-app
  name: test-app
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: test-app
      name: test-app
    spec:
      containers:
      - name: test-app
        image: arycloud/flask-svc
        resources:
          requests:
            cpu: "100m"
        imagePullPolicy: Always
        ports:
        - containerPort: 8080

服务.yaml:

apiVersion: v1
kind: Service
metadata:
  name: test-app
  labels:
    app: test-app
spec:
  type: LoadBalancer
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 8080
    nodePort: 32000
  selector:
    app: test-app

入口

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - http:
      paths:
      - path: /
        backend:
          serviceName: frontend
          servicePort: 80

它创建一个 LoadBalancer 并提供一个外部 IP,当我打开它返回的 IP 时Connection Refused error

怎么了?

请帮帮我!

谢谢你,阿卜杜勒

标签: pythondockerkubernetesgoogle-cloud-platformgoogle-kubernetes-engine

解决方案


您可以首先检查 pod 是否正在工作curl podip:port,在您的场景中,应该是curl podip:8080;如果不能正常工作,您必须检查进程是否在您使用的映像中绑定了 8080 端口。

如果它有效,那么curl svcip:svcport在您的场景中尝试使用服务,应该是curl svcip:80;如果不能正常工作,将是 kubernetes 网络 [配置] 问题。

如果仍然有效,那么问题应该发生在入口层。

理论上,如果都符合 k8s 规则,它应该可以工作。


推荐阅读