首页 > 解决方案 > 为什么我的 kubectl 负载均衡器针对的是随机端口?

问题描述

我有一个服务和部署 kube 配置文件,如下所示。

现在,当我应用这两个文件时,它会创建一个负载均衡器,但它的目标是随机端口,而不是端口 80。

我是 EKS 的新手,尝试了不同的 kube 配置文件,但它仍然尝试以随机端口为目标。

service file:

apiVersion: v1
 kind: Service
 metadata:
  name: runners-test
  labels:
    app: runners-test
 spec:
  ports:
  - port: 80
    targetPort: 80
  selector:
    app: runners-test
  type: LoadBalancer

 deployment file:

 apiVersion: apps/v1
 kind: Deployment
 metadata:
  name: runners-test
  labels:
    app: runners-test
 spec:
  replicas: 1
  selector:
    matchLabels:
      app: runners-test
  template:
    metadata:
      labels:
        app: runners-test
    spec:
      containers:
      - name: runners-test
        image: mylocaldockerimage
        ports:
        - containerPort: 80

C02X67GOKL:TERRAFORM $ kubectl获取SVC名称类型cluster-ip外部-IP>端口(s)age kubernetes clusterip 10.100.0.0.1 443/tcp 8D Runners-test LoadBalancer 10.100.246.180 AF3884AAF .com 80:31038/TCP 43m

它的目标是端口随机端口 31038,当我连接到我的 pod 并运行 ps -ef 时,我可以看到服务正在端口 80 上运行。

标签: kuberneteskubectlamazon-ekskubernetes-pod

解决方案


如 Kubernetes服务文档中所述,设置此类型将强制底层云提供商为您的服务分配一个公共 IP 地址,并将您的公开端口(在您的情况下为 80)上的流量路由到节点端口 (31038) 上Kubernetes 集群级别。

在支持外部负载均衡器的云提供商上,将 type 字段设置为 LoadBalancer 会为您的服务提供负载均衡器。


推荐阅读