当前位置:首页 > 数码 > 分步实现指南-基于Kubernetes构建Nacos高可用集群 (分步实施的步骤)

分步实现指南-基于Kubernetes构建Nacos高可用集群 (分步实施的步骤)

admin5个月前 (04-13)数码27

前提条件

  • 安装并配置 Kubernetes 集群。
  • 准备持久化存储(如 NFS、PV 等)用于保存 Nacos 数据。

修改 Nacos 配置

按照以下步骤修改 Nacos 配置,以指定持久化存储和命名空间:

  1. 修改 $nacos-no-pvc-ingress.yaml 文件,将以下部分的 NACOS_SERVERS 配置替换为与 Nacos 部署命名空间一致的命名空间:
  2. name: NACOS_SERVERS value: nacos.dev
  3. 执行创建命令:
  4. kubectl apply -f nacos-pvc-nfs.yaml -n devservice
  5. 注意:请根据实际情况替换 devservice 命名空间。

部署 Nacos

执行以下命令部署 Nacos:

kubectl apply -f nacos-pvc-nfs.yaml -n devservice

查看 Pod 状态

执行以下命令查看 Pod 状态:

kubectl get pods -n devservice

访问验证

端口转发

您可以通过端口转发进行暴露并访问 Nacos:

kubectl port-forward -n devservice nacos-0 8848:8848 --address 0.0.0.0

访问 http:// 转发机器IP:8848,默认帐号/密码:nacos/nacos。

Ingress

您也可以通过 Ingress 暴露并访问 Nacos,详细步骤可参考其他文档。

集群状态

完成部署后,您可以访问 Nacos 界面查看集群状态。

SpringCloud 微服务容器化部署

您可以参考 SpringCloud 微服务容器化部署 文档进行微服务部署。

部署成功

恭喜,您已成功部署了 Nacos 集群!

注意

  • 请确保使用与 Nacos 部署命名空间一致的命名空间配置 NACOS_SERVERS。
  • 默认端口为 8848,您可以在访问时根据实际情况修改端口。

高可用kubernetes集群搭建

架构说明

Kubernetes集群组件:

k8s集群高可用,一般是etcd,kube-apiserver,kube-controller-manager,kube-scheduler服务组件的高可用。

规划:

3个master节点,2个worker节点,使用keepalived+haproxy做高可用

一、前期环境准备

Kubernetes 1.8开始要求关闭系统的Swap,如果不关闭,默认配置下kubelet将无法启动。

方法一 通过kubelet的启动参数–fail-swap-on=false更改这个限制。

方法二 关闭系统的Swap, swapoff -a

修改/etc/fstab文件,注释掉SWAP的自动挂载,使用free -m确认swap已经关闭。

二、docker安装

安装docker-ce,所有节点都要安装

yum-utils 提供yum-config-manager工具,devicemapper存储需要device-mapper-persistent-data和lvm2

添加yum源仓库

官方仓库

安装docker

配置docker中国镜像加速器,修改cgroup driver为systemd,k8s建议使用systemd,配置后重启docker

三、安装haproxy,keepalived

安装haproxy和keepalived,实现kube-apiserver高可用

psmisc提供killall命令

配置haproxy

配置keepalived

注意:在另外两个节点,设置state为BACKUP,priority设置为110,100

启动所有节点的haproxy和keepalived

查看VIP

注意,使用ifconfig命令是看不到的,必须使用ip addr命令

这时候vip在130.252.10.235上,我们关闭235上的haproxy,验证vip是否会漂移到其他节点

四、kubeadm/kubelet/kubectl安装

master节点安装:kubeadm、kubelet、kubectl

分步实现指南

node节点安装:kubeadm、kubelet

安装

五、使用kubeadm初始化cluster

step1 准备初始化配置文件

根据自己的环境修改配置.

step2 处理kubernetes依赖的镜像

master需要的镜像为

node节点需要的镜像为

查看需要的镜像版本

拉取镜像

六、初始化第一个master节点

注意:如果你禁用了swap分区,则不需要加--ignore-preflight-errors=Swap

配置kubectl

启用kubectl的自动补全命令

七、安装Pod网络flannel

八、将其他master节点添加到cluster

将node1证书文件复制到其他master节点node2,node3

分别在master1和master2 执行下面的命令

九、将node节点添加到cluster

十、检查集群运行 健康

在master节点查看节点状态

所有的节点都是NotReady,这是因为每个节点都需要启动若干组件,这些组件都是在pod中运行,需要从Google下载镜像

查看pod的状态

查看集群信息

查看etcd集群

查看集群是否 健康

查看集群的leader

注意 :因为是3个节点的ETCD集群,所以只能有一个宕机,如果同时又2个节点宕机,则会出现问题Unable to connect to the server: EOF

etd集群需要大多数节点(仲裁)才能就集群状态的更新达成一致,所以ETCD集群节点一般是奇数个,而且只有存活节点个数大于下线节 点个数才能正常运行,5个节点的ETCD集群,允许同时2个节点故障。

一般建议5个节点,超过五个虽然容错性更高,但是集群写入性就会差。

检查IPVS

nacos简介以及作为注册/配置中心与Eureka、apollo的选型比较

Nacos是以服务为主要服务对象的中间件,Nacos支持所有主流的服务发现、配置和管理。

Nacos主要提供以下四大功能:

Nacos支持加权路由,使您可以更轻松地在数据中心的生产环境中实施中间层负载平衡,灵活的路由策略,流量控制和简单的DNS解析服务。它可以帮助您轻松实现基于DNS的服务发现,并防止应用程序耦合到特定于供应商的服务发现API。

Nacos提供易于使用的服务仪表板,可帮助您管理服务元数据,配置,kubernetes DNS,服务运行状况和指标统计。

nacos具有Apollo大部分功能,最重要的是配置中心与注册中心打通,可以省去我们在微服务治理方面 的一些投入(比如通过动态配置来启停线程池等操作)。

初步结论为:使用Nacos代替Eureka和apollo,主要理由为: 相比与Eureka: (1)Nacos具备服务优雅上下线和流量管理(API+后台管理页面),而Eureka的后台页面仅供展示,需要使用api操作上下线且不具备流量管理功能。 (2)从部署来看,Nacos整合了注册中心、配置中心功能,把原来两套集群整合成一套,简化了部署维护 (3)从长远来看,Eureka开源工作已停止,后续不再有更新和维护,而Nacos在以后的版本会支持SpringCLoud+Kubernetes的组合,填补 2 者的鸿沟,在两套体系下可以采用同一套服务发现和配置管理的解决方案,这将大大的简化使用和维护的成本。同时来说,Nacos 计划实现 Service Mesh,是未来微服务的趋势 (4)从伸缩性和扩展性来看Nacos支持跨注册中心同步,而Eureka不支持,且在伸缩扩容方面,Nacos比Eureka更优(nacos支持大数量级的集群)。 (5)Nacos具有分组隔离功能,一套Nacos集群可以支撑多项目、多环境。

相比于apollo (1) Nacos部署简化,Nacos整合了注册中心、配置中心功能,且部署相比apollo简单,方便管理和监控。 (2) apollo容器化较困难,Nacos有官网的镜像可以直接部署,总体来说,Nacos比apollo更符合KISS原则 (3)性能方面,Nacos读写tps比apollo稍强一些

结论:使用Nacos代替Eureka和apollo

系统模块架构

Nacos提供DNS-F功能 DNS-F落地的技术价值

阿里巴巴、虎牙直播、中国工商银行、爱奇艺、中国平安、平安科技、浙江农信、贝壳、丰巢、百世快递、汽车之家等

完整列表:

免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。

标签: Kubernetes

“分步实现指南-基于Kubernetes构建Nacos高可用集群 (分步实施的步骤)” 的相关文章

Kubernetes-集群的十年历程-管理-踩过的十个大坑 (kubernetes)

Kubernetes-集群的十年历程-管理-踩过的十个大坑 (kubernetes)

Kubernetes是容器技术的绝对王者,它允许我们在YAML文件中描述应用程序的外观,然后Kubernetes会完成其余的工作。 高效管理Kubernetes集群至关重要。本文总结了管理K...

Kubernetes-Kubernetes-深化了解-中的网络原理和最佳通常-网络模型综合指南 (kubernetes与docker的关系)

Kubernetes-Kubernetes-深化了解-中的网络原理和最佳通常-网络模型综合指南 (kubernetes与docker的关系)

这篇详细的博文讨论了Kubees网络的复杂性,提供了关于如何在容器化环境中确保高效和安保通讯的见地。 译自NavigatingtheNetwork:AComprehensiveGuideto...

b-b-href=-a-a-开发者Kubernetes懒人指南 (b-b-href=-a-a-开发者Kubernetes懒人指南)

b-b-href=-a-a-开发者Kubernetes懒人指南 (b-b-href=-a-a-开发者Kubernetes懒人指南)

你可以将本文作为开发者极速了解Kubees的指南。从基础常识到更初级的主题,如HelmChart,以及一切这些如何影响你作为开发者。 译自KubernetesforLazyDeveloper...

优秀Kubernetes工具的最终指南 (优秀库)

优秀Kubernetes工具的最终指南 (优秀库)

引言 Kubernetes 是用于管理容器化应用程序编排的领先平台。它提供了出色的功能,例如自动扩展、自动修复和负载平衡,这些功能使其成为软件工程师的首选解决方案。Kubernetes 的管理可...

深入了解-不够用时-调试的救星-superdebug-当debug-Kubernetes (深入了解不够)

深入了解-不够用时-调试的救星-superdebug-当debug-Kubernetes (深入了解不够)

kubectlexec 命令的限制 kubectlexec 命令用于在正在运行的 Pod 中执行命令,但它在 Kubernetes 中有以下限制: 不能以 root 身份运行:容...

Kubernetes-治理容器化运行程序-经常使用 (kubernetes与docker的关系)

Kubernetes-治理容器化运行程序-经常使用 (kubernetes与docker的关系)

引见 Kube-downscaler是一款开源工具,准许用户定义Kubees中pod资源智能缩减的时期。这有助于经过增加非高峰时段的资源经常使用量来降落基础设备老本。 在本文中,咱们将...

100个常用命令-Kubernetes-提升集群管理和故障排除效率 (100个常用的关联词)

100个常用命令-Kubernetes-提升集群管理和故障排除效率 (100个常用的关联词)

本指南提供了全面的命令清单,用于诊断 Kubernetes 集群以及在其中运行的应用程序。请在使用这些命令时务必将占位符(如 <namespace> 和...

LTS-现状-常年支持-的-Kubernetes-解谜与揭秘 (ltsg)

LTS-现状-常年支持-的-Kubernetes-解谜与揭秘 (ltsg)

从一个幽默的疑问引出很多人都在关注的KubeesLTS的疑问。 幽默的疑问 2019年,一个名为apiserverLoopbackClientServercertexpire...