Amazon web services AWS上具有Kops的Kubernetes群集-节点端口服务不可用

Amazon web services AWS上具有Kops的Kubernetes群集-节点端口服务不可用,amazon-web-services,kubernetes,kops,Amazon Web Services,Kubernetes,Kops,我在访问Kubernetes群集上的节点端口服务时遇到困难 目标 设置ALB入口控制器,以便我可以使用WebSocket和http/2 按照该控制器的要求设置节点端口服务 采取的步骤 以前,在AWS eu-west-1上创建了Kops(版本1.6.2)群集。nginx ingress的kops插件以及Kube lego也被添加。ELB入口工作正常 使用该项目指定的IAM配置文件,使用自定义AWS密钥设置ALB入口控制器 使用kubectl replace--force将服务类型从LoadBala

我在访问Kubernetes群集上的节点端口服务时遇到困难

目标

设置ALB入口控制器,以便我可以使用WebSocket和http/2

按照该控制器的要求设置节点端口服务

采取的步骤

以前,在AWS eu-west-1上创建了Kops(版本1.6.2)群集。nginx ingress的kops插件以及Kube lego也被添加。ELB入口工作正常

使用该项目指定的IAM配置文件,使用自定义AWS密钥设置ALB入口控制器

使用kubectl replace--force将服务类型从LoadBalancer更改为NodePort

kubectl描述svc我的节点端口服务 名称:我的节点端口服务 名称空间:默认值 标签: 选择器:服务=我的选择器 类型:节点端口 IP:100.71.211.249 端口:80/TCP 节点端口:30176/TCP 终点:100.96.2.11:3000 会话关联:无 活动: >kubectl描述吊舱我的nodeport吊舱 名称:我的nodeport吊舱 节点:.eu-west-1.compute.internal/ 标签:服务=我的选择器 状态:正在运行 IP:100.96.2.11 容器: 更新中心: 端口:3000/TCP 准备好了吗 重新启动计数:0 (ssh进入节点) $sudo netstat-nap | grep 30176 tcp6 0:::30176:::*侦听2093/kube代理 结果

来自ALB的卷曲挂起

卷曲从
挂起

预期的

Curl从ALB和直接到节点:节点端口应返回200“Ok”(服务对根的http响应)

更新: 在github上创建的问题,在某些情况下,请参考上面的一些详细信息:


默认情况下,Kops不会将EC2实例配置为允许来自外部的节点端口流量

为了使集群外的流量到达节点端口,必须在AWS上的EC2控制台中编辑EC2实例(即Kubernetes节点)的配置

进入EC2控制台后,单击“安全组”。KOP应该将它为集群创建的原始安全组注释为
节点。
主节点。

我们需要修改这些安全组,以便将流量从节点报告的默认端口范围转发到实例

单击安全组,单击规则并添加以下规则

要在节点和主机上打开的端口范围:30000-32767

这将允许internet上的任何人访问群集上的节点端口,因此请确保这些节点端口是公开的


或者,您可以只从ALB入口控制器为ALB创建的安全组中允许它,而不是从任何来源允许它。但是,由于这些可以重新创建,因此可能需要修改关于修改kubernetes服务的规则。我建议将节点端口显式指定给它是一个预先确定的已知节点端口,而不是一个随机分配的节点端口。

不需要master的SG来打开节点端口范围以使:工作


因此,只有工人的SG需要打开端口范围。

当您说
节点。
主节点。
时,您是指标签和值属于安全组,对吗?他是指编辑后安全组的名称。是否需要重新启动机器?
> kubectl describe svc my-nodeport-service
Name:                   my-node-port-service
Namespace:              default
Labels:                 <none>
Selector:               service=my-selector
Type:                   NodePort
IP:                     100.71.211.249
Port:                   <unset> 80/TCP
NodePort:               <unset> 30176/TCP
Endpoints:              100.96.2.11:3000
Session Affinity:       None
Events:                 <none>

> kubectl describe pods my-nodeport-pod
Name:           my-nodeport-pod
Node:           <ip>.eu-west-1.compute.internal/<ip>
Labels:         service=my-selector
Status:         Running
IP:             100.96.2.11
Containers:
  update-center:
    Port:               3000/TCP
    Ready:              True
    Restart Count:      0

(ssh into node)
$ sudo netstat -nap | grep 30176
tcp6       0      0 :::30176                :::*                    LISTEN      2093/kube-proxy