云原生实战课大纲

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

 

在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

echo

在这里插入图片描述

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

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

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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


镜像的共享  >1  save load

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

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

然后docker -v 再进行挂载

在这里插入图片描述

 反向写 可以把容器外面复制到我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命令

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

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

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

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述

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


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

k8s 查看内存 

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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



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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

kubectl  describe pod 描述pod

在这里插入图片描述

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

在这里插入图片描述

pod 的命令  

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/142661.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C语言】

C语言 1. C语言基础1.1 数据类型和占位符1.2 异或1.3 关键字1.4 const1.5 extern1.6 typedef1.7 static1.8 左值和右值1.9 位进行操作赋值 2. C指针3. 二维数组和指针4. 函数传递二维数组4.1 形参给出第二维的长度。4.2 形参声明为指向数组的指针。4.3 形参声明为指针的指针。 …

如何使用免费的 Vecteezy 旅行视频

网址&#xff1a;https://www.vecteezy.com/ Vecteezy 是一个提供免费和付费矢量图形、模板、视频和其他创意资源的网站。该网站拥有大量旅行视频&#xff0c;可用于各种目的&#xff0c;例如个人使用、商业用途或教育用途。 要下载 Vecteezy 的免费旅行视频&#xff0c;请按…

阿里云服务器u1和经济型e实例有什么区别?

阿里云服务器ECS经济型e实例和通用算力型u1实例有什么区别&#xff1f;如何选择&#xff1f;ECS经济型e实例是共享型云服务器&#xff0c;通用算力型u实例是企业级独享型云服务器&#xff0c;e实例性价比高&#xff0c;现在2核2G3M带宽一年99元&#xff0c;云服务器u1价格相对要…

什么是权限?(Linux篇)

前言 其实我们在学会运用一些简单的Linux指令之后&#xff0c;我们可以简单的用ls查看当前目录的文件有哪些啊&#xff0c;可以使用tree用树形结构查看目录&#xff0c;可以使用touch来创建文件&#xff0c;用mkdir创建目录&#xff0c;可以使用rm来删除目录和文件&#xff0c;…

C#,数值计算——多项式计算,Poly的计算方法与源程序

1 文本格式 using System; using System.Text; namespace Legalsoft.Truffer { /// <summary> /// operations on polynomials /// </summary> public class Poly { /// <summary> /// polynomial c[0]c[1]xc[2]x^2 ..…

高频SQL50题(基础题)-5

文章目录 主要内容一.SQL练习题1.602-好友申请&#xff1a;谁有最多的好友代码如下&#xff08;示例&#xff09;: 2.585-2016年的投资代码如下&#xff08;示例&#xff09;: 3.185-部门工资前三高的所有员工代码如下&#xff08;示例&#xff09;: 4.1667-修复表中的名字代码…

数据库恢复技术

事务 含义&#xff1a;用户定义的一个数据库操作序列&#xff0c;这些操作要么全做&#xff0c;要么全不做&#xff0c;是一个不可分割的工作单位 地位&#xff1a;恢复和控制并发的基本单位 区分事务和程序&#xff0c;一个程序中包含多个事务 定义事务 事务的开始与结束…

[linux网络实验] 多网卡绑定

聚合链路技术 什么是bonding 提供了一种将多个网络接口设备绑定到一个网络接口的方法。这可用于网络负载平衡和网络冗余&#xff1b; 实现将两个网卡虚拟成一个网卡。这种聚合设备看起来就像一个以太网接口设备。通俗地说&#xff0c;这意味着两个网卡拥有相同的 IP 地址&am…

PostgreSQL 机器学习插件 MADlib 安装与使用

MADlib 一个可以在数据库上运行的开源机器学习库&#xff0c;支持 PostgreSQL 和 Greenplum 等数据库&#xff1b;并提供了丰富的分析模型&#xff0c;包括回归分析&#xff0c;决策树&#xff0c;随机森林&#xff0c;贝叶斯分类&#xff0c;向量机&#xff0c;风险模型&#…

Leetcode刷题详解——黄金矿工

1. 题目链接&#xff1a;1219. 黄金矿工 2. 题目描述&#xff1a; 你要开发一座金矿&#xff0c;地质勘测学家已经探明了这座金矿中的资源分布&#xff0c;并用大小为 m * n 的网格 grid 进行了标注。每个单元格中的整数就表示这一单元格中的黄金数量&#xff1b;如果该单元格…

数据库表的设计——范式

目录 1. 设计数据表需要注意的点 2. 范式 2.1 范式简介 2.2 范式有哪些&#xff1f; 2.3 第一范式(1NF) 2.4 第二范式(2NF) 2.5 第三范式(3NF) 2.6 小结 1. 设计数据表需要注意的点 &#xff08;1&#xff09;首先要考虑设计这张表的用途&#xff0c;这张表都要存放什…

博捷芯BJCORE:国内划片机品牌优势

国内划片机品牌在半导体设备制造领域奋起直追&#xff0c;展现出以下几个优势&#xff1a; 1. 技术提升&#xff1a;国内划片机品牌在技术上持续取得突破&#xff0c;例如设备精准度和切割精度的提高&#xff0c;可以在短时间内完成大量加工&#xff0c;提高了生产效率。 2. 适…

【Python Opencv】Opencv画图形

文章目录 前言一、画图形1.1 画线1.2 画矩形1.3 画圆1.4 画椭圆1.5 添加文本 总结 前言 在计算机视觉和图像处理中&#xff0c;OpenCV不仅可以处理图像和视频&#xff0c;还提供了一组功能强大的工具&#xff0c;用于在图像上绘制各种形状和图形。这些功能使得我们能够在图像上…

centos利用find提权反弹shell

需要说明的是利用find命令进行提权的方式已经不存在了&#xff0c;因为Linux默认不会为find命令授予suid权限&#xff0c;这里只是刻意的制造出了一种存在提权的环境 首先我们先介绍一下find命令&#xff0c;find命令主要用来在Linux中查找文件使用&#xff0c;它可以进行最基础…

JVM如何运行,揭秘Java虚拟机运行时数据区

目录 一、概述 二、程序计数器 三、虚拟机栈 四、本地方法栈 五、本地方法接口 六、堆 &#xff08;一&#xff09;概述 &#xff08;二&#xff09;堆空间细分 七、方法区 一、概述 不同的JVM对于内存的划分方式和管理机制存在部分差异&#xff0c;后续针对HotSpot虚…

Brute Force

Brute Force "Brute Force"&#xff08;暴力破解&#xff09;指的是一种通过尝试所有可能的组合来获取访问、解密或破解信息的攻击方法。这种攻击方法通常是基于暴力和不断尝试的&#xff0c;不依赖漏洞或弱点。通常用于破解密码、破坏系统或获取未经授权的访问权限…

【数据结构】链表经典OJ题,常见几类题型(二)

目录 题型三&#xff1a;链表相交&#xff0c;找相交节点思路解析OJ题实例解题代码 题型四&#xff1a;链表带环&#xff0c;找入环节点思路解析OJ实例解题代码 题型三&#xff1a;链表相交&#xff0c;找相交节点 思路解析 看到这类题型首先要判断链表是否相交&#xff0c;而…

密钥安全存储方案探讨与实践

随着信息技术的迅猛发展和应用范围的不断扩大&#xff0c;我们日常生活中的许多方面已经与信息技术密不可分。而在信息安全领域中&#xff0c;密钥的安全存储显得尤为重要。本文将探讨密钥安全存储的必要性、相关技术和实践方案&#xff0c;并提出一些解决方案。 一、密钥安全存…

Redis 常用的类型和 API

前言 在当今的软件开发中&#xff0c;数据存储与操作是至关重要的一部分。为了满足日益增长的数据需求和对性能的追求&#xff0c;出现了许多不同类型的数据库。其中&#xff0c;Redis 作为一种基于内存且高性能的键值存储数据库&#xff0c;因其快速的读取速度、丰富的数据结…

进行 “最佳价格查询器” 的开发(多种并行方式的性能比较)

前置条件 public class Shop {private final String name;private final Random random;public Shop(String name) {this.name name;random new Random(name.charAt(0) * name.charAt(1) * name.charAt(2));}public double getPrice(String product) {return calculatePrice…