问题标签 [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 投票
2 回答
315 浏览

kubernetes - kube-apiserver 是否期望 kube-proxy 的存在?

我一直在运行我的 kubernetes master 与我的 kubernetes 节点分开。所以我有kube-apiserver,kube-scheduler并且kube-controllermanager运行在没有kubelet,kube-proxyflannel.

到目前为止,这已经很完美了。但是,今天我尝试设置Web UI并通过 API 服务器访问它。访问时出现以下错误http://kube-master-0:8080/ui

Error: 'dial tcp 172.16.72.12:9090: getsockopt: connection timed out' Trying to reach: 'http://172.16.72.12:9090/'

这向我表明 API 服务器正在尝试连接到 pod IP,因为我们没有在此主机上运行 flannel 或 kube-proxy,因此172.16.72.12不会路由 IP。

我是否应该在我的 API 服务器上运行 kube-proxy 和 flannel?是否有另一种方法可以让 API 服务器代理 UI?

0 投票
1 回答
3187 浏览

kubernetes - kube-proxy `--masquerade-all=true` 是什么意思?

kube -proxy 管理页面说:

但它确实解释得很详细。

  • 我什么时候应该设置--masquerade-all为真?
  • 它解决了什么问题?
  • 如果它设置会发生什么--masquerade-all=false?相比有什么区别--masqurade-all=true
0 投票
2 回答
1184 浏览

kubernetes - kube-proxy 报告错误的 IP 地址

在我的 kubernetes 集群中,每个节点都是一个带有两个 NIC 的 virtualbox vm,eth0 用于 NAT,eth1 用于 Host-Local 通信。

kubectl get pod --all-namespaces -o wide节目

在此处输入图像描述

我们可以看到 k8s-3 和 k8s-4 报告了正确的 IP,而 k8s-2 没有。

我试图添加's但它只是不起作用 --bind-address=192.168.99.202k8s-2kube-proxy.yaml

有人有什么建议吗?

0 投票
1 回答
201 浏览

kubernetes - 如何手动清除 kubernetes 中已删除的服务?

因此,我正在试验并添加了一个将 ExternalIP 设置为最终主机 ipv6 地址的服务。

这是 Kubernetes 接受但不支持的配置,会导致 kube-proxy 失败。

从 kube-proxy 日志中:

-A KUBE-SERVICES -m comment --comment "default/frontend: external IP" -m tcp -p tcp -d 207.154.225.168/32 --dport 80 -j KUBE-MARK-MASQ
-A KUBE-SERVICES -m评论 --comment "默认/前端:外部 IP" -m tcp -p tcp -d 207.154.225.168/32 --dport 80 -m physdev !--physdev-is-in -m addrtype !--src-type LOCAL -j KUBE-SVC-GYQQTB6TY565JPRW
-A KUBE-SERVICES -m comment --comment "default/frontend: external IP" -m tcp -p tcp -d 207.154.225.168/32 --dport 80 - m addrtype --dst-type LOCAL -j KUBE-SVC-GYQQTB6TY565JPRW
-A KUBE-SERVICES -m comment --comment "default/frontend: external IP" -m tcp -p tcp -d 2a03:b0c0:3:d0: :43bb:4001/32 --dport 80 -j KUBE-MARK-MASQ
-A KUBE-SERVICES -m comment --comment "default/frontend: external IP" -m tcp -p tcp -d 2a03:b0c0:3:d0::43bb:4001/32 --dport 80 -m physdev !--physdev-is-in -m addrtype !--src-type LOCAL -j KUBE-SVC-GYQQTB6TY565JPRW

E0502 07:38:39.913815 1 proxier.go:1312] 无法执行 iptables-restore:退出状态 2(iptables-restore v1.4.21:主机/网络iptables-restore -h' 或 'iptables-restore --help'更多信息。2a03:b0c0:3:d0::43bb:4001' not found
Error occurred at line: 53 Try

这就是问题所在:没有定义“默认/前端”服务。我已明确删除它,

kubectl get services --namespace=default
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes 10.3.0.1 443/TCP 3d

但是,我所有节点上的 kube-proxy 仍会尝试添加这些,这会导致在此错误之后创建的所有服务中断。

所以,问题是,我如何从我的集群中清除这个服务的幽灵?

0 投票
1 回答
183 浏览

kubernetes - Kubernetes/CoresOS 节点无法与 ApiServer Kube 代理通信问题

我按照本指南https://coreos.com/kubernetes/docs/latest/deploy-workers.html设置了 Kubernetes 网络,当我运行仪表板或 DNS 附加组件时,它们在 25 秒后导致 crashloopbackoff。然后我按照这个https://github.com/kubernetes/dashboard/blob/master/docs/user-guide/troubleshooting.md执行时超时

kubectl exec test-701078429-s5kca -- curl -k https://10.3.0.1

请注意,如果我执行 kubectl exec test-701078429-s5kca -- curl -k https://192.168.3.240它有效(公共 IP)

如果我在主节点上执行 curl -k https://10.3.0.1也可以。

所以问题是我在 10.2.0.0/16 上的 Kubelet 无法与 10.3.0.1/24 上的 api 服务器通信,这表明它可能是 kube 代理问题。仅供参考:我可以使用 10.2.xx 从一台机器上的一个节点内部成功 ping 到另一台机器上的另一个节点

0 投票
2 回答
189 浏览

kubernetes - Kubernetes on openstack,启动的应用程序无法访问

OpenStack VM 上的单节点 kubernetes 的方式是:

虚拟机 IP:10.120.20.227(来自外部)
etcd 版本 3.0.16
kubectl --version 1.5.7
Flannel 版本 0.6.1

当我 ssh 进入机器时,我可以看到 ip 192.168.0.5 所以 etcd 服务正在 192.168.0.5 上运行,我可以从 VM 本身访问在 VM 中启动的每个应用程序。但是从外部 openstack 集群我无法使用虚拟机公共 IP 访问应用程序。

kube-proxy 错误是

如果在任何随机端口上的 VM 上启动任何 Web 服务,我将访问 Web 应用程序。但是如果我使用 kubectl 启动应用程序,我将无法从其他区域访问这是否需要任何特殊路由?或者 kube-proxy 有什么问题?

0 投票
1 回答
11540 浏览

kubernetes - Kubernetes kube-proxy 机制

在 Kubernetes 中,假设我们有 3 个 pod,它们物理上托管在节点 X、Y 和 Z 上。当我使用“kubectl expose”将它们公开为服务时,它们都是集群中的节点(除了 X、Y 和 Z ) 配置方式相同吗?具体来说,集群内每个节点中的 kube-proxy 都会监视 apiserver,构建一堆 iptables 规则并引用门户 IP(由 apiserver 选择),并将这些规则插入它所在的节点?

我认为必须在所有节点上完成它的原因是集群不知道客户端将从哪个节点来访问门户 IP?

0 投票
2 回答
749 浏览

kubernetes - 如何访问本地集群中的 Kubernetes pod?

我已经建立了一个具有一个主节点和三个从节点的实验性本地Kubernetes 集群。我为侦听端口 10001 的自定义服务创建了部署。目标是访问具有/hello稳定 IP/主机名的示例性端点,例如http://<master>:10001/hello.

部署部署后,Pod 已创建良好并可通过其集群 IP 访问。

我了解云提供商的解决方案是为部署创建一个负载均衡器服务,这样您就可以只是expose一个服务。但是,本地集群显然不支持此功能。为此目的设置Ingress似乎有点过头了。不是吗?

它似乎更像kube proxy是要走的路。但是,当我kube proxy --port <port>在主节点上运行时,我可以访问http://<master>:<port>/api/...,但不能访问实际的 pod。

有很多相关的问题(例如如何通过 kubernetes 集群 ip 访问服务?),但没有(接受)答案。关于该主题的 Kubernetes文档也相当稀少,所以我什至不确定从概念上来说什么是正确的方法。

因此,我正在寻找一个直接的解决方案和/或一个好的教程。这似乎是一个非常典型的用例,但缺乏明确的路径。

0 投票
1 回答
1674 浏览

kubernetes - Kube-proxy 无法检索节点信息 - 无效的 nodeIP

几个月来我一直在尝试设置 Kubernetes 集群,但到目前为止我还没有运气。

我正在尝试将其设置在 4台运行coreOS的裸机PC 上。我刚刚重新安装了所有东西,但我遇到了和以前一样的问题。我正在关注教程。我想我已经正确配置了一切,但不是 100% 确定。当我重新启动任何机器时,kubelet 和 flanneld 服务正在运行,但是在检查服务状态时我看到以下错误:systemctl status

kubelet 错误: Process: 1246 ExecStartPre=/usr/bin/rkt rm --uuid-file=/var/run/kubelet-pod.uuid (code=exited, status=254)

法兰错误Process: 1057 ExecStartPre=/usr/bin/rkt rm --uuid-file=/var/lib/coreos/flannel-wrapper.uuid (code=exited, status=254)

如果我重新启动这两个服务,它们就可以工作,或者至少看起来它们可以工作 - 我没有收到任何错误。

其他一切似乎都运行良好,所以剩下的唯一问题(我认为)是所有节点上的 kube-proxy 服务。

如果我运行,kubectl get pods我会看到所有 pod 都在运行:

这个问题的答案建议检查是否kubectl get node返回在 kubelet 上注册的相同名称。据我检查日志,节点注册正确,这是输出kubectl get node

我使用的教程(上面链接)建议我使用--hostname-override,但如果我试图在本地卷曲它,我无法获取主节点(kubernetes-4)上的节点信息。所以我删除了它,我现在可以正常获取节点信息。

有人建议这可能是法兰绒问题,我应该检查法兰绒端口。使用netstat -lntu我得到以下输出:

所以我认为端口很好?

etcd2 也可以工作,etcdctlcluster-health显示所有节点都是健康的

这是 cloud-config 的一部分,它在重启时启动 etcd2,此外我只在其中存储 ssh 密钥和节点用户名/密码/组:

这是/etc/flannel/options.env文件的内容:

相同的端点--etcd-serverskube-apiserver.yaml文件中

任何想法/建议可能是什么问题?另外,如果缺少一些细节,请告诉我,我会将它们添加到帖子中。

编辑:我忘了包括 kube-proxy 日志。

主节点 kube-proxy 日志:

工作节点 kube-proxy 日志:

0 投票
0 回答
233 浏览

kubernetes - 在 GKE/Kubernetes 中配置 kube-proxy 代理模式的新方法?

我看到最近的拉取请求被合并以删除net.experimental.kubernetes.io/proxy-modenet.beta.kubernetes.io/proxy-mode注释。

当 proxymode 设置为 时,我的应用程序的反向代理服务器当前工作得更好userspace,我想在升级后继续使用此设置。

由于 Google Container Engine 托管 Kubernetes master,我无法直接访问该 VM,如何在不使用注释的情况下配置 kube-proxy 代理模式?理想情况下,我可以更改集群范围的设置,以便新节点(在自动缩放之后)也使用userspace代理模式。