Kubernetes 负载均衡器未获得 public ip
Kubernetes load balancer not getting a public ip
我有一个小型的 ec2 支持(不是 eks)k8s 集群(版本 1.23.1),运行 在 aws 中有 1 个主节点和 1 个工作节点。该集群有一些服务,其中之一是一个基于 Flask 的简单前端。我能够使用节点端口服务 publicly 公开 flask 应用程序而没有任何问题。但我似乎无法让我的负载平衡器正常工作。
flask 应用程序部署:
kind: Deployment
metadata:
name: app-ui
labels:
app: ui
spec:
replicas: 1
selector:
matchLabels:
app: ui
template:
metadata:
labels:
app: ui
spec:
containers:
- name: app-ui
image: **image removed**
ports:
- containerPort: 5000
imagePullSecrets:
- name: docker-hub
节点端口(工作):
有了这个节点端口,我可以使用 {{worker_public_ip}}:30000
访问应用程序
apiVersion: v1
kind: Service
metadata:
name: app-ui-nodeport
spec:
type: NodePort
selector:
app: ui
ports:
- protocol: TCP
port: 5000
targetPort: 5000
nodePort: 30000
负载平衡器(不工作)
apiVersion: v1
kind: Service
metadata:
name: app-ui-loadbalancer
spec:
type: LoadBalancer
selector:
app: ui
ports:
- protocol: TCP
port: 5000
targetPort: 5000
负载均衡器的描述
Name: app-ui-loadbalancer
Namespace: default
Labels: <none>
Annotations: <none>
Selector: app=ui
Type: LoadBalancer
IP Family Policy: SingleStack
IP Families: IPv4
IP: 10.109.158.206
IPs: 10.109.158.206
Port: <unset> 5000/TCP
TargetPort: 5000/TCP
NodePort: <unset> 32343/TCP
Endpoints: 10.244.1.46:5000
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
如有错误请指正。我认为这会在 aws 中创建一个实际的负载均衡器。然后使用该负载均衡器的 public ip,我将能够在端口 5000 上访问该应用程序。
kubectl describe service app-ui-loadbalancer
可能会告诉您更多有关正在发生的事情。具体来说,检查 Events
部分。也许您可能需要添加防火墙规则或尝试获取 IP 时出错。
我有一个小型的 ec2 支持(不是 eks)k8s 集群(版本 1.23.1),运行 在 aws 中有 1 个主节点和 1 个工作节点。该集群有一些服务,其中之一是一个基于 Flask 的简单前端。我能够使用节点端口服务 publicly 公开 flask 应用程序而没有任何问题。但我似乎无法让我的负载平衡器正常工作。
flask 应用程序部署:
kind: Deployment
metadata:
name: app-ui
labels:
app: ui
spec:
replicas: 1
selector:
matchLabels:
app: ui
template:
metadata:
labels:
app: ui
spec:
containers:
- name: app-ui
image: **image removed**
ports:
- containerPort: 5000
imagePullSecrets:
- name: docker-hub
节点端口(工作):
有了这个节点端口,我可以使用 {{worker_public_ip}}:30000
访问应用程序apiVersion: v1
kind: Service
metadata:
name: app-ui-nodeport
spec:
type: NodePort
selector:
app: ui
ports:
- protocol: TCP
port: 5000
targetPort: 5000
nodePort: 30000
负载平衡器(不工作)
apiVersion: v1
kind: Service
metadata:
name: app-ui-loadbalancer
spec:
type: LoadBalancer
selector:
app: ui
ports:
- protocol: TCP
port: 5000
targetPort: 5000
负载均衡器的描述
Name: app-ui-loadbalancer
Namespace: default
Labels: <none>
Annotations: <none>
Selector: app=ui
Type: LoadBalancer
IP Family Policy: SingleStack
IP Families: IPv4
IP: 10.109.158.206
IPs: 10.109.158.206
Port: <unset> 5000/TCP
TargetPort: 5000/TCP
NodePort: <unset> 32343/TCP
Endpoints: 10.244.1.46:5000
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
如有错误请指正。我认为这会在 aws 中创建一个实际的负载均衡器。然后使用该负载均衡器的 public ip,我将能够在端口 5000 上访问该应用程序。
kubectl describe service app-ui-loadbalancer
可能会告诉您更多有关正在发生的事情。具体来说,检查 Events
部分。也许您可能需要添加防火墙规则或尝试获取 IP 时出错。