问题标签 [kube-proxy]

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.

0 投票
1 回答
493 浏览

kubernetes - 哪些参数可以提高 kube-proxy 的性能?

我们在 kube-proxy 加载 iptables 时遇到问题。当有大量服务时,它会锁定 docker。有没有办法用它的参数来调整它?

从它的文档中,我只能找到 --iptables-min-sync-period 和 --iptables-sync-period 可能相关?这些在大型网络中的推荐值是多少?

0 投票
1 回答
33 浏览

kubernetes - 如何让我的所有应用程序的访问时间在 kubernetes 中运行?

这是错误报告还是功能请求?

特征

发生了什么

如何让我的所有应用程序的访问时间在 kubernetes 中运行?像网站访客计数器之类的东西。有什么建议么?

您期望发生的事情

获取总数。通过 kube-proxy?

如何重现它(尽可能最小和精确)

没有什么

还有什么我们需要知道的吗?

环境

  • Kubernetes 版本(使用kubectl version):
  • 云提供商或硬件配置**:

kubernetes:v1.6.3 1 个主节点 + 3 个节点 + 仪表板 + 入口 +... docker 1.12.6 etcd3 flannel

  • 操作系统(例如来自/etc/os-release):Linux centos7.3
  • 内核(例如uname -a):

  • 安装工具:

  • 其他:

0 投票
1 回答
783 浏览

kubernetes - 在 Minikube 中无法访问暴露的服务 ClusterIps

我一直在努力,但我没有取得任何进展。

问题是,当我从部署中创建服务时,为该服务创建的 ClusterIp 无法在 MiniKube 中访问,正如我所期望的那样。

我可以通过 ssh 到与我公开的不同的 pod 并 ping 服务的 IP 来验证它是否不可访问。

kubectl expose deployment/foo --target-port=2500

这将在 10.0.0.5 创建服务,该服务路由到 ${foo's IP}:2500

kubectl exec -it bar-5435435-sadasf -- bash root@bar-5435435-sadasf:/# ping 10.0.0.5

PING 10.0.0.5 (10.0.0.5): 56 data bytes ^C--- 10.0.0.5 ping statistics --- 8 packets transmitted, 0 packets received, 100% packet loss

ping pod IP($foo 的 IP)没有问题,但这不是我想要做的。

我已经阅读了足够多的内容,知道这个问题很可能与Minikubeproxy.go中的等价物有关。kube-proxy

https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies https://github.com/kubernetes/minikube/blob/master/pkg/localkube/proxy。去

我已经检查了 Minikube 日志并 grep 了任何包含“代理”的内容,似乎这可能指向问题,但我不知道如何解决它。

我最新的代理日志:

Sep 06 18:13:06 minikube localkube[3373]: Starting proxy... Sep 06 18:13:06 minikube localkube[3373]: Waiting for proxy to be healthy... Sep 06 18:13:07 minikube localkube[3373]: proxy is ready! Sep 06 18:46:47 minikube localkube[3373]: E0906 18:46:47.742324 3373 proxy.go:207] Error proxying data from backend to client: write tcp 192.168.99.101:8443->192.168.99.1:58760: write: broken pipe Sep 06 19:11:41 minikube localkube[3373]: E0906 19:11:41.077014 3373 proxy.go:193] Error proxying data from client to backend: write tcp 127.0.0.1:44180->127.0.1.1:10250: write: broken pipe Sep 06 19:11:41 minikube localkube[3373]: E0906 19:11:41.077220 3373 proxy.go:207] Error proxying data from backend to client: write tcp 192.168.99.101:8443->192.168.99.1:45586: write: broken pipe Sep 06 19:22:07 minikube localkube[3373]: E0906 19:22:07.214287 3373 proxy.go:207] Error proxying data from backend to client: write tcp 192.168.99.101:8443->192.168.99.1:51558: write: broken pipe Sep 06 19:22:07 minikube localkube[3373]: E0906 19:22:07.214459 3373 proxy.go:193] Error proxying data from client to backend: write tcp 127.0.0.1:45184->127.0.1.1:10250: write: broken pipe

有谁知道问题是什么以及如何解决?

0 投票
1 回答
981 浏览

amazon-ec2 - 出站连接间歇性无法响应

我在进行诸如 RPC 调用之类的出站连接时遇到间歇性响应失败,它由我的应用程序 (Java) 记录,如下所示:

org.apache.http.NoHttpResponseException: RPC_SERVER.com:443 failed to respond !

出站连接流

Kubernetes Node -> ELB for internal NGINX -> internal NGINX ->[Upstream To]-> ELB RPC server -> RPC server instance

通常的 EC2 (AWS) 上不会出现此问题。

我可以通过这样做在我的本地主机上重现

  1. 在端口 9200 中运行作为客户端的主应用程序
  2. 在 9205 端口运行 RPC 服务器
  3. 客户端将使用端口 9202 与服务器建立连接
  4. 运行$ socat TCP4-LISTEN:9202,reuseaddr TCP4:localhost:9205它将侦听端口 9202,然后将其转发到 9205(RPC 服务器)
  5. 使用在 iptables 上添加规则$ sudo iptables -A INPUT -p tcp --dport 9202 -j DROP
  6. 触发 RPC 调用,它将返回与我之前描述的相同的错误消息

假设

由 kubernetes 上的 NAT 引起,据我所知,NAT 正在使用conntrackconntrack如果 TCP 连接空闲一段时间会中断,客户端会假设连接仍然建立,尽管它不是。(CMIIW)

我也尝试过扩展kube-dns到 10 个副本,但问题仍然存在。

节点规范

使用 calico 作为网络插件

$ sysctl -a | grep conntrack

Kubelet 配置

Kubectl 版本

Kube 代理日志

$ lsb_release -s -d Ubuntu 16.04.3 LTS

0 投票
1 回答
838 浏览

kubernetes - 在 kubernetes 上使用服务类型 clusterip 时如何避免 sna?

对于 k8s 集群中的每个服务,kubernetes 都会对请求数据包进行 snat。iptables 规则是:

它在大多数情况下都能正常工作,但在网络策略中却不行。Caclico 使用 ipset 实现 networkpolicy,匹配的 set 只包含 pod ip。

所以当服务 pod 运行在 node1 上,访问 pod 运行在 node2 上。networkpolicy会DROP请求,因为请求的src ip是node2的ip或者flannel.1的ip。

我认为可能有一种方法可以关闭 clusterip 服务的 snat。但是我在任何地方都找不到它,有人可以帮我吗?

非常感谢!

0 投票
1 回答
101 浏览

kubernetes - 创建 Kubernetes 服务时,这些观察者中的哪一个被称为第一个“kube 代理”或“自定义观察者”

我有一个自定义观察者如下:

Kubernetes 的 kube-proxy 还使用informers监听服务事件。是否总是保证在自定义观察者获得调用之前调用 kube-proxy 的处理程序?

0 投票
1 回答
4636 浏览

kubernetes - Kubernetes VIP 地址说明

我对一些关于虚拟 IP 的 Kubernetes 文档感到有些困惑:https ://kubernetes.io/docs/concepts/services-networking/service/#the-gory-details-of-virtual-ips 。

用户空间 作为一个例子,考虑上面描述的图像处理应用程序。> 创建后端服务时,Kubernetes master 分配一个虚拟 IP 地址,例如 10.0.0.1。

Kubernetes master 将该 VIP 地址分配给什么?VIP地址分配在哪里?

服务的虚拟 IP 如何与外部 IP 地址集成?

为了允许用户为他们的服务选择一个端口号,我们必须确保没有两个服务可以冲突

这是否意味着在运行时kubectl get services我可以看到具有相同端口的服务?

当客户端连接到 VIP 时,它们的流量会自动传输到适当的端点

客户是谁?集群中的其他服务或一些只使用您的应用程序并且对 kubernetes 一无所知的 joe smo。

0 投票
2 回答
7526 浏览

kubernetes - NodePort 服务并非在所有节点上都可用

我正在尝试运行一个 3 节点 Kubernetes 集群。我已经启动并运行了足够多的集群,以便在不同的节点上运行服务。不幸的是,我似乎无法让基于 NodePort 的服务正常工作(无论如何我都理解正确性......)。我的问题是我定义的任何 NodePort 服务只能在其 pod 运行的节点上在外部可用,我的理解是它们应该在集群中的任何节点上都可以在外部使用。

一个例子是本地 Jira 服务,它应该在端口 8082(内部)和外部 32760 上运行。这是服务定义(只是服务部分):

这是 kubectl get service --namespace wittle south 的输出

该服务的 pod 的 HostPort 设置为 8082。集群中的三个节点分别是 nuc1、nuc2、nuc3:

以下是尝试通过主机和节点端口访问 Jira 实例的结果:

根据我的阅读,立方体代理似乎没有做它应该做的事情。我尝试阅读多维数据集代理故障排除的文档,它似乎有点过时(当我在 iptables-save 中查找主机名时,它什么也没找到)。以下是 Kubernetes 版本信息:

kube-proxy 似乎正在运行:

看来 cube-proxy 正在为我的服务创建 iptables 条目:

不幸的是,此时我对 iptables 一无所知,所以我不知道这些条目是否正确。我怀疑我在 kubeadm 初始化期间的非默认网络设置可能与此有关,因为我试图将 Kubernetes 设置为不使用我的网络的相同 IP 地址范围(基于 192.168)。我使用的 kubeadm init 语句是:

如果您注意到我正在使用默认为 192.168.0.0 的 pod 网络池的 calico,我在创建 calico 服务时修改了 calico 的 pod 网络池设置(不确定是否相关)。

在这一点上,我的结论是我不明白 NodePort 服务应该如何工作,或者我的集群配置有问题。任何有关下一步诊断的建议将不胜感激!

0 投票
2 回答
2018 浏览

kubernetes - Kube-proxy 是在 ubuntu 上附带标准的 k8s 安装还是单独的包?

我正在尝试在 ubuntu 16.04 上安装 kubernetes。我可以安装其他 kubernetes 组件,但我不知道是否安装了 kube-proxy?我应该为它获得单独的二进制包还是它与 kubernetes apt-get 安装一起预先打包?

0 投票
2 回答
1759 浏览

kubernetes - 从另一台机器通过 kube-proxy 访问 nodeport

我有 Kubernetes 集群(node01-03)。有一个带有 nodeport 的服务可以访问一个 pod(nodeport 31000)。pod 正在 node03 上运行。我可以从任何主机使用http://node03:31000访问该服务。在每个节点上,我都可以访问http://[name_of_the_node]:31000之类的服务。但是我无法通过以下方式访问该服务:http://node01:31000即使在 node01 的端口 31000 上有一个侦听器(kube-proxy)。iptables 规则对我来说看起来不错。这是它的预期工作方式吗?如果没有,我该如何进一步排除故障?