2. 基础环境准备:操作系统选型与服务器初始化
服务目录平台作为企业级基础设施,其底层操作系统的选型与初始化质量直接决定后续运维效率与安全水位。本章从操作系统对比、服务器初始化流程、网络规划、SSH 密钥配置及安全加固五个维度展开,确保每一台节点在加入集群前都处于可审计、可复制的标准状态。
2.1 操作系统选型:CentOS 与 Ubuntu 对比
当前主流服务器操作系统集中在 RHEL 系(CentOS / Rocky Linux / AlmaLinux)与 Debian 系(Ubuntu LTS)。服务目录平台推荐使用 Ubuntu 22.04 LTS 或 Rocky Linux 9(CentOS 7 已 EOL,CentOS Stream 不适合生产)。以下从关键维度进行对比:
| 对比维度 | Ubuntu 22.04 LTS | Rocky Linux 9 |
|---|---|---|
| 内核版本 | 5.15 LTS,支持 cgroup v2 与 io_uring | 5.14,兼容性稳定 |
| 包管理 | apt + snap,社区包更新快 | dnf + rpm,企业级生态成熟 |
| 安全更新周期 | 10 年(ESM) | 10 年(免费) |
| Kubernetes 官方支持 | 优先支持(kubeadm 默认测试平台) | 完全支持 |
| 容器运行时兼容 | containerd / Docker 开箱即用 | 需额外配置 SELinux 策略 |
| 运维工具链 | Netplan / systemd-resolved | NetworkManager / firewalld |
选型建议:若团队以 Debian/Ubuntu 为主,或追求容器生态最新特性,选择 Ubuntu 22.04 LTS;若企业已有 RHEL 合规要求或安全审计标准,选择 Rocky Linux 9。服务目录平台后续示例均基于 Ubuntu 22.04 LTS。
2.2 服务器初始化标准流程
服务器初始化应遵循 “不可变基础设施” 原则,通过自动化脚本或配置管理工具(Ansible / Terraform)执行。以下是手动初始化步骤,用于理解底层逻辑:
- 更新系统源并升级内核:
apt update && apt upgrade -y,确保所有安全补丁到位。 - 设置主机名与 hosts 解析:
hostnamectl set-hostname node-01,并在/etc/hosts中写入集群所有节点 IP 与主机名映射。 - 禁用 swap:
swapoff -a并注释/etc/fstab中 swap 条目,Kubernetes 要求必须关闭。 - 加载内核模块:
overlay、br_netfilter,并设置net.bridge.bridge-nf-call-iptables = 1。 - 安装必要工具:
curl、wget、vim、git、jq、net-tools、conntrack。 - 配置时间同步:安装
chrony,指向内网 NTP 服务器,确保集群时间一致。 - 设置 ulimit 与文件描述符:
/etc/security/limits.conf中设置* soft nofile 65535、* hard nofile 65535。
初始化检查清单:建议将上述步骤封装为 Ansible Role,每次新节点上线自动执行,输出初始化报告。避免人工漏配导致集群异常。
2.3 网络规划与 CIDR 设计
服务目录平台涉及三层网络:节点网络、Pod 网络、Service 网络。规划不当会导致 IP 冲突或路由不可达。以下为推荐方案:
| 网络层级 | 推荐 CIDR | 说明 |
|---|---|---|
| 节点网络(物理/虚拟) | 10.100.0.0/16 | 管理、业务、存储 VLAN 隔离,每段 /24 |
| Pod 网络(CNI) | 10.200.0.0/16 | Calico 或 Cilium 分配,每个节点 /24 |
| Service 网络(ClusterIP) | 10.96.0.0/12 | Kubernetes 默认范围,不与节点网段重叠 |
| NodePort 范围 | 30000-32767 | 对外暴露端口,需在安全组放行 |
关键约束:节点网络、Pod 网络、Service 网络三个 CIDR 必须互不重叠,且不能与内网已有网段冲突。建议在规划阶段使用
ipcalc 工具验证。
2.4 SSH 密钥配置与安全加固
SSH 是服务器管理的核心通道,必须从默认密码认证切换到 密钥认证 + 堡垒机跳板 模式。以下是标准配置步骤:
2.4.1 生成并分发 SSH 密钥对
# 在管理节点生成 ed25519 密钥对(推荐,性能与安全性优于 RSA)
ssh-keygen -t ed25519 -C "deploy@service-catalog" -f ~/.ssh/id_ed25519
# 将公钥分发到目标服务器
ssh-copy-id -i ~/.ssh/id_ed25519.pub root@<node-ip>
# 验证免密登录
ssh -i ~/.ssh/id_ed25519 root@<node-ip> "hostname"
2.4.2 SSH 服务端安全加固
编辑 /etc/ssh/sshd_config,应用以下配置:
| 配置项 | 推荐值 | 说明 |
|---|---|---|
| Port | 2222(非默认 22) | 降低扫描攻击面 |
| PermitRootLogin | prohibit-password | 禁止 root 密码登录,仅允许密钥 |
| PasswordAuthentication | no | 完全禁用密码认证 |
| PubkeyAuthentication | yes | 启用公钥认证 |
| AuthorizedKeysFile | .ssh/authorized_keys | 公钥存放路径 |
| MaxAuthTries | 3 | 最大认证尝试次数 |
| ClientAliveInterval | 300 | 空闲超时断开(秒) |
| AllowUsers | deploy ops | 仅允许特定用户登录 |
加固后生效:
systemctl restart sshd。务必在另一个终端保持连接,确认新配置无误后再关闭原会话,避免锁死。
2.5 安全加固综合策略
除 SSH 外,操作系统层面还需执行以下加固措施:
- 防火墙策略:使用
ufw(Ubuntu)或firewalld(Rocky),仅放通 SSH(自定义端口)、API Server(6443)、NodePort 范围、监控与日志采集端口。 - Fail2Ban 防暴力破解:监控 SSH 日志,同一 IP 失败 5 次后封禁 15 分钟。
- 审计日志:启用
auditd,记录/etc/ssh、/etc/sudoers、/etc/passwd等关键文件变更。 - 内核参数优化:
net.ipv4.tcp_syncookies=1、net.ipv4.conf.all.rp_filter=1、net.ipv4.conf.all.accept_source_route=0。 - 自动安全更新:安装
unattended-upgrades(Ubuntu)或dnf-automatic(Rocky),仅应用安全补丁。
2.6 初始化验证与交付物
完成上述步骤后,应输出以下可审计的交付物:
- 服务器初始化报告:包含主机名、IP、内核版本、swap 状态、防火墙规则、SSH 配置摘要。
- SSH 密钥指纹记录:
ssh-keygen -lf ~/.ssh/id_ed25519.pub,登记到密钥管理系统。 - 网络规划表:节点 IP、Pod CIDR、Service CIDR、VLAN 映射关系。
- 安全加固检查清单:逐项确认并签字,作为合规审计依据。