Docker,Docker Swarm,K8S都有哪些不同
Docker: 是一种容器化技术,它将应用及其依赖封装在轻量级的容器中,确保应用可以在任何环境下运行。
Docker Swarm和K8S: 都是容器编排平台,用于管理和调度多个容器。它可以自动化容器的部署、扩展、负载均衡和恢复等操作。
Docker Swarm 适合中小规模场景,K8S适合大规模场景 Docker Swarm且插件较少,K8S插件较多
简而言之,Docker 用来创建和运行容器,K8S 则管理和协调这些容器,是一种容器编排工具,同时K8S可以自动回滚,且扩展性比较好,这也是K8S用于复杂环境的主要原因之一
Dockerfile和Docker compose的区别
Dockerfile:用于定义一个容器镜像的构建过程 Docker Compose:用于定义和管理多容器的协作运行
应用场景: Dockerfile:适用于创建单一容器镜像 Docker Compose:适用于多容器环境下的服务编排和管理
配置方式: Dockerfile:通过编写 Dockerfile 文件构建镜像 Docker Compose:通过 YAML 文件定义多个服务及其依赖关系 总之,Dockerfile 是用于构建容器镜像的,而 Docker Compose 是用于编排和管理多容器应用的
为什么数据库不适合部署到K8S中
-
节点故障或容器调度可能导致数据库数据丢失或不一致: 在节点故障时,K8S 会自动调度容器到其他节点,但如果数据库没有正确配置持久存储(如 Persistent Volume),可能会导致数据丢失或状态不一致的情况。
-
K8S的存储性能不足以支持高性能数据库: K8S 自带的存储解决方案(如 NFS 或 Ceph 等)在高并发、高吞吐场景下可能无法满足数据库的性能需求,尤其是对低延迟要求较高的数据库。
-
K8S的存储性能和网络性能不足以保证数据库的一致性和高可用性: 数据库对一致性和网络延迟的敏感性较高,而 K8S 的存储和网络抽象层可能增加延迟,导致数据库在一致性和性能方面存在瓶颈。
请简述linux启动过程
- 打开电源,启动 BIOS/UEFI:
当打开计算机时,BIOS(或 UEFI)首先启动,它负责硬件初始化和引导设备检测 BIOS 查找可引导设备(如硬盘、U盘)上的引导加载程序
- 加载 GRUB2:
一旦 BIOS 找到引导设备,它会加载引导加载程序(GRUB2) GRUB2 提供启动菜单,允许选择内核版本或操作系统 选择完成后,GRUB2 会将控制权交给 Linux 内核
- 引导 Linux 内核:
GRUB2 加载并启动 Linux 内核到内存中 内核开始初始化硬件,包括 CPU、内存、硬盘、网络等
- 加载 init(或 systemd):
内核完成硬件初始化后,会启动 init(或现代 Linux 发行版使用 systemd)作为第一个用户态进程 init 或 systemd 是系统的初始化进程,负责启动各种系统服务
- 系统初始化:
init 或 systemd 根据系统配置文件(如 /etc/inittab 或 systemd 的 unit 文件)启动各种服务,如网络服务、文件系统挂载、日志服务等
- 加载终端:
在初始化完成后,系统会启动登录管理器(如 getty 或图形界面管理器),为用户提供登录终端。 用户可以通过终端登录系统,进行交互操作
如何将脚本添加为系统服务
在/etc/systemd/system下创建服务单元文件xx.service 编辑脚本,定义描述,服务启动用户和用户组等参数
[Unit]
Description=My Custom Script Service
After=network.target # 在网络服务启动后启动
[Service]
Type=simple
ExecStart=/usr/local/bin/myscript.sh # 需要启动的脚本路径
Restart=on-failure # 如果服务失败,自动重启
User=root # 可选:定义服务以哪个用户身份运行
Group=root # 可选:定义服务运行的用户组
[Install]
WantedBy=multi-user.target # 定义服务在多用户模式下启动
Alias=myscript # 可选:为服务定义别名,方便使用别名管理服务
作于2024年09月09日