云原生全栈体系(一)

news2024/11/17 5:22:28

云平台核心

第一章 为什么用云平台

  • 环境统一
  • 按需付费
  • 即开即用
  • 稳定性强

一、国内常见云平台

  • 阿里云、百度云、腾讯云、华为云、青云…

二、国外常见云平台

  • 亚马逊 AWS、微软 Azure …

三、公有云

  • 购买云服务商提供的公共服务器

  • 公有云是最常见的云计算部署类型。公有云资源(例如服务器和存储空间)由第三方云服务提供商拥有和运营,这些资源通过 Internet 提供。在公有云中,所有硬件、软件和其他支持性基础结构均为云提供商所拥有和管理。Microsoft Azure 是公有云的一个示例。

  • 在公有云中,你与其他组织或云“租户”共享相同的硬件、存储和网络设备,并且你可以使用 Web 浏览器访问服务和管理帐户。公有云部署通常用于提供基于 Web 的电子邮件、网上办公应用、存储以及测试和开发环境。

  • 公有云优势:

    • 成本更低:无需购买硬件或软件,仅对使用的服务付费。
    • 无需维护:维护由服务提供商提供。
    • 近乎无限制的缩放性:提供按需资源,可满足业务需求。
    • 高可靠性:具备众多服务器,确保免受故障影响。
      • 可用性: N个9 9 全年的故障时间: 365243600*(1-99.9999%)

四、私有云

  • 自己搭建云平台,或者购买

  • 私有云由专供一个企业或组织使用的云计算资源构成。私有云可在物理上位于组织的现场数据中心,也可由第三方服务提供商托管。但是,在私有云中,服务和基础结构始终在私有网络上进行维护,硬件和软件专供组织使用。

  • 这样,私有云可使组织更加方便地自定义资源,从而满足特定的 IT 需求。私有云的使用对象通常为政府机构、金融机构以及其他具备业务关键性运营且希望对环境拥有更大控制权的中型到大型组织。

  • 私有云优势:

    • 灵活性更强:组织可自定义云环境以满足特定业务需求。
    • 控制力更强:资源不与其他组织共享,因此能获得更高的控制力以及更高的隐私级别。
    • 可伸缩性更强:与本地基础结构相比,私有云通常具有更强的可伸缩性。

五、总结

  • 没有一种云计算类型适用于所有人。多种不同的云计算模型、类型和服务已得到发展,可以满足组织快速变化的技术需求。

  • 部署云计算资源有三种不同的方法:公共云、私有云和混合云。采用的部署方法取决于业务需求。

第二章 核心构架

一、所需软件

  • electerm: https://electerm.github.io/electerm/
  • xshell

二、注册云平台

  • 阿里云 aliyun.com
  • 腾讯云 cloud.tencent.com
  • 华为云 huaweicloud.com
  • 青云 qingcloud.com
  • 百度云 cloud.baidu.com

三、基础概念

  • 云服务器作为应用的最终载体
  • VPC为所有云服务器提供网络隔离
  • 所有云服务器都是绑定某个私有网络
  • 安全组控制每个服务器的防火墙规则
  • 公网IP使得资源可访问
  • 端口转发的方式访问到具体服务器
    在这里插入图片描述

四、实战

  • 开通按量付费服务器
  • 开通基于VPC的服务器集群
    • 同一VPC下的服务器可互通,不同vpc下的服务器在物理层做了网络隔离,不可互通。
      请添加图片描述
      请添加图片描述

Docker 基础

第一章 Docker基本概念

一、解决的问题

1. 统一标准

1.1 应用构建
  • Java、C++、JavaScript
  • 打成软件包
  • .exe
  • docker build … 镜像
1.2 应用分享
  • 所有软件的镜像放到一个指定地方 docker hub
  • 安卓,应用市场
1.3 应用运行
  • 统一标准的 镜像
  • docker run
1.4 虚拟化技术
  • 基础镜像GB级别
  • 创建使用稍微复杂
  • 隔离性强
  • 启动速度慢
  • 移植与分享不方便
    请添加图片描述
1.5 容器化技术
  • 基础镜像MB级别
  • 创建简单
  • 隔离性强
  • 启动速度秒级
  • 移植与分享方便
    请添加图片描述

2. 资源隔离

  • cpu、memory资源隔离与限制
  • 访问设备隔离与限制
  • 网络隔离与限制
  • 用户、用户组隔离限制

二、架构

在这里插入图片描述

  • Docker_Host:

    • 安装Docker的主机
  • Docker Daemon:

    • 运行在Docker主机上的Docker后台进程
  • Client:

    • 操作Docker主机的客户端(命令行、UI等)
  • Registry:

    • 镜像仓库
    • Docker Hub
  • Images:

    • 镜像,带环境打包好的程序,可以直接启动运行
  • Containers:

    • 容器,由镜像启动起来正在运行中的程序
  • 交互逻辑

    • 装好Docker,然后去 软件市场 寻找镜像,下载并运行,查看容器状态日志等排错

三、安装

1. centos下安装docker

1.1 移除以前docker相关包
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

1.2 配置yum源

sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

1.3 安装docker

sudo yum install -y docker-ce docker-ce-cli containerd.io


#以下是在安装k8s的时候使用
yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7  containerd.io-1.4.6

1.4 启动

systemctl enable docker --now

1.5 配置加速

  • 这里额外添加了docker的生产环境核心配置cgroup
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

第二章 Docker命令实战

一、基础实战

1. 找镜像

  • 去docker hub,找到nginx镜像
docker pull nginx  #下载最新版

镜像名:版本名(标签)

docker pull nginx:1.20.1


docker pull redis  #下载最新
docker pull redis:6.2.4

## 下载来的镜像都在本地
docker images  #查看所有镜像

redis = redis:latest

docker rmi 镜像名:版本号/镜像id

2. 启动容器

  • 启动nginx应用容器,并映射88端口,测试的访问
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

【docker run  设置项   镜像名  】 镜像启动运行的命令(镜像里面默认有的,一般不会写)

# -d:后台运行
# --restart=always: 开机自启
docker run --name=mynginx   -d  --restart=always -p  88:80   nginx




# 查看正在运行的容器
docker ps
# 查看所有
docker ps -a
# 删除停止的容器
docker rm  容器id/名字
docker rm -f mynginx   #强制删除正在运行中的

#停止容器
docker stop 容器id/名字
#再次启动
docker start 容器id/名字

#应用开机自启
docker update 容器id/名字 --restart=always

请添加图片描述

3. 修改容器内容

  • 修改默认的index.html 页面
3.1 进容器内部修改
# 进入容器内部的系统,修改容器内容
docker exec -it 容器id  /bin/bash
3.2 挂载数据到外部修改
docker run --name=mynginx   \
-d  --restart=always \
-p  88:80 -v /data/html:/usr/share/nginx/html:ro  \
nginx

# 修改页面只需要去 主机的 /data/html

请添加图片描述

4. 提交改变

  • 将自己修改好的镜像提交
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

docker commit -a "alex"  -m "首页变化" 341d81f7504f alexnginx:v1.0
镜像传输
# 将镜像保存成压缩包
docker save -o abc.tar alexnginx:v1.0

# 别的机器加载这个镜像
docker load -i abc.tar


# 离线安装

5. 推送远程仓库

  • 推送镜像到docker hub;应用市场
docker tag local-image:tagname new-repo:tagname
docker push new-repo:tagname
# 把旧镜像的名字,改成仓库要求的新版名字
docker tag alexnginx:v1.0 alex/alexnginx:v1.0

# 登录到docker hub
docker login       


docker logout(推送完成镜像后退出)

# 推送
docker push alex/alexnginx:v1.0


# 别的机器下载
docker pull alex/alexnginx:v1.0

6. 补充

docker logs 容器名/id   排错

docker exec -it 容器id /bin/bash


# docker 经常修改nginx配置文件
docker run -d -p 80:80 \
-v /data/html:/usr/share/nginx/html:ro \
-v /data/conf/nginx.conf:/etc/nginx/nginx.conf \
--name mynginx-02 \
nginx


#把容器指定位置的东西复制出来 
docker cp 5eff66eec7e1:/etc/nginx/nginx.conf  /data/conf/nginx.conf
#把外面的内容复制到容器里面
docker cp  /data/conf/nginx.conf  5eff66eec7e1:/etc/nginx/nginx.conf

二、进阶实战

1. 编写自己的应用

  • 编写一个HelloWorld应用
  • https://start.spring.io/

2. 将应用打包成镜像

  • 编写Dockerfile将自己的应用打包镜像
2.1 以前
  • Java为例
    • SpringBoot打包成可执行jar
    • 把jar包上传给服务
    • 服务器运行java -jar
2.2 现在
  • 所有机器都安装Docker,任何应用都是镜像,所有机器都可以运行
2.3 怎么打包-Dockerfile
FROM openjdk:8-jdk-slim
LABEL maintainer=alex

COPY target/*.jar   /app.jar

ENTRYPOINT ["java","-jar","/app.jar"]
docker build -t java-demo:v1.0 .

3. 启动容器

3.1 启动应用容器
docker run -d -p 8080:8080 --name myjava-app java-demo:v1.0 
3.2 分享镜像
# 登录docker hub
docker login

#给旧镜像起名
docker tag java-demo:v1.0  alex/java-demo:v1.0

# 推送到docker hub
docker push alex/java-demo:v1.0

# 别的机器
docker pull alex/java-demo:v1.0

# 别的机器运行
docker run -d -p 8080:8080 --name myjava-app java-demo:v1.0 

4. 部署中间件

  • 部署一个Redis+应用,尝试应用操作Redis产生数据
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

#redis使用自定义配置文件启动

docker run -v /data/redis/redis.conf:/etc/redis/redis.conf \
-v /data/redis/data:/data \
-d --name myredis \
-p 6379:6379 \
redis:latest  redis-server /etc/redis/redis.conf

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

单元格JS复选框,带参按钮传值

一、复选框设置 1.第一个复选框 初始化后&#xff1a; setTimeout(function() {var isAllChecked true;//设置标记状态为选中var boxes _g().getWidgetsByName("boxes");//获取当前页的复选按钮控件数组if (typeof(boxes[0]) ! "undefined") {for (i …

Neural Network学习笔记4

完整的模型训练套路 train.py import torch import torchvision from torch.utils.data import DataLoader # 引入自定义的网络模型 from torch.utils.tensorboard import SummaryWriterfrom model import *# 准备数据集 train_data torchvision.datasets.CIFAR10(root"…

JAVASE---认识JAVASE

我们今天开始学习Java语言&#xff0c;首先Java是一种优秀的程序设计语言&#xff0c;它具有令人赏心悦目的语法和易于理解的语义。不仅如此&#xff0c;Java还是一个有一系列计算机软件和规范形成的技术体系&#xff0c;这个技术体系提供了完整的用于软件开发和跨平台部署的支…

零的奇幻漂移:解密数组中的神秘消失与重生

本篇博客会讲解力扣“283. 移动零”的解题思路&#xff0c;这是题目链接。 思路1 这道题目很有意思。虽然是简单题&#xff0c;其蕴含的玄机还是很多的。正常来讲&#xff0c;这种题目一般都会原地操作&#xff08;不开辟额外的数组&#xff0c;空间复杂度是O(1)&#xff09;&…

Debian12安装MySQL时报错缺少依赖libssl1.1(>= 1.1.1)

解决方案&#xff1a;进入镜像站&#xff0c;下载libssl包并安装&#xff0c;如&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/debian/pool/main/o/openssl/libssl1.1_1.1.1n-0%2Bdeb11u5_amd64.debIndex of /debian/pool/main/o/openssl/ | 清华大学开源软件镜像站 | Tsi…

用windeployqt.exe打包Qt代码

首先找到我们编译Qt代码的对应Qt版本的dll目录&#xff0c;该目录下有windeployqt.exe&#xff1a; D:\DevTools\Qt\5.9\msvc2017_64\bin 在这个目录下打开cmd程序。 然后把要打包的exe放到一个单独的目录下&#xff0c;比如&#xff1a; 然后在cmd中调用&#xff1a; winde…

【T1】存货成本异常、数量为零金额不为零的处理方法。

【问题描述】 使用T1飞跃专业版的过程中&#xff0c; 由于业务问题或者是操作问题&#xff0c; 经常会遇到某个商品成本异常不准确&#xff0c; 或者是遇到数量为0金额不为0的情况&#xff0c;需要将其成本调为0。 但是T1软件没有出入库调整单&#xff0c;并且结账无法针对数量…

光伏储能行业MES系统解决方案

万界星空科技光伏储能行业mes解决方案连接起仓储物流、生产计划、制程管理、品质管理等各个模块&#xff0c;覆盖全厂的各个工序段&#xff0c;提供计划的执行、跟踪以及所有资源(人、设备、物料等)的当前状态&#xff0c;帮助企业实现产品质量、生产效率的提升。 万界星空平台…

Unity射线穿透UI解决

unity场景中&#xff0c;射线是可以穿透UI的。我用过很多版本&#xff0c;都有这个问题。 比如我现在用2020版本的unity做了个范例&#xff1a; 我在场景中新建了一个cube名叫&#xff1a;我秦始皇打钱。 点击这个物体就会出现log显示这个物体的名字&#xff0c;代码在下面。…

<Java>Map<String,Object>中解析Object类型数据为数组格式

背景&#xff1a; 前端&#xff1a;入参为字符串和数组类型&#xff1b;通过json字符串传给后台&#xff0c; 后台&#xff1a;后台通过工具解析为Map<String&#xff0c;Object>&#xff0c;然后需要解析出Map里面的数组值做操作&#xff1b; 需求&#xff1a; 入参&…

常用的CSS渐变样式

边框渐变 方案1&#xff1a; 边框渐变( 支持圆角) width: 726px;height: 144px;border-radius: 24px;border: 5px solid transparent;background-clip: padding-box, border-box; background-origin: padding-box, border-box; background-image: linear-gradient(to right, #f…

SQL基础使用

SQL的概述 SQL全称&#xff1a; Structured Query Language&#xff0c;结构化查询语言&#xff0c;用于访问和处理数据库的标准的计算机语言。 SQL语言1974年由Boyce和Chamberlin提出&#xff0c;并首先在IBM公司研制的关系数据库系统SystemR上实现。 经过多年发…

百度文心一言接入教程-Java版

原文链接 前言 前段时间由于种种原因我的AI BOT网站停运了数天&#xff0c;后来申请了百度的文心一言和阿里的通义千问开放接口&#xff0c;文心一言的接口很快就通过了&#xff0c;但是文心一言至今杳无音讯。文心一言通过审之后&#xff0c;很快将AI BOT的AI能力接入了文心…

Ansible单yaml文件部署Zabbix5.0监控平台

文章目录 Ansible单yaml文件部署Zabbix5.0监控平台节点规划案例实施基础环境准备编写剧本文件ZabbixWeb界面(1)改中文(2)添加监控主机 Ansible单yaml文件部署Zabbix5.0监控平台 节点规划 IP主机名节点192.168.200.10ansibleAnsible节点192.168.200.20zabbix-serverZabbix-ser…

5、Kubernetes核心技术 - Controller控制器工作负载

目录 一、Deployments - 控制器应用 二、Deployment升级回滚和弹性收缩 2.1、创建一个 1.14 版本的 pod 2.2、应用升级 2.3、查看升级状态 2.4、查看历史版本 2.5、应用回滚 2.6、弹性伸缩 三、StatefulSet - 有状态应用 四、DaemonSet - 守护进程 五、Job - 单次任…

使用低代码开发,需要注意哪些?

低代码平台的历史相对较短&#xff0c;大约始于 2000 年初&#xff0c;源于快速应用程序开发工具。随着低代码平台和工具的日益普及和优势&#xff0c;它不断发展以满足各种领域和角色的需求。 本文将研究各种低代码和无代码应用程序开发方法、业务用例、挑战和未来预测等。 一…

2022前端开发实习总结报告

2022前端开发实习总结报告1 一、顶岗实习目的 根据所学课程的理论知识&#xff0c;结合企业的运营实际&#xff0c;掌握软件开发的一般过程&#xff0c;软件的生命周期和作为一个开发人员就应具备的基本潜力&#xff0c;并撰写顶岗实习报告。使学生进一步巩固所学理论知识&am…

判断是否是二叉对称树(两种方法:递归+迭代)

给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true 源代码如下&#xff1a; //递归 class Solution { public:bool dfs(TreeNode* p,TreeNode* q){if(pnullptr && qnullptr) return true;//同…

redis的如何使用

1、redis的使用 1.1windows安装 安装包下载地址&#xff1a;Releases dmajkic/redis GitHub 1.2 redis中常使用的几个文件 1.3 redis中运行 双击redis-server&#xff0c;既可以运行。 1.4使用redis客户单来连接redis 1.5redis的常用指标 redis-serve 服务端,端口号&am…

【嵌入式学习笔记】嵌入式基础10——STM32时钟配置

1.认识时钟树 简单来说&#xff0c;时钟是具有周期性的脉冲信号&#xff0c;最常用的是占空比50%的方波 1.1.F1的时钟树 1.2.F4的时钟树(407为例) 1.3.F7的时钟树 1.4.H7的时钟树 2.配置系统时钟(F1为例) 2.1.系统时钟配置步骤 配置HSE VALUE&#xff1a;告诉HAL库外部晶振…