云原生架构

云原生架构

一、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 [email protected] 将压缩包发送到某个主机

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加入这个集群作为工作节点。

猜你喜欢

转载自blog.csdn.net/qq_50876039/article/details/132953883