这种模式与传统的非 Kubernetes 部署并无太大差异,如下图所示,仍然使用 Nacos 或者 Zookeeper 等作为注册中心,只不过将 Kubernetes 作为应用生命周期调度的底层平台。
在 Kubernetes 模式下,我们推荐使用 dubboctl
快速安装 Nacos、dubbo-control-plane、prometheus 等组件:
$ dubboctl install --profile=demo
我们仍然以 快速开始 中的项目为例,演示应用打包部署的具体步骤。
首先,克隆示例项目到本地:
$ git clone -b main --depth 1 https://github.com/apache/dubbo-samples
切换到示例目录:
$ cd dubbo-samples/11-quickstart
$ dubboctl build
# 具体写一下推送到 docker 仓库
$ dubboctl deploy
以下是生成的完整 Kubernetes manifests:
执行以下命令,将应用部署到 Kubernetes 集群:
$ kubectl apply -f xxx.yml
如果之前已经使用 dubboctl
安装 dubbo-control-plane,则可以通过以下方式查看服务部署情况:
$ kubectl port-forward
访问 http://xxx
查看服务部署详情。
如上面的架构图所示,我们仍然使用 Nacos 作为注册中心,因此,与传统 Linux 部署模式类似,控制实例发布到注册中心、实例从注册中心摘除的时机,是我们实现优雅上下线的关键:
prestop
确保先从注册中心摘除实例注册信息,之后再进入进程销毁过程。优雅下线摘除实例的示例配置:
preStop:
exec:
command: ["/bin/sh","-c","curl /offline; sleep 10"]