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.

Nacos Docker & Kubernetes ⽣态_第1张图片

Nacos Docker & Kubernetes ⽣态_第2张图片Nacos Docker & Kubernetes ⽣态_第3张图片

 Nacos Docker & Kubernetes ⽣态_第4张图片

Nacos Docker & Kubernetes ⽣态_第5张图片

Nacos Docker & Kubernetes ⽣态_第6张图片

 Nacos Docker & Kubernetes ⽣态_第7张图片

Nacos Docker & Kubernetes ⽣态_第8张图片Nacos Docker & Kubernetes ⽣态_第9张图片

 Nacos Docker & Kubernetes ⽣态_第10张图片

三、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   nacos-1 1/1 Running 0 109s 10.168.152.186 master-212  
nacos-2 1/1 Running 0 108s 10.168.207.209 slave-214   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执行流程图解及源码

你可能感兴趣的:(SpringCloud,kubernetes,docker,java)