问题标签 [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.
kubernetes - 哪些参数可以提高 kube-proxy 的性能?
我们在 kube-proxy 加载 iptables 时遇到问题。当有大量服务时,它会锁定 docker。有没有办法用它的参数来调整它?
从它的文档中,我只能找到 --iptables-min-sync-period 和 --iptables-sync-period 可能相关?这些在大型网络中的推荐值是多少?
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
):安装工具:
其他:
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
有谁知道问题是什么以及如何解决?
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) 上不会出现此问题。
我可以通过这样做在我的本地主机上重现
- 在端口 9200 中运行作为客户端的主应用程序
- 在 9205 端口运行 RPC 服务器
- 客户端将使用端口 9202 与服务器建立连接
- 运行
$ socat TCP4-LISTEN:9202,reuseaddr TCP4:localhost:9205
它将侦听端口 9202,然后将其转发到 9205(RPC 服务器) - 使用在 iptables 上添加规则
$ sudo iptables -A INPUT -p tcp --dport 9202 -j DROP
- 触发 RPC 调用,它将返回与我之前描述的相同的错误消息
假设
由 kubernetes 上的 NAT 引起,据我所知,NAT 正在使用conntrack
,conntrack
如果 TCP 连接空闲一段时间会中断,客户端会假设连接仍然建立,尽管它不是。(CMIIW)
我也尝试过扩展kube-dns
到 10 个副本,但问题仍然存在。
节点规范
使用 calico 作为网络插件
$ sysctl -a | grep conntrack
Kubelet 配置
Kubectl 版本
Kube 代理日志
$ lsb_release -s -d
Ubuntu 16.04.3 LTS
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。但是我在任何地方都找不到它,有人可以帮我吗?
非常感谢!
kubernetes - 创建 Kubernetes 服务时,这些观察者中的哪一个被称为第一个“kube 代理”或“自定义观察者”
我有一个自定义观察者如下:
Kubernetes 的 kube-proxy 还使用informers监听服务事件。是否总是保证在自定义观察者获得调用之前调用 kube-proxy 的处理程序?
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。
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 服务应该如何工作,或者我的集群配置有问题。任何有关下一步诊断的建议将不胜感激!
kubernetes - Kube-proxy 是在 ubuntu 上附带标准的 k8s 安装还是单独的包?
我正在尝试在 ubuntu 16.04 上安装 kubernetes。我可以安装其他 kubernetes 组件,但我不知道是否安装了 kube-proxy?我应该为它获得单独的二进制包还是它与 kubernetes apt-get 安装一起预先打包?
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 规则对我来说看起来不错。这是它的预期工作方式吗?如果没有,我该如何进一步排除故障?