# 容器与运维

# Linux

# linux启动流程

# 启动过程

通电 → BIOS → 加载引导记录(GRUB)→ 加载操作系统 → 加载 /boot → 创建 init 进程(pid=1)→ 选择运行级别(/etc/rc.d)→ 加载开机程序(/etc/init.d)

# 详细步骤

  1. BIOS/UEFI 阶段:硬件自检(POST),加载引导程序
  2. Bootloader 阶段:GRUB 加载内核镜像到内存
  3. Kernel 阶段
    • 初始化硬件驱动
    • 挂载根文件系统
    • 启动 init 进程(systemd 或 SysV init)
  4. Init 阶段
    • 读取配置文件(/etc/inittab 或 systemd unit)
    • 启动系统服务
    • 进入多用户模式

# systemd vs SysV init

特性 systemd SysV init
启动方式 并行启动 串行启动
服务管理 systemctl service
配置文件 .service unit 文件 /etc/init.d/ 脚本
依赖管理 自动处理依赖 手动管理
性能

# linux文件描述符

# 概念

Linux 文件描述符(File Descriptor)是一个非负整数,用于标识进程打开的文件或其他 I/O 资源。类似 Windows 中的文件句柄。

# 默认文件描述符

  • 0:标准输入(stdin)
  • 1:标准输出(stdout)
  • 2:标准错误(stderr)

# 相关命令

# 查看当前进程的文件描述符限制
ulimit -n

# 查看系统级最大文件描述符数
cat /proc/sys/fs/file-max

# 查看当前已使用的文件描述符数
cat /proc/sys/fs/file-nr

# 临时修改文件描述符限制
ulimit -n 65535

# 永久修改:编辑 /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535

# 为什么重要

  • Linux 中一切皆文件,socket 也是文件
  • 高并发场景(如 Web 服务器)需要大量文件描述符
  • 默认值(通常 1024)可能不足以支撑高并发
  • 合理设置可优化服务器性能

# 文件描述符与连接数

每个 TCP 连接占用一个文件描述符,因此:

  • 文件描述符限制 = 最大并发连接数
  • 需要合理规划系统资源

# 进程间通信的方式

参考资料: https://baike.baidu.com/item/%E8%BF%9B%E7%A8%8B%E9%97%B4%E9%80%9A%E4%BF%A1/1235923?fr=aladdin https://www.cnblogs.com/lmh001/p/9754122.html 总结

管道 信号量 共享内存 套接字 消息队列 大概是这五种
管道分无名 有名 高级

一般java开发很少用到进程之间通信 顶多就是在一些框架底层 线程操作中用到类似的概念 例如信号量和共享内存 消息队列

  • 哪些通信方式是要陷入内核态的
    在进程之间通信 都是需要借助内核来处理 这个问题不太明白
    因为在操作系统中 进程通信肯定要进入 内核态来处理的 在线程通信好像不太需要 如线程共享内存

# Kubernetes

# k8s常用组件

名称 作用 备注
etcd k8s 注册中心 管理、注册k8s相关服务信息
api server k8s manager api server
scheduler 调度组件 用来管理k8s相关调度任务
controller-manager 控制面板 管理k8s资源
kubelet node节点的管理探针 用来配合master节点管理node的
kube-proxy node节点网络代理组件 用来接入到k8s网络的组件
containerd 实现oci标准的容器引擎 一般使用docker不过现在开始直接使用containerd
dns k8s自用的dns服务 提供k8s一些别名访问的dns
flannel k8s网络组件 基于overlay network的
calico k8s网络组件 基于bgp路由协议
prometheus 监控组件 存储采集上来的监控数据
grafana 监控组件 展示prometheus存储的数据
helm k8s发布软件包格式

# k8s常用高可用部署方式

k8s要实现高可用 核心是etcd要高可用
业内很多一键部署高可用的脚本啥的 基本上就是要么直接写好二进制安装脚本或者包装kubeadm来实现的

  • kubeadm
    高本版的kubeadm 支持外接etcd创建高可用的k8s集群

  • rancher
    rancher 可以使用rke建立k8s高可用集群

  • 二进制安装
    手工安装 etcd、api server 、schedule 等master组件
    然后签发证书 安装node节点的 kubelet kube-proxy组件

最后更新时间: 2026-05-06 17:25:23