• 云原生架构


    云原生架构

    一、Docker

    1.1镜像仓库

    docker hub

    1.2镜像操作

    下载:docker pull 镜像(nginx、redis)

    直接下载是该工具的最新版本,可以指定通过镜像名:版本来指定版本。

    删除:docker rmi 镜像名:版本号(默认lastest)/镜像id

    1.3容器操作
    1.3.1运行镜像:

    docker run [options] images [command]

    • docker run 设置项 镜像名 启动命令(默认有,一般不配置)
      • –name=xxx 执行启动后的容器名
      • -d 后台运行
      • -p 公网端口:容器内端口
      • -v 外部:内部文件 挂载容器内部到文件到外部linux系统中
      • –restart=always 每次开机会自启
    1.3.2操作容器

    如果第一次没有指定,可以通过docker update 容器id --restart = always来更新设置项。

    但是docker update 不能修改容器的端口。

    • docker ps 查看运行中的容器

    • docker rm 容器名/容器id 可以使用-f强制删除运行中的容器

    • docker stop 容器id 停止运行中的容器

    • docker start 容器id

    1.3.3操作容器内部文件

    docker exec -it 容器id /bin/bash(控制台) -it以交互模式进行操作

    进入到容器里面(小nginx),修改容器文件

    1.3.4提交容器改变

    本地:docker commit -a “作者” -m “描述提交的内容” 容器id 新镜像名.

    远程:将一个镜像从一个电脑导入到另一台电脑:

    1.docker save -o xxx.tar 镜像名:版本 将镜像压缩成压缩包(可以使用load -i命令解压缩包为镜像)

    如果直接使用镜像id打包会出现解压后镜像名为none,可以使用 docker tag 镜像id xxx:版本

    scp xxx.tar root@192.168.xxx.xx 将压缩包发送到某个主机

    2.将镜像推送到远程仓库

    • 注册docker hub创建repository
    • docker tag localimage:localtag new-repo:tagname
    • docker push new-repo:tagname
    • 推动之前需要先登录docker login
    • 推送完成后,其他机器只需要docker pull即可
    1.3.5如何使用docker部署一个Java项目

    1.安装相关镜像(redis)

    2.打包java项目为jar包

    3.编写Dockerfile文件将我们的Java项目打包成镜像 (docker build -t xxxdemo:vxx .)

    4.docker run 运行java项目镜像

    二、Kubernates

    在这里插入图片描述

    容器之间的环境是隔离的,不会影响到其他容器的运行,解决了虚拟机的笨重。但是容器使用起来不好管理,所以K8S用来对容器进行管理、编排。

    K8s是一个可弹性运行分布式系统的框架,优点:

    • 服务的发现和负载均衡
    • 内存编排,应用内存的分配回收。
    • 自动部署和回滚功能
    • 自动装箱计算,允许指定每一个容器所需的内存和CPU
    • 自我修复(一个应用在一个机器挂了,会自动部署到其他机器)
    • 配置管理
    2.1架构
    2.1.1工作方式

    N 个主节点 + N节点
    在这里插入图片描述
    在这里插入图片描述
    所有工作节点与主节点通信都需要经过api-service,外部访问工作节点需要经过kube-proxy访问。kubelet会实时监测节点内的容器活动状态,如果发现问题会及时通过api-server通知决策者。对于节点的数据都存在ETCD中(类似Redis)。

    2.2集群部署

    kubelet:节点管理者。

    kubectl:k8s控制台,供程序员使用

    kubeadm:管理k8s结点,可以更方便管理结点。可以通过kubeadm init指定一个节点为主节点。后面kubelet就会创建主节点的所需要的组件(下载镜像):scheduler(调度者、代理者、api-server、etcd等),其他节点就可以通过kubeadm join加入这个集群作为工作节点。

  • 相关阅读:
    Element UI 禁用数字输入框组件添加鼠标滚动事件
    一文搞懂mysql索引底层逻辑,干货满满!
    共享办公室行业当前发展现状和未来发展前景
    vue3 和 vue2 区别,面试简答
    数据分析实战应用案例精讲-【应用篇】词云分析(附实战案例)
    闭包学习记录-iOS开发
    羽夏壳世界——异或加密的实现
    MyBioSource p53 肿瘤抑制蛋白 (TP53),多克隆抗体
    Leetcode754. 到达终点数字 --数论+思维
    类加载器分类以及著名的双亲委派机制
  • 原文地址:https://blog.csdn.net/qq_50876039/article/details/132953883