k8s下的eureak服务注册失败(cannot execute request on any known server)解决

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: k8s下的eureak服务注册失败(cannot execute request on any known server)解决

问题场景


  项目使用了Spring Cloud 微服务框架并利用kubernetes(简称k8s)进行容器编排的。有一天查看Eureka Server监控页面,发现有个serviceid对应的服务副本数只有2个,正常应该是3个的,可是只注册了2个。


 

 

  在Master上使用kubectl logs命令对这个模块的pod进行日志查看,发现有2个pod运行正常,但是另外一个pod的日志一直在报:cannot execute request on any known server。之前还是好好的,怎么突然就不行了,其他2个pod运行正常,也能注册上,说明该模块的镜像和eureka server是没有问题的。而服务的注册是要发送网络请求进行通信的,因此很有可能是该pod的网络出现了问题(业务模块运行在docker容器内),导致有一个注册不上。为此,有以下2个办法可以解决注册不上的问题:


1、使用 kubectl 重新创建该服务对应的Deployment


#删除 deployment
kubectl delete -f xxx-dep.yaml
# 创建deployment
kubectl create -f xxx-dep.yaml


2、找到运行异常pod的服务器并使用docker命令停止容器


#查找特定容器信息
docker ps|grep xxxx
# 停止该容器
docker stop 容器ID
#再次查看特定容器信息
docker ps|grep xxxx


  虽然已经调用过停止命令,但是再次使用docker ps命令查看该容器时,你会发现相同名字的容器依然在。这是因为k8s会自动重新


创建pod中的这个业务容器(pod是k8s调度的最小单元,一个pod通常由一个或多个业务容器+pause容器组成),这个就是k8s作为容器编排工具的强大之处。


  此时刷新Eureka Server的监控页面,发现又成功注册上来了一个服务,达到了3个,注册失败问题解决。


从对用户的影响大小角度来看,推荐使用第二种方式,服务器开销最小,又不会影响原先2个服务。如果重新创建deployment的话,将导致有一段时间该模块无法提供服务。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
3月前
|
Kubernetes 应用服务中间件 Docker
Kubernetes学习-集群搭建篇(二) 部署Node服务,启动JNI网络插件
Kubernetes学习-集群搭建篇(二) 部署Node服务,启动JNI网络插件
|
4天前
|
Kubernetes Serverless API
Kubernetes 的架构问题之利用不可变性来最小化对API Server的访问如何解决
Kubernetes 的架构问题之利用不可变性来最小化对API Server的访问如何解决
24 7
|
4天前
|
Kubernetes 安全 Serverless
Kubernetes 的架构问题之Serverless Container中提供对外服务如何解决
Kubernetes 的架构问题之Serverless Container中提供对外服务如何解决
23 5
|
13天前
|
Kubernetes Java 开发工具
Kubernetes部署项目流程(新手上线新版本服务整个流程)
【8月更文挑战第1天】Kubernetes(k8s)新手上线新版本服务整个流程
|
3天前
|
Kubernetes Nacos 微服务
【技术难题破解】Nacos v2.2.3 + K8s 微服务注册:强制删除 Pod 却不消失?!7步排查法+实战代码,手把手教你解决Nacos Pod僵死问题,让服务瞬间满血复活!
【8月更文挑战第15天】Nacos作为微服务注册与配置中心受到欢迎,但有时会遇到“v2.2.3 k8s 微服务注册nacos强制删除 pod不消失”的问题。本文介绍此现象及其解决方法,帮助开发者确保服务稳定运行。首先需检查Pod状态与事件、配置文件及Nacos配置,确认无误后可调整Pod生命周期管理,并检查Kubernetes版本兼容性。若问题持续,考虑使用Finalizers、审查Nacos日志或借助Kubernetes诊断工具。必要时,可尝试手动强制删除Pod。通过系统排查,通常能有效解决此问题。
|
4天前
|
运维 Kubernetes Cloud Native
Kubernetes云原生问题之在托管Kubernetes服务中云服务商和用户的运维责任划分如何解决
Kubernetes云原生问题之在托管Kubernetes服务中云服务商和用户的运维责任划分如何解决
16 0
|
5天前
|
Kubernetes 容器
Kubernetes(K8S) 配置静态资源服务
Kubernetes(K8S) 配置静态资源服务
11 0
|
11天前
|
Kubernetes 网络协议 容器
[kubernetes]服务健康检查
[kubernetes]服务健康检查
|
11天前
|
Prometheus Kubernetes 网络协议
[kubernetes]集群中部署CoreDNS服务
[kubernetes]集群中部署CoreDNS服务
|
2月前
|
Kubernetes Ubuntu Linux
k8s部署grafana beyla实现app应用服务依赖图可观测
k8s部署grafana beyla实现app应用服务依赖图可观测
42 4