首页 > 解决方案 > Kubernetes 调度程序、API 服务器和控制器管理器容器未在集群中运行

问题描述

大约一个月前,我使用AWS Heptio-Kubernetes 快速入门在 AWS 中启动了一个 kubernetes 集群。直到最近,当我注意到我的一些 pod 的行为不正确,并且有些停留在“终止”状态或无法初始化时,我一直在快乐地安装应用程序。

在阅读了一些故障排除指南后,我意识到“kube-system”命名空间中的一些核心系统 pod 没有运行:kube-apiserver、kube-controller-manager 和 kube-scheduler。这可以解释为什么我的部署不再按预期扩展,以及为什么终止的 pod 不会被删除。但是,我仍然可以使用 kubectl 运行命令并查看集群状态。请看下面的截图:

kubernetes 系统集群状态

不知道从哪里开始减轻这种情况。我尝试重新启动服务器,我已经停止并使用 systemctl 重新启动 kubeadm,并且我尝试手动删除 /var/lib/kubelet/pods 中的 pod。任何帮助是极大的赞赏。

编辑:我刚刚意识到我的一些流量可能会被我们安装在工作节点上的容器安全工具(称为 Twistlock)阻止。我将与他们协商,因为它可能会阻止节点上的连接。

我意识到在为每个 kubernetes pod 收集日志时可能是连接问题,请参阅下面的日志摘录(我已经编辑了 IP):

kubectl logs kube-controller-manager-ip-*************.us-east-2.compute.internal -n kube-system
E0723 18:33:37.056730       1 route_controller.go:117] Couldn't reconcile node routes: error listing routes: unable to find route table for AWS cluster: kubernetes


kubectl -n kube-system logs kube-apiserver-ip-***************.us-east-2.compute.internal
I0723 18:38:23.380163       1 logs.go:49] http: TLS handshake error from ********: EOF
I0723 18:38:27.511654       1 logs.go:49] http: TLS handshake error from ********: EOF


kubectl -n kube-system logs kube-scheduler-ip-*******.us-east-2.compute.internal
E0723 15:31:54.397921       1 reflector.go:205] k8s.io/kubernetes/vendor/k8s.io/client-go/informers/factory.go:87: Failed to list *v1beta1.ReplicaSet: Get https://**********:6443/apis/extensions/v1beta1/replicasets?limit=500&resourceVersion=0: dial tcp ************: getsockopt: connection refused
E0723 15:31:54.398008       1 reflector.go:205] k8s.io/kubernetes/vendor/k8s.io/client-go/informers/factory.go:87: Failed to list *v1.Node: Get https://*********/api/v1/nodes?limit=500&resourceVersion=0: dial tcp ********:6443: getsockopt: connection refused
E0723 15:31:54.398075       1 reflector.go:205] k8s.io/kubernetes/vendor/k8s.io/client-go/informers/factory.go:87: Failed to list *v1.ReplicationController: Get https://************8:6443/api/v1/replicationcontrollers?limit=500&resourceVersion=0: dial tcp ***********:6443: getsockopt: connection refused
E0723 15:31:54.398207       1 reflector.go:205] k8s.io/kubernetes/vendor/k8s.io/client-go/informers/factory.go:87: Failed to list *v1.Service: Get https://************:6443/api/v1/services?limit=500&resourceVersion=0: dial tcp ***********:6443: getsockopt: connection refused

编辑:在联系我们的 Twistlock 供应商后,我已经确认连接问题不是由 Twistlock 引起的,因为还没有设置任何策略来实际阻止或隔离容器。我对集群的问题仍然存在。

标签: amazon-web-serviceskuberneteskubectlkubeadm

解决方案


推荐阅读