云原生实战课大纲

1. 云原生是什么 原生应用(java,pyrhon) 上云的过程
  应用上云遇到的问题
  1.微服务的拆分  微服务的访问关系
   应用的架构
 云原生适合什么样的人去学
 具备什么样的前提条件
 云原生要学习什么
 docker  k8s  devlops  server mesh  jks  k8s监控
 吧自己的微服务部署上云
 另外一种微服务架构  server mesh
 监控k8s平台  比如说告警日志信息

 

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

#拉取镜像
docker pull nginx 
#查看镜像
docker images 

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

docker rmi  删除镜像 基于镜像做的crud
下载镜像后,让镜像启动起来
启动容器  docker run 启动容器
docker ps 查看正在运行的容器
docker  stop  停止应用

在这里插入图片描述
云原生实战课大纲_第4张图片

--restart=always  容器开启自启动  -p端口映射

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

 docker ps 就可以查看状态 完成nginx的启动

在这里插入图片描述

我现在启动一个nginx 应用并且可以访问到
接下来 如果我想修改nginx的内容该怎么做
修改nginx的页面
 1. exec 进入容器 进行修改
 2. -v挂载出来

云原生实战课大纲_第6张图片

echo

云原生实战课大纲_第7张图片

 我此时再来访问nginx 的时候首页就会发生变化  

我修改完毕之后 我把我修改过后的nginx 提交至本地改名为 guigu的的 v1版本
我可以指定一个镜像之后 docker commit 保存在本地

在这里插入图片描述
云原生实战课大纲_第8张图片

相当于linux 的快照 
git的本地commit 
假设我有一天我容器宕机了 我直接rm删除  然后再启动shangguigu 的v1版本
相当于此时生成一个快照机制  此时我基于本地构建一个docker的镜像
我就用我之前的nginx 镜像 我相当于对nginx 镜像做了一个定制化

在这里插入图片描述
在这里插入图片描述
云原生实战课大纲_第9张图片

相当于在本地构建一个镜像,我修改了原来的镜像可以commit 提交至本地


镜像的共享  >1  save load

我可以把我的镜像通过docker save 命令保存为tar 包
然后 scp (文件传输)进行复制到另外一个主机上  之后 docker load执行
docker load 之后  docker run 执行
这种适合于离线场景 比如说我此时不便于对接公网

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

>我可以把我的镜像进行推送 比如说推送到docker hub仓库  docker push
>共享dockerhub  规避了底层的复杂度
也就是说我不必知道你是怎么改的 我只需要 docker run 启动起来就可以了

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

我们能登录到仓库的话 我们就需要 docke push  将我们的镜像push到远程

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

docker -v 挂载
docker -v  将配置文件 以及数据文件挂载到外面
我们以前改nginx 的内容,需要docker exec 进入之后进行修改
每次都要进去改 有些麻烦 
将容器中的文件 挂载出来
ro 是只读模式  代表容器内部的文件是不允许修改的 是只读模式
 

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

docker ps   -v 将nginx中的配置文件挂载出来

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

保证主机目录下有页面index.html
包括nginx 的配置文件 也可以挂载出来   卷挂载
docker 命令 有了挂载之后 修改东西就很方便了
docker logs   可以看到这个容器的运行日志(启动日志)  我们可以排错用

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

 nginx 的页面挂载出来  还有nginx的config 也挂载出来

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

docker cp 可以把容器的文件复制到本机  复制出来

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

然后docker -v 再进行挂载

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

 反向写 可以把容器外面复制到我docker容器中
docker 命令
如果我们要安装nginx 并且修改 之后上传至docker hub
docker search 
docker pull 
ducker run 
docker commit  {将本地修改后的 打包成一个镜像}
docker tag  {按照远程仓库的命名规则}
docker push 

----------------<<<<<<<<<<<<,,
docker search 
docker pull 
ducker run 
docker commit  {将本地修改后的 打包成一个镜像}
docker save 
docker load 
我们java+redis 使用docker怎么部署
我们Springboot项目+redis 部署在docker中
1.  使用docker 部署redis
启动redis
docker run redis  先用docker 部署redis  先部署redis  redis的配置文件和数据文件
可以docke -v 挂载出去
docker run redis -v挂载, 启动redis 让redis产生数据之后
部署redis结束
2.
springboot项目 redis的incr命令

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

springboot+redis 应用 基于dockerfile文件打包为镜像,部署在docker上运行
以前如果没有docker上 我们的SpringBoot项目是怎么部署在服务器上的
我们的项目通过maven打包成jar包,然后上传至服务器之后 java -jar执行

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

我服务器还要装java 环境  如果有新的服务器我还得搞java 环境
如果我是python应用的化,我还得安装python环境
如果我是一个前端应用的化,我还得安装前端

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

我可以把我服务器装docker,我任何应用都是以docker的镜像运行的
这样屏蔽了底层
我不管是运行 前端。java应用,python应用我都可以
docker run 来运行镜像就可以了

基于docker的方式将jar包打包成镜像

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

docker file 执行怎么打包,每一个应用都要有一个dockerFile文件 ,编写dockerFile文件

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

jar包以及dockerfile文件   依照jar--->构建镜像
docker build -t .
jar 如果在服务器上运行 还得装java环境  太麻烦了
有了dockerFile  怎么吧jar 制作成镜像 

云原生实战课大纲_第25张图片

docker build -t 构建镜像 基于 java项目(dockerFile文件) 构建镜像
然后我们docker images 就可以看到我们构建的镜像了

云原生实战课大纲_第26张图片

315mb  因为jdk 既有288mb
docker run 构建镜像

云原生实战课大纲_第27张图片

docker ps 查看进程
docker logs
  我们启动以及排错日志

云原生实战课大纲_第28张图片

我们之前自己把我们的镜像打包在我们的机器上了
如果我新的机器想要跑我们的应用  我可以吧这个镜像第一步推送到我镜像仓库
docker tag 
docker push 
吧我们的新镜像推送上去

云原生实战课大纲_第29张图片

k8s  
1。什么是k8s 他的出现是为了解决什么问题的 
2.应用完成开发后想要部署的三个时期

3.我们k8s能帮助我们实现什么  k8s 的功能

k8s 架构
master node
worker node(1)
worker node(2) 
工作模式

云原生实战课大纲_第30张图片
在这里插入图片描述

k8s的架构,以及k8s中每个节点 是干嘛的 各个组件的作用

云原生实战课大纲_第31张图片
云原生实战课大纲_第32张图片

k8s 是怎么工作的  以及k8s架构
都是基于apiService 访问呢
apiService 进行隐藏
将我们的项目部署在k8s上,可以部署多个节点. 以达到高负载

云原生实战课大纲_第33张图片

安装k8s
kubeadm  init 
kubeadm  join 
主节点中的 工作进程
工作节点中的 工作进程
k8s的集群规划
################
docker  容器的运行环境
docker安装完毕后 让每一台机器都 启动docker
k8s 安装集群的第一步  docker(容器运行环境)


设置hostname
k8s-master_(主机)
k8s-node1_(节点1)
k8s-node2_(节点2)

k8s 查看内存 

云原生实战课大纲_第34张图片

建立1个node 2个work的集群.可以在集群中加入主节点和work节点
kubectl get nodes //获取节点

在这里插入图片描述

pod 是k8s中的最小单元  
kubectl  get  pods  -A  //查看k8s中部署的Pod

云原生实战课大纲_第35张图片

运行中的应用在docker中叫容器, 在k8s中叫做pod
docker ps  kubectl get pods  ..可以看到我正在运行的容器
kubectl  get pods- A 可以看到我集群中的每一个应用的名字
k8s 拉的pod 如果挂了 会自动拉的  重新部署



1. 基于kubectl -f  执行文件 
2. kubectl create 执行命令

云原生实战课大纲_第36张图片

namespace 做资源隔离的 类似于nacos 是做资源隔离的
prod 的namespace  //生产
dev  的namespace  //dev

云原生实战课大纲_第37张图片

基于名称空间ns 创建资源 pod, 基于ns 下对pod 的crud
docker ps 查看应用
kubectl get pods 

在这里插入图片描述
云原生实战课大纲_第38张图片

pod是k8s中最小的运行单位,k8s 启动pod就可以,pod可以启动多个容器,一个pod中可以有多个容器

云原生实战课大纲_第39张图片

kubectl run mynginx --image=nginx 
// 我启动了一个nginx 的pod
给pod 起一个名字  依据于nginx的镜像启动pod

云原生实战课大纲_第40张图片

pod  启动容器 pod 底层是依靠于 docker拉取的

可以基于kubectl describe pod mynginx 来查看pod的信息 以及pod的调度

云原生实战课大纲_第41张图片

 可以查看调度到那个机子上

云原生实战课大纲_第42张图片

我们使用了一个命令创建了k8s 的一个pod
查看pod 
kubectl get pod 

云原生实战课大纲_第43张图片

k8s 描述pod  kubectl describe pod //描述pod的信息
pod 在前面创建好了  kubectl  delete pod //删除pod

云原生实战课大纲_第44张图片

kubectl  describe pod 描述pod

云原生实战课大纲_第45张图片

我们基于配置文件创建的pod

在这里插入图片描述

pod 的命令  

云原生实战课大纲_第46张图片

我们使用docker 部署的nignx 我们更改他的首页 还可以访问
我们现在用k8s 的pod 部署的nginx 怎么访问  
pod 是有ip的

在这里插入图片描述

pod 就可以访问我们nignx的首页 因为默认是 80的port,我们基于docker 部署的nignx 我们可以exec it 进入容器中去改.现在我们可以

云原生实战课大纲_第47张图片

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