您现在的位置是:首页 >学无止境 >Nacos Docker & Kubernetes ⽣态网站首页学无止境
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套》
目录
2.1、创建⼀个 docker compose 编排文件, 命名为 nacos-embedded.yaml
2.2、下面我们再创建上面编排文件中引用到的环境变量文件 nacos-embedded.env
2. 进入 operator 目录, 直接使用 helm 方式安装 operator
一、简介
nacos-docker 和 nacos-k8s 是 Nacos 开发团队为支持用户容器化衍生的项目。其本质是为了帮助用户方便快捷的通过官方镜像在 Docker 或者 Kubernetes 进行部署。
二、Docker使用
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
3、常⽤环境变量参数列表
下面的参数都是可以在 Nacos Docker 容器中进行配置的, 如果下面参数都不满足的情况下,可以对 appliction.properties 文件进行挂载来完成参数的配置, 文件在容器的文件位置:/home/nacos/conf/applicaion.properties.
三、Kubernetes 使用
- 通过 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配置
✨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
💖 Spring家族及微服务系列文章
✨【微服务】SpringCloud中OpenFeign请求处理及负载均衡流程
✨【微服务】SpringCloud中Ribbon的WeightedResponseTimeRule策略
✨【微服务】SpringCloud中Ribbon的轮询(RoundRobinRule)与重试(RetryRule)策略
✨【微服务】SpringCloud中Ribbon集成Eureka实现负载均衡
✨【微服务】SpringCloud轮询拉取注册表及服务发现源码解析
✨【微服务】Nacos2.x服务发现?RPC调用?重试机制?
✨【微服务】SpringBoot监听器机制以及在Nacos中的应用
✨【微服务】SpringCloud中使用Ribbon实现负载均衡的原理
✨【微服务】SpringBoot启动流程注册FeignClient