您现在的位置是:首页 >学无止境 >Nacos Docker & Kubernetes ⽣态网站首页学无止境

Nacos Docker & Kubernetes ⽣态

卡布奇诺-海晨 2023-05-27 12:00:02
简介Nacos Docker & Kubernetes ⽣态

博主介绍:✌全网粉丝4W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战、定制、远程,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌

博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+MySQL+Vue等前后端分离项目,可以在左边的分类专栏找到更多项目。《Uniapp项目案例》有几个有uniapp教程,企业实战开发。《微服务实战》专栏是本人的实战经验总结,《Spring家族及微服务系列》专注Spring、SpringMVC、SpringBoot、SpringCloud系列、Nacos等源码解读、热门面试题、架构设计等。除此之外还有不少文章等你来细细品味,更多惊喜等着你哦

🍅开源项目免费哦:点击这里克隆或者下载,即将发布Vue3版   🍅

🍅文末获取联系🍅精彩专栏推荐订阅👇🏻👇🏻 不然下次找不到哟

Java项目案例《100套》

https://blog.csdn.net/qq_57756904/category_12173599.html

 uniapp小程序《100套》

https://blog.csdn.net/qq_57756904/category_12199600.html

【微服务】Nacos为什么丢弃短连接(http)而选择拥抱长连接(gRPC)

目录

一、简介

二、Docker使用

1、单机启动

2、集群启动

2.1、创建⼀个 docker compose 编排文件, 命名为 nacos-embedded.yaml

2.2、下面我们再创建上面编排文件中引用到的环境变量文件 nacos-embedded.env

3、常⽤环境变量参数列表

三、Kubernetes 使用

1. 下载 nacos-k8s 工程

2. 进入 operator 目录, 直接使用 helm 方式安装 operator 

3. 查看集群部署例子

4. 创建 Nacos 集群,并验证

💖微服务实战

💖 Spring家族及微服务系列文章 


一、简介

nacos-docker nacos-k8s 是 Nacos 开发团队为支持用户容器化衍生的项目。其本质是为了帮助用户方便快捷的通过官方镜像在 Docker 或者 Kubernetes 进行部署。

二、Docker使用

注意:在写本文的当下, Nacos 官方 docker 镜像并不支持在 ARM 架构的机器上运行,比如 Macb
ook Pro M1(目前正在推进解决中)

1、单机启动

打开终端, 输入以下命令:
docker run --name nacos-quick -e MODE=standalone -p 8848:8848 -p 9848:9848
-d nacos/nacos-server:2.0.3
执行完命令, ⼀个单机版的 Nacos 就已经启动完成,其中 8848 是 Nacos 的应用端口, 9848 客户端和服务端通讯的 grpc 端口。
接下来我们可以通过在浏览器访问: http://localhost:8848 来进入 Nacos 控制台。

2、集群启动

除了单机的快速启动外, Nacos-Docker 还有关于集群演示的例子,下面将演示如何通过 docker-compose 编排进行 Nacos 在 Docker 的集群部署。
注意:本次演示中使用的数据库镜像进行 Nacos 数据库脚本初始化, 如果使用已有数据库镜像或者自定义数据库地址,请自己进行 数据库脚本 初始化。

2.1、创建⼀个 docker compose 编排文件, 命名为 nacos-embedded.yaml

version: "3" 
services:
  nacos1:
    hostname: nacos1
    container_name: nacos1
    image: nacos/nacos-server:latest
    volumes: 
      - ./cluster-logs/nacos1:/home/nacos/logs
    ports: 
      - "8848:8848"
      - "9848:9848"
      - "9555:9555" 
    env_file: 
      - ../env/nacos-embedded.env
    restart: always
  nacos2:
    hostname: nacos2
    image: nacos/nacos-server:latest
    container_name: nacos2
    volumes: 
      - ./cluster-logs/nacos2:/home/nacos/logs
    ports: 
      - "8849:8848"
      - "9849:9848" 
    env_file:
      - ../env/nacos-embedded.env
    restart: always
 nacos3:
   hostname: nacos3
   image: nacos/nacos-server:latest
   container_name: nacos3
   volumes: 
     - ./cluster-logs/nacos3:/home/nacos/logs
   ports: 
     - "8850:8848"
     - "9850:9848" 
   env_file: 
     - ../env/nacos-embedded.env
   restart: always
上述文件是⼀个标准的 DockerCompose 的容器编排文件, 我们定义了三个 Nacos 容器服务, 其中指定每个容器的名称, 以及服务的主机地址 (host),为每⼀个 Nacos 容器日志文件夹进行持久化, 并且指定他们的重启策略, 以及指定在容器中可以引用的环境变量文件 (nacos-embedded.env)。

2.2、下面我们再创建上面编排文件中引用到的环境变量文件 nacos-embedded.env

## 指定开启 Nacos 使用的网络模式
PREFER_HOST_MODE=hostname
## 开启嵌入式存储
EMBEDDED_STORAGE=embedded
## 集群节点列表
NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848
上面的环境变量文件中定义的变量, 会在容器启动的时候通过系统环境变量的方式注入到容器内部, 通过application.properties 的方式读入 Nacos 应用内部. 官方 docker 镜像已经预定义了许多环境变量参数供用户使用, 具体可以在附录中看到。
通过上述两步的配置,我们就完成了 Nacos 集群模式的启动, 打开终端工具:
docker compose -f nacos-embedded.yaml up -d
启动完成后, 跟单机模式⼀样可以通过在浏览器访问: http://localhost:8848 来进入 Nacos 控制
台。

3、常⽤环境变量参数列表

下面的参数都是可以在 Nacos Docker 容器中进行配置的, 如果下面参数都不满足的情况下,可以对 appliction.properties 文件进行挂载来完成参数的配置, 文件在容器的文件位置:/home/nacos/conf/applicaion.properties.

 

 

 

三、Kubernetes 使用

 

Nacos-k8s 项目包含了三种类型的部署方式, 原生部署、Helm 部署、以及利用 Operator 开发的
Nacos-Operator 部署, 本文演示如何通过 Operator 方式把 Nacos 集群在 Kubernetes 部署起
来。
Operator 相较于前两种方式的优势:

 

  • 通过 operator 快速构建 nacos 集群,指定简单的 cr.yaml 文件,既可以实现各种类型的 nacos 集群(数据库选型、standalone/cluster 模式等)
  •  增加⼀定的运维能力,在 status 中增加对 nacos 集群状态的检查、自动化运维等(后续扩展更多功能)
  • 支持 Helm 部署

1. 下载 nacos-k8s 工程

git clone https://github.com/nacos-group/nacos-k8s.git

2. 进入 operator 目录, 直接使用 helm 方式安装 operator 

helm install nacos-operator ./chart/nacos-operator

3. 查看集群部署例子

cat config/samples/nacos_cluster.yaml


apiVersion: nacos.io/v1alpha1
kind: Nacos
metadata:
  name: nacos
spec:
  type: cluster
  image: nacos/nacos-server:2.0.3
  replicas: 3

4. 创建 Nacos 集群,并验证

kubectl get po -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nacos-0 1/1 Running 0 111s 10.168.247.39 slave-100 <none> <none> nacos-1 1/1 Running 0 109s 10.168.152.186 master-212 <none> <none>
nacos-2 1/1 Running 0 108s 10.168.207.209 slave-214 <none> <none> kubectl get nacos
NAME REPLICAS READY TYPE DBTYPE VERSION CREATETIME
nacos 3 Running cluster 2.0.3 2021-03-14T09:33:09Z
kubectl get nacos nacos -o yaml -w
... 
status:
conditions: 
  - instance: 10.168.247.39
    nodeName: slave-100
    podName: nacos-0
    status: "true"
    type: leader
  - instance: 10.168.152.186
    nodeName: master-212
    podName: nacos-1
    status: "true"
    type: Followers
  - instance: 10.168.207.209
    nodeName: slave-214
    podName: nacos-2
    status: "true"
    type: Followers
  event: 
  - code: -1
    firstAppearTime: "2021-03-05T08:35:03Z"
    lastTransitionTime: "2021-03-05T08:35:06Z"
    message: The number of ready pods is too small[]
    status: false
  - code: 200
    firstAppearTime: "2021-03-05T08:36:09Z"
    lastTransitionTime: "2021-03-05T08:36:48Z" status: true
  phase: Running
  version: 2.0.3

开源项目即将发布Vue3版本

💖微服务实战

【微服务】SpringCloud的OpenFeign与Ribbon配置

集Oauth2+Jwt实现单点登录

Spring Cloud Alibaba微服务第29章之Rancher

Spring Cloud Alibaba微服务第27章之Jenkins

Spring Cloud Alibaba微服务第24章之Docker部署

Spring Cloud Alibaba微服务第23章之Oauth2授权码模式

Spring Cloud Alibaba微服务第22章之Oauth2

Spring Cloud Alibaba微服务第21章之分布式事务

Spring Cloud Alibaba微服务第18章之消息服务

Spring Cloud Alibaba微服务第16章之服务容错

Spring Cloud Alibaba微服务第14章之分库分表

Spring Cloud Alibaba微服务第11章之MyBatis-plus

Spring Cloud Alibaba微服务第8章之OpenFeign

Spring Cloud Alibaba微服务第7章之负载均衡Ribbon

SpringCloud Alibaba微服务第6章之Gateway

SpringCloud Alibaba微服务第4章之Nacos

SpringCloud Alibaba微服务开篇

💖 Spring家族及微服务系列文章 

【Spring】一文带你吃透IOC容器技术

【微服务】SpringCloud中OpenFeign请求处理及负载均衡流程

【微服务】SpringCloud中Ribbon的WeightedResponseTimeRule策略

【微服务】SpringCloud中Ribbon的轮询(RoundRobinRule)与重试(RetryRule)策略

【微服务】SpringCloud中Ribbon集成Eureka实现负载均衡

【微服务】SpringCloud轮询拉取注册表及服务发现源码解析

【微服务】SpringCloud微服务续约源码解析

【微服务】SpringCloud微服务注册源码解析

【微服务】Nacos2.x服务发现?RPC调用?重试机制?

【微服务】Nacos通知客户端服务变更以及重试机制

【微服务】Nacos服务发现源码分析

【微服务】SpringBoot监听器机制以及在Nacos中的应用

【微服务】Nacos服务端完成微服务注册以及健康检查流程

【微服务】Nacos客户端微服务注册原理流程

【微服务】SpringCloud中使用Ribbon实现负载均衡的原理

【微服务】SpringBoot启动流程注册FeignClient

【微服务】SpringBoot启动流程初始化OpenFeign的入口

Spring Bean的生命周期

Spring事务原理

SpringBoot自动装配原理机制及过程

SpringBoot获取处理器流程

SpringBoot中处理器映射关系注册流程

Spring5.x中Bean初始化流程

Spring中Bean定义的注册流程

Spring的处理器映射器与适配器的架构设计

SpringMVC执行流程图解及源码

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。