【问题标题】:Kubectl is working but I can't access any of the componentsKubectl 正在工作,但我无法访问任何组件
【发布时间】:2019-09-26 09:40:18
【问题描述】:

我们有一个小型私有 k8s 集群,直到今天早上一切正常,但截至今天早上,只有 kubectl 正常工作,没有流量通过。

我的意思是我可以启动新的部署,杀死它们等等,我可以看到它们已经启动并运行

但是当我想通过 http、amqp 等访问它们时,我不能。
我正在查看我们的 nginx 日志并尝试转到主页,但 nginx 没有登录,浏览器中也没有加载任何内容,这意味着 nginx 没有收到流量。
我们使用 Wea​​ve 网络作为我们的 CNI。

我检查了 dns 日志并对其进行了测试,dns 正在运行。我不知道从哪里开始寻找解决这个问题,有什么建议吗?

更新

几个小时后问题几乎解决了,现在我可以访问我的应用程序,但我想问另一个与此非常相关的问题:

有没有办法让我们检测到问题是因为网络问题还是来自集群网络(内部 k8s 网络)?我问这个是因为过去我遇到了 k8s dns 的问题,而这次我认为 k8s CNI 有问题。

更新 2

现在我在 weave 中看到了这个错误:

ERRO: 2019/09/27 11:10:03.358321 Captured frame from MAC (d2:14:2a:47:62:d9) to (02:01:5b:b9:8e:fd) associated with another peer 4a:8d:75:d7:59:ff(serflex-argus-2)

还有我的环境:

  • Kubernetes 版本:
Client Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.1", GitCommit:"b7394102d6ef778017f2ca4046abbaa23b88c290", GitTreeState:"clean", BuildDate:"2019-04-08T17:11:31Z", GoVersion:"go1.12.1", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.3", GitCommit:"2d3c76f9091b6bec110a5e63777c332469e0cba2", GitTreeState:"clean", BuildDate:"2019-08-19T11:05:50Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"linux/amd64"}
  • 云提供商或硬件配置: 内部私有集群包含 5 个节点并使用 kubeadm 进行设置。

  • 操作系统(例如:cat /etc/os-release): 所有机器都运行 Ubuntu 18.04.3

  • 内核(例如 uname -a): Linux k8s-master 4.15.0-62-generic #69-Ubuntu SMP Wed Sep 4 20:55:53 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
  • 安装工具: kubeadm
  • 网络插件和版本 (weave status):
/home/weave # ./weave --local status
        Version: 2.5.2 (up to date; next check at 2019/09/27 15:12:49)
        Service: router
       Protocol: weave 1..2
           Name: 02:01:5b:b9:8e:fd(k8s-master)
     Encryption: disabled
  PeerDiscovery: enabled
        Targets: 1
    Connections: 5 (4 established, 1 failed)
          Peers: 5 (with 20 established connections)
 TrustedSubnets: none
        Service: ipam
         Status: ready
  • Docker 版本: Docker version 19.03.2, build 6a30dfc

【问题讨论】:

  • 你能在 kubernetes 机器上使用 curl 访问你的应用吗?听起来像是网络问题。
  • 我想过,但我不确定这是我们私有数据中心的网络问题还是与 Weavenet 有关。随机我可以通过 curl 或浏览器访问组件,这就像 60% 的失败。
  • kubectl get pods 应该能够分辨出它是什么服务类型。根据您可以访问的服务
  • 我认为你没有得到问题。问题不在于服务类型,我知道我们有什么服务类型以及完整的详细信息,因为我编写了它们并设置了集群。问题是从今天早上开始,集群网络开始面临问题,无论是我的平台还是 k8s pod 中的任何 pod 都没有任何错误。
  • 嗨@AVarf,你能分享一些dns并从你的集群编织网络服务日志吗?您可以通过从 kube-system 命名空间获取 pod 来做到这一点。 kubectl get pods -n kube-system 然后使用以下命令打印日志:kubectl logs <pod-name> -n kube-system

标签: kubernetes weave


【解决方案1】:

我找不到这个问题的解决方案,我不得不拆除集群并重新创建它,但这次我使用了 Calico,运行一周后没有问题。

我认为唯一可能导致问题的是 Weave 的 200Mb 内存限制以及我的 5 个 Weave pod 中有 4 个达到该限制的事实,而且在他们的 github 上,我发现 Weave 存在 memleak 问题因此,我决定更改 CNI。

【讨论】:

    猜你喜欢
    • 2016-09-29
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多