云原生实战课大纲<2>

我们pod的数据挂载文件可以使用 pv-pvc的方式
1. 创建pv池 
2. 在pv池中创建pv,并且设置pv的模式
3. 编写pod 写对应的pvc 申请书 就可以了

这就是我们k8s中的pv和pvc
基于pv池创建pv的时候会有容量限制

呢么关于配置呢,我们以前会有这种场景 比如说在docker中我们会把配置文件-v的形式挂载出来,比如说nginx的conf文件,这样我修改了nginx的配置文件,我就nginx就可以拿到最新的数据
在k8s中怎么把配置文件挂载出来,挂载目录我们可以使用pv=pvc的方式,但是我们现在要挂载配置文件 我们可以使用configMap的方式
k8s 中专门有一个东西 configmap ,比如说redis吧

云原生实战课大纲<2>_第1张图片

我编写一个redis.conf文件,基于redis.conf 创建配置集 configMap  存储在k8s中的etcd
k8s中所有数据都保存在etcd中 

云原生实战课大纲<2>_第2张图片
云原生实战课大纲<2>_第3张图片

这样就可以看到这个configmap的配置了,创建pod 的时候挂载这个configmap就可以了

云原生实战课大纲<2>_第4张图片

我们启动redis的时候会挂载2个 一个configMap挂载他的配置文件 一个 pv-pvc的方式
会挂载他的数据文件

云原生实战课大纲<2>_第5张图片

我以后启动redis mysql mq 这些 我启动任何的中间件 我把他的配置文件,我在k8s 的配置集合,我以后在pod中引用配置集合
我们使用k8s 的配置集还有一个优点就是 如果我k8s  在外面把配置文件改了 
他在内部依然生效

secret是k8s中用来保存敏感信息的 比如说 密码 令牌 密钥.和configmap差不多,只不过configmap用来保存配置文件  等等这些明文信息
secret的典型场景,我们现在要启动一个pod,pod启动要下载镜像,我们以前下载从docker hub 下的, 如果从私有镜像下载
当我想要部署的时候,我从私有镜像仓库拉取镜像,我就的要有个账号和密码,这些账号和密码如果写在pod中就会不安全
也容易泄露
k8s 可以使用secret的方式 把docker登录的信息保存起来,我以后下载镜像的时候直接用就可以了
当然 我们可以看到这个是密文的
 如果是confifMap  data:value 此时是明文的的 ,secret类似于configmap的使用方法差不多
 如果想要使用secret的话,我们只需要引用一下就可以了
 

云原生实战课大纲<2>_第6张图片
云原生实战课大纲<2>_第7张图片
云原生实战课大纲<2>_第8张图片

我可以使用这个密钥来下载镜像

云原生实战课大纲<2>_第9张图片

我pod 只需要下载镜像的时候引用这个secret就可以了,因为这个密钥信息 之前已经创建好了
然后再create -f pod.yaml  就可以下载到了
这是我们secret的核心实战场景
kusphere kubeshere是k8s的可视化界面
kusphere 的安装步骤
安装docker 
安装k8s
kubesphere前置环境
安装kubesphere
kubesphere是个多租户用户的系统,使用命名空间来做区分
如何在kubesphere平台中部署一些应用  比如说我们先部署一个中间件
我们在云上想要部署应用  我的这个应用将会以什么样的方式部署
其实Kubesphere就是k8s的可视化页面  包括创建deploy pod 以及service这些
我们可以先部署mysql ,这是我们以docker的形式部署的mysql
中间件的配置文件可以以配置集configMap的形式做出来

云原生实战课大纲<2>_第10张图片
云原生实战课大纲<2>_第11张图片

先创建mysql-conf,mysql的配置文件mysql-conf 挂载出去,key为my.conf 例如

云原生实战课大纲<2>_第12张图片

我在部署之前先把Mysql的配置文件提取成configmap,准备一个pvc  我mysql的券挂载  数据的挂载
his-mysql(尚依通的mysql)

云原生实战课大纲<2>_第13张图片

选中一个mysql镜像 创建几份, 资源限额,账号密码(环境变量)挂载pvc 和configmap
类似于nacos一样可以随时修改,当配置修改了之后 我pod就会进行同步
使用kubesphere部署redis

云原生实战课大纲<2>_第14张图片

一样我们启动的时候 可以看看redis在docker中怎么做的部署
数据目录放在/data 
配置文件映射在/etc/redis
如果我们用docker启动的话
-v date 外部进行挂在数据目录 
-v 挂载配置conf

云原生实战课大纲<2>_第15张图片

redis的部署  就已经结束了

es也一样	启动 会有-e的环境变量和-v的数据挂载


云原生实战课大纲<2>_第16张图片

我们之前手动部署mysql  es redis
 对于常见的中间件 kubesphere可以达到一键部署,基于应用商店部署rabbitmq
 类似于dockerhub一样我们可以在镜像仓库中找到对应的镜像 达到一键部署的功能

云原生实战课大纲<2>_第17张图片

RUO-YICLoud 部署实战

云原生实战课大纲<2>_第18张图片

我们部署ruoyi-cloud,前端访问网关  网关的所有配置,包括网关发现其他的服务,都是基于nacos做的服务发现
和配置中心

云原生实战课大纲<2>_第19张图片

前端发送请求到gateway,gateway先经过令牌校验是否正常
如果令牌校验正常的话 就会将流量放行,各个微服务之间就会基于feign发起调用
如果微服务操作我们db的话,自然就会有db系统,如果操作Oss的话 自然就会有oss系统(文件存储)
包括微服务的监控,这就是整个ruoyi-cloud的架构 
接下来我们部署的时候就会涉及到网关,缓存,数据库,配置中心nacos,以及我们的服务监控
我们可以先手动部署一遍,手动部署会有很多问题以及麻烦的
接下来我们使用devops 自动化流水线部署

云原生实战课大纲<2>_第20张图片

每一个带端口的都是将来我们要启动的服务
先启动nacos  因为很多配置在nacos的配置中心中配置
先保证我们的每一个微服务都能正常启动,并且保证我们的项目在本地是可以使用的

先用kubesphere启动一个redis和mysql  然后各个微服务去连接
本地跑起来,只需要吧ruoyi要用的数据库文件导入进去,准备好db和redis

因为mysql和redis我们用Kubesphere部署的 ,最大的效果 就是云上的如果崩了  数据还是在的 因为我已经吧data文件挂载出来了

nacos作为配置和注册中心,我们可以在naocs的官网看到nacos怎么上云,3个pod的nacos 
整个nacos集群对外暴露一个service,我就可以做一个service,让这个service选中3个pod
service 统一暴露自己域名或者ip,  
集群中 其他服务比如说pod  想要访问nacos 就可以基于(service)域名来访问

云原生实战课大纲<2>_第21张图片

上云之后基于nacos 部署了3个pod ,k8s的最大的优点就是拥有
pod的故障转移能力  一旦发生故障转移pod 的ip就变化了
所以我们这里写每个pod 有一个固定的域名  
nacos的配置文件进行挂载

云原生实战课大纲<2>_第22张图片

3个nacos的固定访问地址
 nacos

云原生实战课大纲<2>_第23张图片

我们启动 部署 redis mysql nacos(3个副本) 接下来我们部署我们的微服务层
我们一个项目分为服务治理层,数据层,ruoyi的微服务层

当我们把服务治理层,数据层都部署好了,我们就可以部署我们的微服务,我们的微服务采取的是从下到上的方式部署。

云原生实战课大纲<2>_第24张图片

微服务层的部署
 基于dockerFile 构建镜像  编写dockerFile文件

云原生实战课大纲<2>_第25张图片
云原生实战课大纲<2>_第26张图片

默认找文件 找到prod上  应用已启动 也可以加载prod的启动配置,项目一启动就会在 prod的名称空间下找配置  
我们在nacos中配置一个prod的配置

云原生实战课大纲<2>_第27张图片
云原生实战课大纲<2>_第28张图片
云原生实战课大纲<2>_第29张图片

基于dockerFile 尝试给每一个应用打包成镜像,微服务打包用的镜像文件.我们微服务想上云 
1.利用maven 打成可执行的jar
2.上传给服务器
3.根据jar 利用dockerFile打成镜像
4.我们K8s 想部署
给k8s 进行部署

云原生实战课大纲<2>_第30张图片

我们一个应用想要上云的过程
我们接下来做的事情就是 根据dockerFile文件  基于jar生成docker镜像

云原生实战课大纲<2>_第31张图片

将每一个微服务构建成docker镜像

云原生实战课大纲<2>_第32张图片

镜像有了,现在我们要做的一个事情就是镜像不能只呆在master节点
因为我们k8s集群,部署pod应用的时候要能找到镜像,比如说在node1上部署这个pod
所以这个镜像要推送到镜像仓库 (我们使用阿里云镜像仓库或者docker hub)
推送镜像给阿里云

你可能感兴趣的:(云原生)