问题标签 [kubernetes-networking]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
kubernetes - 谁将 ClusterIP 分配给 kubernetes 中的服务,可以禁用它吗?
我不确定 kubernetes 中的哪个组件可以完成这样的工作。也许kube-api-server
或kube-controller-manager
,因为它们都有一个名为:“service-cluster-ip-range”的参数。
我想知道是否可以禁用分配?
谢谢
kubernetes - 从 pod 内部访问主机本地端口
我有一个本地 kubernetes 集群,其中包含一个在主机节点上运行的应用程序(即不在 pod 中,在主机节点本身上)。该应用程序当前绑定到 localhost 端口。我希望从集群中的 Pod 和外部通过入口访问该应用程序。但我试图避免在主机防火墙上打开端口。
我已经尝试将 nginx pod 作为守护进程运行,无论是否使用 hostNetwork 来代理到主机的 localhost。但是如果不打开防火墙,我的其他 pod 也无法访问它。还有其他人遇到这个问题吗?
基本上,我试图让集群到达主机节点上的 localhost 端口。
或者
kubernetes - 版本“compute.cnrm.cloud.google.com/v1beta1”中类型“ComputeAddress”没有匹配项
我正在尝试为 Google Kubernetes Engine ( v1.20.8-gke.900 ) 创建一个 Google 管理的 SSL 证书,因为我在这里提到了这个文档,据说是创建一个ComputeAddress资源。所以我创建了一个下面的配置文件
现在当我通过运行应用它时
我收到一个错误
错误:无法识别“compute-address.yaml”:版本“compute.cnrm.cloud.google.com/v1beta1”中类型“ComputeAddress”没有匹配项
所以任何人都可以告诉什么应该是正确的apiVersion
或kind
kubernetes - 如何在 HAProxy Ingress Controller 中覆盖默认模式
我在我的 EKS Kubernetes 设置中使用 HAProxy 入口控制器。
最近我尝试在我的 k8s 上设置一个 Redis 实例。
当我尝试从集群外部连接并运行任何命令时,出现以下错误:
在进一步调试中,我发现了问题,HAProxy 需要在 中运行TCP mode
,并且由于默认模式设置为HTTP
.
为了解决这个问题,我在我的 Redis 服务中添加了以下注释,这应该可以解决问题,但它没有。我仍然不断收到同样的错误。
我登录到其中一个 HAProxy 容器以检查正在使用的配置,并找到以下块:
正如我所看到的,注释中的配置正在应用,但它没有覆盖mode
.
我有几个问题
- 如何覆盖
HTTP
为特定后端/服务设置的全局模式或任何全局模式? - 如果两者
mode
都在backend
(如上述情况)中指定,那么哪一个优先?
istio - 发送 Envoy 运行时标志
我想设置一个新的 Envoy Runtime 标志。Envoy 速率限制扩展支持一个名为ratelimit.tcp_filter_enforcing的运行时标志,我想将其设置ratelimit.tcp_filter_enforcing
为0
,这样我就可以只记录阈值而不是强制执行它们。
我已经配置了一个全局速率限制 EnvoyFilter。我提出这个问题的 API 文档可以在这里找到
kubernetes - kube-proxy 是否过滤 JSON 内容类型的 HTTP POST 有效负载?
我的 kubernetes 集群(1.18.20,calico 3.14.2)遇到了相当奇怪的行为:当我尝试通过 curlNodePort
服务将 2 兆字节的 JSON 文件上传到 pod 时,传输被Recv failure: Connection reset by peer
. 流量捕获显示客户端和服务器都收到来自网络的 RST 数据包,但没有发送它们。相同大小的二进制文件上传成功,但无论Content-Type
指定如何,JSON 都会被拒绝。pod 之间的文件传输(使用类似的命令和相同的文件)顺利进行。通过入口上传(也使用 配置NodePort
)也失败了。接收到的片段大小始终相同,约为 850K。
我已经使用nc -l 80*
而不是具有相同结果的实际服务。
显然,kube-proxy
不喜欢大的 JSON 文件。
是否可以从外部客户端向 pod 发送大的 JSON 文件,或者这样的限制是硬编码的?
UPD1
新集群(1.22.0,calico 3.20.0)的行为相同。
UPD2
系统不会拒绝所有大的 JSON 有效负载,但只会拒绝百分之几的用户上传。Payload 由客户端应用程序特制:多卷 Zip 存档的第一部分采用 base64 编码并封装为 JSON 文件 ('{ "data": "..." }')。导致连接中断的片段大小约为 640K。
中的过滤过程看起来像错误kube-proxy
。
amazon-ec2 - 当 eth0 上的实例分配了两个私有 IPS 时,master 上的 k3s 集群 pod 无法访问互联网
我正在尝试使用内置法兰绒网络运行单个主节点 k3s 集群。集群启动得很好,我可以使用busybox ping集群中的其他pod。
但我无法从 k3s pod ping 任何公共 IP。
我对该实例所做的唯一更改是将辅助私有 IP 附加到主网络接口eth0
。我附上IP如下
在此之后,我的ip a
命令在主机 ec2 上显示如下
ip r
这是主机 ec2 上的命令输出
ip r
这是busybox pod中的命令输出
我正在使用 ubuntu 20.04 服务器 AMI
如果我恢复 netplan 所做的更改,那么一切都开始正常工作。
从过去的几天开始,我一直在努力寻找解决方案,请对此提供任何指示或帮助。
nginx - Kubernetes 中的 SPRING_CLOUD_CONFIG_URI 设置
我有 2 个容器的简单设置,一个用于配置,一个用于网关。
下面是服务和部署的定义。它们创建得很好,但网关容器无法连接到http://configuration:8888
并引发未知主机错误。
配置服务器在端口上运行 Nginx 8888
。
我可以从带有 URL 的浏览器访问配置http://configuration/actuator/
。
我认为 Kubernetes 中的 pod 应该能够很好地通信,只要它们在同一个网络中(这里是主机)。不确定这里缺少什么。
kubernetes - 在 k8s 集群中,我应该始终调用 Ingress Rule 还是 Node Port Service Name?
我在我们的系统中有许多宁静的服务
- 有些是我们在Kubernetes集群中的
- 其他人在遗留基础设施上并托管在虚拟机上
我们的许多RESTful 服务相互之间进行同步调用(因此不能异步使用消息队列)
我们还有许多使用这些服务的 UI(胖客户端或 Web 应用程序)
我们可以像这样定义一个简单的 k8s 清单文件
- 荚
- 服务
- 入口
我真的不确定集群上的宁静服务相互交谈的最佳方式是什么。
- 集群外的调用者似乎只有一条好路由,它使用由入口规则构建的 url
- 集群内的两个选项
这可以用一个例子来进一步说明
呼叫者 | 接收者 | 示例网址 | |
---|---|---|---|
用户界面 | 在集群上 | http://clusterip/orders | UI 将使用集群 ip 和入口规则到达订单管理器 |
集群外服务 | 在集群上 | http://clusterip/orders | 就像用户界面一样 |
在集群上 | 在集群上 | http://clusterip/orders | 可以使用类似上述方法的入口规则 |
在集群上 | 在集群上 | http://orderManager-service:50588/ | 可以直接使用服务名和端口 |
我在上面写了几次集群 ip ,但在现实生活中,我们把一些东西放在了顶部,所以有一个友好的名字,比如 http://mycluster/orders
所以当调用者和接收者都在集群上时
- 使用集群外的服务和应用程序也使用的入口规则
- 使用入口规则中使用的节点端口服务名称
- 或者也许是别的东西!
使用nodeport 服务名称的一个好处是您不必更改基本 URL。
- 入口规则将额外元素附加到路由(在上述情况下为orders)
- 当我将 RESTful 服务从旧版迁移到 k8s 集群时,它会增加复杂性