AWS ALB无法与Ingress Controller通信的原因

43次阅读
没有评论

问题描述

在使用TechnoWorld Kubernetes Administration课程中创建了一个Kubernetes集群,使用一个Ubuntu EC2作为主节点,两个Ubuntu EC2作为工作节点。课程指导我们在每个相关的EC2上安装不同的Kubernetes组件 – containerd、kubeadm、kubelet、kubectl、Weavnet等。我们在工作节点的Pod上运行NGINX作为我们的简单应用程序。用户已经设置了基础设施,可以从主节点执行curl <pod IP address>命令,并得到“Welcome to nginx”的响应。到目前为止一切顺利。用户甚至创建了一个Terraform脚本来设置这个环境。用户还设置了一个可供外部访问的测试Kubernetes LoadBalancer服务,将其IP:port放在浏览器中,看到“Welcome to nginx”,证明网络(VPC、子网、安全组)设置正确。

以下是我们正在构建的基础设施的流量流向:
互联网面向的AWS ALB(端口80)-> Ingress Controller LoadBalancer服务(端口80:32111映射)-> Ingress -> ClusterIP服务 -> 带有NGINX Pod的EC2工作节点

用户在浏览器中输入ALB的DNS名称,却收到“This site can’t be reached”消息。

用户设置了面向互联网的ALB,用于提供端口80,并转发到端口32111(Ingress Controller端口)的目标组,该目标组已将2个EC2工作节点注册为目标。

用户希望能够调试这个看似简单/基础的设置,有什么指导吗?

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

根据用户提供的信息,关键的信息是DNS记录和Ingress。请确保您已定义了Ingress的名称虚拟主机。

然后,您还需要在AWS Route53中添加适当的DNS记录,以指向ALB。

方案2

如果您已经按照上述步骤进行设置,并且仍然无法访问ALB,请检查以下几点:
1. 确保您的ALB已经成功创建,并且已经将目标组与ALB关联。
2. 检查您的安全组设置,确保允许来自Internet的流量通过ALB的端口80。
3. 检查您的子网和VPC设置,确保它们与ALB的配置相匹配。
4. 检查您的Ingress Controller的配置,确保它正确地将流量转发到ClusterIP服务。
5. 检查您的ClusterIP服务的配置,确保它正确地将流量转发到NGINX Pod。

如果您仍然无法解决问题,请提供更多详细信息,以便我们能够更好地帮助您解决问题。

方案3

如果您已经按照上述步骤进行设置,并且仍然无法访问ALB,请尝试以下操作:
1. 检查您的ALB的状态,确保它处于“active”状态。
2. 检查您的目标组的状态,确保它处于“healthy”状态。
3. 检查您的安全组设置,确保它允许来自Internet的流量通过ALB的端口80。
4. 检查您的子网和VPC设置,确保它们与ALB的配置相匹配。
5. 检查您的Ingress Controller的配置,确保它正确地将流量转发到ClusterIP服务。
6. 检查您的ClusterIP服务的配置,确保它正确地将流量转发到NGINX Pod。

如果您仍然无法解决问题,请提供更多详细信息,以便我们能够更好地帮助您解决问题。

正文完