参考Nacos官网在Kubernetes上部署StatefulSets类型的Nacos(单机/集群)。
快速开始
为了理解各类参数的意义和用法,对nacos镜像内配置文件和启动脚本进行分析。
1.Clone 项目
git clone https://github.com/nacos-group/nacos-k8s.git
2.镜像说明
查看YAMlw文件可知官方教程使用的初始化容器镜像是:nacos/nacos-peer-finder-plugin:1.0,镜像则是:nacos/nacos-server:latest
- nacos-peer-finder-plugin
这个镜像唯一的作用是安装 peer-finder插件相关的脚本到指定目录(plugins/peer-finder/),结束后就死亡。peer-finder插件的功能是轮询(1秒)指定的k8s service ,如果service下面的pod地址列表发生变化,则重新写入Cluster.conf文件,以便实现nacos的动态扩容。 - nacos-server
nacos本体镜像,镜像启动时,除了启动自身的服务外,还会同时调用peer-finder-plugin-install 安装好的脚本启动peer-finder。
3.nacos-server镜像启动脚本及配置文件
这里先跳过部署的内容,先来看看部署好以后镜像的启动脚本,主要看一下${}的地方,这些是部署时根据需要可以传入的一些配置信息:
- 启动脚本
容器内文件位置:/home/nacos/bin/docker-startup.sh
#!/bin/bash
#set -x 执行指令后,会先显示该指令及所下的参数。
set -x
# 这里定义了一些环境变量
export DEFAULT_SEARCH_LOCATIONS="classpath:/,classpath:/config/,file:./,file:./config/"
export CUSTOM_SEARCH_LOCATIONS=${DEFAULT_SEARCH_LOCATIONS},file:${BASE_DIR}/conf/,${BASE_DIR}/init.d/
export CUSTOM_SEARCH_NAMES="application,custom"
export MEMBER_LIST=""
# 这里定义了插件的目录
PLUGINS_DIR="/home/nacos/plugins/peer-finder"
# 如果目录不存在 则加载${NACOS_SERVERS}到$CLUSTER_CONF 存在则启动插件
function print_servers(){
if [[ ! -d "${PLUGINS_DIR}" ]]; then
echo "" > "$CLUSTER_CONF"
for server in ${NACOS_SERVERS}; do
echo "$server" >> "$CLUSTER_CONF"
done
else
bash $PLUGINS_DIR/plugin.sh
sleep 30
fi
}
#===========================================================================================
# JVM