Kubernetes负载均衡器类型不响应外部IP地址

时间:2018-12-19 00:35:34

标签: kubernetes

我一直试图使用以下内容将我的应用程序公开到公共IP。这是在Azure上完成的。生成了公共IP,但是当我浏览到该IP时却一无所获。

这是一个在端口8000上运行容器的Django应用。该服务目前在端口80上运行,但是即使我将该服务配置为在端口8000上运行,它仍然无法工作。

我的服务定义方式有问题吗?

apiVersion: v1
kind: Service
metadata:
  name: web
  labels:
    app: hmweb
spec:
  ports:
    - port: 80
  selector:
    app: hmweb
    tier: frontend
  type: LoadBalancer

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: hmweb-deployment
  labels:
    app: hmweb
spec:
  replicas: 1
  selector:
    matchLabels:
      app: hmweb
  template:
    metadata:
      labels:
        app: hmweb
    spec:
      containers:
      - name: hmweb
        image: nw_webimage
        envFrom:
          - configMapRef:
              name: new-config
        command: ["/bin/sh","-c"]
        args: ["gunicorn saleor.wsgi -w 2 -b 0.0.0.0:8000"]
        ports:
        - containerPort: 8000
      imagePullSecrets:
      - name: key

kubectl输出描述服务网络(服务名称:)

Name:                     web
Namespace:                default
Labels:                   app=hmweb
Annotations:              kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"app":"hmweb"},"name":"web","namespace":"default"},"spec":{"ports":[{"port":...
Selector:                 app=hmweb
Type:                     LoadBalancer
IP:                       10.0.86.131
LoadBalancer Ingress:     13.69.127.16
Port:                     <unset>  80/TCP
TargetPort:               8000/TCP
NodePort:                 <unset>  31827/TCP
Endpoints:                10.244.0.112:8000
Session Affinity:         None
External Traffic Policy:  Cluster
Events:
  Type    Reason                Age   From                Message
  ----    ------                ----  ----                -------
  Normal  EnsuringLoadBalancer  8m    service-controller  Ensuring load balancer
  Normal  EnsuredLoadBalancer   7m    service-controller  Ensured load balancer

1 个答案:

答案 0 :(得分:0)

其背后的原因是您的服务具有两个选择器app: hmwebtier: frontend,并且您的部署Pod仅具有一个名为app: hmweb的标签。因此,在创建服务时,它找不到具有标签且未连接到任何吊舱的吊舱。另外,如果您的容器在8000端口上运行,则必须定义targetPort,该值具有在其上运行容器的容器端口的值,否则它将同时占用targetPort和{{1 }}的值与您在服务中定义的值相同,即port

适合您的部署的Yaml是:

port: 80

希望这会有所帮助。