我在访问Kubernetes群集上的NodePort服务时遇到困难。
球门
设置ALB入口控制器,以便我可以使用webockets和超文本传输协议/2
根据该控制器的要求设置NodePort服务
采取的步骤
之前,在AWS eu-west-1上创建了Kops(版本1.6.2)群集。nginx ingress的kops插件以及Kube lego也已添加。ELB入口工作正常。
使用该项目指定的IAM配置文件,使用自定义AWS密钥设置ALB入口控制器。
使用kubectl replace--force将服务类型从LoadBalancer更改为NodePort
> 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
后果
ALB的卷曲悬挂
从卷曲
预期
从ALB和直接到节点的Curl:node-port应该返回200“Ok”(服务对根的超文本传输协议响应)
更新:在github上创建的问题引用了以上内容,在某些情况下提供了一些进一步的详细信息:
https://github.com/kubernetes/kubernetes/issues/50261
主服务器的SG无需打开节点端口范围即可使:工作。
因此,只有工人的SG需要打开端口范围。
默认情况下,Kops不会将EC2实例配置为允许来自外部的NodePort流量。
为了让集群外的流量到达节点端口,您必须在AWS上的EC2控制台中编辑EC2实例(即Kubernetes节点)的配置。
在EC2控制台中单击“安全组”Kops应该将它为集群创建的原始安全组注释为节点。
我们需要修改这些安全组,以便将流量从节点报告的默认端口范围转发到实例。
单击安全组,单击规则并添加以下规则。
在节点和主节点上打开的端口范围:30000-32767
这将允许internet上的任何人访问集群上的节点端口,因此请确保您希望这些节点端口公开。
或者,您可以只从ALB入口控制器为ALB创建的安全组中允许它,而不是从任何来源。但是,由于这些可以重新创建,因此可能需要修改关于修改kubernetes服务的规则。我建议显式地将节点端口指定为预先确定的已知节点端口,而不是随机分配的节点端口。
我有一个LoadBalancer服务,它在群集外公开3300端口。我想打开一个新的端口用于内部通信,以便其他吊舱可以与此服务对话,但此端口不应暴露在集群外部。 基本上,通信如下所示:
我使用KOPS在AWS上部署了一个工作的基于Kubernetes Gossip的集群。在这个问题上,我部署了Fabric8。命令“gofabric8 validate”表示成功。 光栅
我正在尝试访问库伯内特斯集群部署的Spring Boot微服务并尝试测试REST API。我在部署脚本中配置了节点端口方法。但是当我尝试使用Postman工具访问时,我只得到“无法获得任何响应”的响应。 我配置了服务。yaml脚本类似于以下结构, 我的部署。yaml如下所示:, 当我使用时,输出如下所示, 我正在尝试通过以下方式访问我部署的API, 更新 当我为我的部署运行命令时,我得到如下响应:
我对container worrld是新手,并试图在两个linux VM中本地设置一个kubernetes集群。在集群初始化期间,它卡在 KubeADM-1.6.0-0.x86_64.rpm KubectL-1.6.0-0.x86_64.rpm Kubelet-1.6.0-0.x86_64.rpm
我正在尝试运行一个3节点的Kubernetes集群。我已经启动并充分运行了集群,使得服务可以在不同的节点上运行。不幸的是,我似乎无法让基于NodePort的服务正确工作(就我所理解的正确性而言……)。我的问题是,我定义的任何NodePort服务都只能在其pod运行的节点上外部可用,我的理解是,它们应该在集群中的任何节点上外部可用。 一个例子是本地Jira服务,它应该在端口8082(内部)上运行,在
上节课我们和大家学习了怎样用 Promethues 来监控 Kubernetes 集群中的应用,但是对于 Kubernetes 集群本身的监控也是非常重要的,我们需要时时刻刻了解集群的运行状态。 对于集群的监控一般我们需要考虑以下几个方面: Kubernetes 节点的监控:比如节点的 cpu、load、disk、memory 等指标 内部系统组件的状态:比如 kube-scheduler、kub