k8s 和 nacos 如何优雅的停止 不宕机
nacos
Nacos是由阿里巴巴开源的服务治理中间件,集成了动态服务发现、配置管理和服务元数据管理功能,广泛应用于微服务架构中,简化服务治理过程。
项目地址:https://gitcode.com/gh_mirrors/na/nacos
免费下载资源
·
- Pod 设置为
Terminating
状态,并从所有服务的Endpoints列表中删除 - 此时,Pod停止,但是Pod中运行的容器不受影响 流量不在转发进来 但是已经进来的流量继续处理
- PreStop Hook被执行 nacos下线 后后面同步执行 所以可以sleep 25s 虽然经过测试好像没啥用 terminationGracePeriod 30s 这个时间管用 经过测试 无论怎么设置 sleep 容器都是到这个时间 才 kill掉
- preStop Hook发送容器特殊命令或者Http请求到Pod中
- 此时,Kubernetes将向Pod中的容器发送SIGTERM信号,这个信号即通知容器他们很快将进行关闭。
- Kubernetes等待优雅的终止
- 此时,Kubernetes等待指定的时间称为优雅终止宽限期。默认情况下,这是30秒(可以修改),值得注意的是,PreStop Hook和SIGTREM信息是属于并行执行,Kubernetes不会等待PreStop Hook完成。
nacos 下线代码
package com.hnradio.saas.cms.controller;
import com.alibaba.cloud.nacos.registry.NacosAutoServiceRegistration;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
@Slf4j
public class NacosController {
@Autowired
private NacosAutoServiceRegistration nacosAutoServiceRegistration;
@GetMapping(value = "/noauth/api/nacos/deregister")
public String deregisterInstance() {
log.info("---------------------开始停止pod到naocs--------------------");
nacosAutoServiceRegistration.stop();
log.info("---------------------结束停止pod到naocs--------------------");
return "success";
}
}
spec:
#在这个imagePullPolicy加 liftcyle
imagePullPolicy: Always
lifecycle:
preStop:
exec:
command:
- /bin/sh
- -c
- curl http://localhost:57010/cms/noauth/api/nacos/deregister
- sleep 25
name: cms-service
重启第一次 旧pod卸载 再次重启一次才行
GitHub 加速计划 / na / nacos
29.83 K
12.75 K
下载
Nacos是由阿里巴巴开源的服务治理中间件,集成了动态服务发现、配置管理和服务元数据管理功能,广泛应用于微服务架构中,简化服务治理过程。
最近提交(Master分支:2 个月前 )
4334cd16
* Support custom client configuration timeout.(#12748)
* Add UT.(#12748) 5 天前
b04d2266
9 天前
更多推荐
已为社区贡献1条内容
所有评论(0)