【问题标题】:How fix this error "watch chan error: etcdserver: mvcc: required revision has been compacted"?如何修复此错误“watch chan error: etcdserver: mvcc: required revision has been compacted”?
【发布时间】:2017-10-16 04:45:47
【问题描述】:

我有一个带有两个节点的 kubernetes 集群,以及两个用于 etcd 的节点,我也在为我的 kubernetes 使用身份验证。当我运行这个命令时:kubectl get cs 我得到这个输出:

NAME                 STATUS      MESSAGE                                                                                        ERROR
scheduler            Unhealthy   Get http://127.0.0.1:10251/healthz: dial tcp 127.0.0.1:10251: getsockopt: connection refused   
controller-manager   Healthy     ok                                                                                             
etcd-1               Healthy     {"health": "true"}                                                                             
etcd-0               Healthy     {"health": "true"}   

当我检查我的 kube-apiserver 的日志时,我收到了这个错误:

E0516 22:28:14.312855       1 watcher.go:188] watch chan error: etcdserver: mvcc: required revision has been compacted

这个错误是什么,我该如何解决这个问题?

我的 kube-controller-manager 也收到此警告:

W0516 22:28:14.314137       1 reflector.go:323] k8s.io/kubernetes/pkg/controller/garbagecollector/graph_builder.go:192: watch of <nil> ended with: etcdserver: mvcc: required revision has been compacted

我的 kube-scheduler:

W0516 10:43:38.097940       1 reflector.go:323] k8s.io/kubernetes/plugin/pkg/scheduler/factory/factory.go:451: watch of *v1.Pod ended with: too old resource version: 2153673 (2154157)

我的 kubernetes 版本是 1.6.3

非常感谢您的帮助:)

【问题讨论】:

    标签: kubernetes etcd kubernetes-health-check


    【解决方案1】:

    将 etcd 版本更新到 3.0.11 或更高版本

    https://github.com/kubernetes/kubernetes/issues/45506

    【讨论】:

    • 感谢 Arika,此更新修复了“资源版本太旧”的错误,但我仍然收到此错误“127.0.0.1:10251/healthz: dial tcp 127.0.0.1:10251: getsockopt: connection denied”,我更改了我的 kube-scheduler 文件中 livenessProbe 主机 IP 为 0.0.0.0 但我不知道为什么 kube-scheduler 仍然坚持使用 127.0.0.1?你有什么想法吗?谢谢!
    • 可能是 pkg/registry/core/rest/storage_core.go 中的硬代码。 10251 已被调度程序打开,或者您是否在某些代理后面?
    • 哦,我找到了!我错误地在容器部分的命令部分下为我的端口添加了另一个开关containers: - name: kube-scheduler image: gcr.io/google-containers/kube-scheduler:v1.6.3 command: - kube-scheduler - --address=0.0.0.0 **- --port=7251** - --master=http://srv2:8080 - --v=1 livenessProbe: httpGet: host: 0.0.0.0 path: /healthz port: 10251 initialDelaySeconds: 15 timeoutSeconds: 15,我删除了它,一切正常,我的集群很健康。感谢您的帮助:)
    猜你喜欢
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 2011-10-26
    • 1970-01-01
    • 2022-09-28
    • 2013-05-04
    • 1970-01-01
    相关资源
    最近更新 更多