k8s使用headless部署nacos集群

本文介绍了如何在Kubernetes(k8s)环境中使用StatefulSet搭建Nacos集群,详细阐述了创建headless服务、配置Nacos集群、集群验证以及创建Service服务的步骤。通过这种方式,确保了在Pod重新调度后Nacos集群的稳定性和网络标识不变。
摘要由CSDN通过智能技术生成

一、写在前面

nacos是目前比较流行的一个框架,是阿里开源的一个框架。可用于配置中心注册中心

配置中心:就是说nacos,可以帮我们管理项目中,需要用到的配置文件,这些配置都可以交给nacos进行管理。配置中心可以实现多个环境的配置管理,多个环境之间配置的动态切换...

注册中心:就是说,我们的一些微服务可以注册到nacos上,然后其他的微服务就能发现,也就能调用到我们的服务。这就是我们常说的服务发现服务注册。当然,如果我们的微服务宕掉了,nacos也可以帮我们检测到,阻止向不健康的微服务发送请求。这就是我们常说的健康检查

基本上大部分得微服务框架,都会选择nacos,毕竟省事省心呀!!!

万事开头难,那今天我们就来先跑起nacos。本地跑nacos,那当然是很简单啦。

我们来学点高级得:k8s环境下,部署nacos集群

二、nacos集群搭建

RC、Deployment、DaemonSet都是面向无状态的服务,它们所管理的Pod的IP、名字,启停顺序等都是随机的,而StatefulSet是什么?顾名思义,有状态的集合,管理所有有状态的服务,比如MySQL、MongoDB集群等。

StatefulSet本质上是Deployment的一种变体,在v1.9版本中已成为GA版本,它为了解决有状态服务的问题,它所管理的Pod拥有固定的Pod名称启停顺序,在StatefulSet中,Pod名字称为网络标识(hostname),还必须要用到共享存储。

在Deployment中,与之对应的服务是service,而在StatefulSet中与之对应的headless service,headless service,即无头服务,与service的区别就是它没有Cluster IP,解析它的名称时将返回该Headless Service对应的全部Pod的Endpoint列表。

除此之外,StatefulSet在Headless Service的基础上又为StatefulSet控制的每个Pod副本创建了一个DNS域名,这个域名的格式为:

$(pod.name).$(headless server.name).${namespace}.svc.cluster.local
复制代码

也即是说,对于有状态服务,我们最好使用固定的网络标识(如域名信息)来标记节点,当然这也需要应用程序的支持(如Zookeeper就支持在配置文件中写入主机域名)。

StatefulSet基于Headless Service(即没有Cluster IP的Service)为Pod实现了稳定的网络标志(包括Pod的hostname和DNS Records),在Pod重新调度后也保持不变。

以下为使用StatefulSet部署Nacos的架构,每一个pod节点,都作为StatefulSet的一个副本,对外暴露为一个Service,接受客户端请求。

2.1创建headless服务

Headless service是StatefulSet实现稳定网络标识的基础。

vi nacos-hs.yaml

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值