即使在kubernetes中公开服务后,也无法连接到外部负载均衡器

时间:2018-09-04 03:59:18

标签: kubernetes google-kubernetes-engine

我有以下部署文件

apiVersion: apps/v1
kind: Deployment
metadata:
  name: family-tree-deployment
  labels:
    app: familytree
spec:
  replicas: 1
  selector:
    matchLabels:
      app: familytree
  template:
    metadata:
      labels:
        app: familytree
    spec:
      containers:
      - name: familytree
        image: index.docker.io/koustubh/familytree:v1.0
        ports:
        - containerPort: 8080

我可以使用kubectl create -f deploy.yml

成功创建部署

现在,我只是使用以下命令公开了此部署

kubectl expose deployment family-tree-deployment --type=LoadBalancer --name=familytree-service

服务已成功创建。

输出为

$ kubectl get svc
    NAME                 TYPE           CLUSTER-IP      EXTERNAL-IP      PORT(S)          AGE
    familytree-service   LoadBalancer   10.51.244.161   35.221.113.235   8080:30505/TCP   1h

$ kubectl describe svc familytree-service
    Name:                     familytree-service
    Namespace:                default
    Labels:                   app=familytree
    Annotations:              <none>
    Selector:                 app=familytree
    Type:                     LoadBalancer
    IP:                       10.51.244.161
    LoadBalancer Ingress:     35.221.113.235
    Port:                     <unset>  8080/TCP
    TargetPort:               8080/TCP
    NodePort:                 <unset>  30505/TCP
    Endpoints:                10.48.4.7:8080
    Session Affinity:         None
    External Traffic Policy:  Cluster
    Events:                   <none>

我可以登录到Pod,并确保该服务正在运行。 但是,当我使用负载均衡器的外部IP并查询我的api时,连接超时。

我已确保防火墙允许端口8080。 我的应用程序在端口8080上运行

1 个答案:

答案 0 :(得分:0)

生成的Service对象看起来非常有效,因此我们可以排除标签问题或丢失的公共IP地址。此外,您可以在内部访问您的服务,这意味着防火墙规则很可能被错误地应用。

请确保您允许以下传入流量

  1. 从Internet到TCP端口8080上的负载均衡器
  2. 从负载均衡器到TCP端口30505上的所有Kubernetes节点