二进制方式部署Kubernetes 集群
本文详细介绍如何使用二进制方式在 Debian 系统上搭建一个生产级别的高可用 Kubernetes 集群。
部署规划
服务器清单
| 角色 | 主机名 | IP地址 | 配置 | 系统 |
|---|---|---|---|---|
| LB-1 | lb1.k8s.com | 192.168.171.134 | 2C4G | Debian 12 |
| LB-2 | lb2.k8s.com | 192.168.171.135 | 2C4G | Debian 12 |
| VIP | - | 192.168.171.133 | - | - |
| ETCD-1 | etcd1.k8s.com | 192.168.171.136 | 4C8G | Debian 12 |
| ETCD-2 | etcd2.k8s.com | 192.168.171.137 | 4C8G | Debian 12 |
| ETCD-3 | etcd3.k8s.com | 192.168.171.138 | 4C8G | Debian 12 |
| Master-1 | master1.k8s.com | 192.168.171.136 | 4C8G | Debian 12 |
| Master-2 | master2.k8s.com | 192.168.171.137 | 4C8G | Debian 12 |
| Master-3 | master3.k8s.com | 192.168.171.138 | 4C8G | Debian 12 |
| Worker-1 | worker1.k8s.com | 192.168.171.139 | 8C16G | Debian 12 |
| Harbor | harbor.k8s.com | 192.168.171.50 | 4C8G | Debian 12 |
| NFS | nfs.k8s.com | 192.168.171.140 | 4C8G | Debian 12 |
网络规划
- 节点网段: 192.168.171.0/24
- Pod 网段: 10.244.0.0/16
- Service 网段: 10.96.0.0/12
- DNS 服务: CoreDNS
组件版本
- Kubernetes: v1.27.8
- Etcd: v3.5.9
- Docker: 24.0.7
- Containerd: 1.7.6
- Calico: v3.26.1
- CoreDNS: v1.10.1
- Harbor: v2.9.1
系统初始化
添加软件源
备份原始源文件 |
系统更新
更新软件包索引 |
基础工具安装
安装基础工具包 |
系统语言配置
生成英文语言环境 |
SSH远程访问配置
配置SSH允许root登录 |
Shell环境优化
配置.bashrc |
网络配置(可选)
配置静态IP |
系统优化
关闭swap |
系统服务优化
禁用不需要的服务 |
完成初始化
同步文件系统 |
自动化部署
创建一个初始化脚本 |
注意事项
- 在执行初始化操作前,建议先备份重要数据
- 修改网络配置时需要特别小心,错误的配置可能导致无法远程访问
- 防火墙规则要根据实际需求配置
- 建议保存一份配置文件的备份
- 初始化完成后要及时修改root密码和SSH配置
故障排除
如果在初始化过程中遇到问题,可以检查以下几点:
- 查看系统日志:
journalctl -xe - 检查服务状态:
systemctl status <服务名> - 检查网络连接:
ping -c 4 8.8.8.8 - 验证软件源可用性:
apt update
高可用负载均衡部署
环境准备
更新系统并安装基础工具 |
Keepalived 部署
安装 Keepalived
在所有负载均衡节点上安装 |
配置健康检查脚本
创建健康检查脚本 |
主节点配置
配置主节点的keepalived |
备节点配置
配置备节点的keepalived |
启动服务
检查配置文件语法 |
HAProxy 部署
安装 HAProxy
在所有负载均衡节点上安装 |
配置 HAProxy
备份原配置 |
启动服务
检查配置文件语法 |
验证部署
检查VIP是否生效 |
故障排除
- Keepalived 故障排查:
检查日志 |
- HAProxy 故障排查:
检查日志 |
注意事项
网络配置:
- 确保防火墙允许VRRP协议(端口112)
- 允许HAProxy监听端口(6443, 9090)
- 检查网卡名称是否正确
安全建议:
- 修改Keepalived认证密码
- 更改HAProxy统计页面的访问凭据
- 限制HAProxy统计页面的访问IP
维护建议:
- 定期检查服务状态
- 监控日志信息
- 定期测试故障转移功能
性能优化:
- 根据实际负载调整HAProxy的连接数限制
- 适当调整超时时间
- 监控系统资源使用情况
ETCD 集群部署
环境准备
主机配置
修改主机名 |
配置免密登录
在 etcd1 上执行 |
配置环境变量
在所有节点上执行 |
组件安装
安装 CFSSL 工具
在所有节点上执行 |
安装 ETCD
在所有节点上执行 |
配置 TLS 证书
创建证书配置
在 etcd1 上执行 |
生成证书
在 etcd1 上执行 |
配置 ETCD 服务
创建服务配置文件
在 etcd1 上执行 |
启动服务
在所有节点上执行 |
集群验证
配置命令别名
在所有节点上执行 |
检查集群状态
查看集群成员 |
集群备份
配置自动备份
创建备份目录 |
故障排除
常见问题排查
- 证书问题:
检查证书有效期 |
- 网络问题:
检查端口监听 |
- 日志排查:
查看实时日志 |
性能优化
- 系统参数优化:
调整系统限制 |
- ETCD 参数优化:
- 适当调整
--snapshot-count - 根据实际情况调整
--quota-backend-bytes - 配置合适的
--auto-compaction-retention
注意事项
安全建议:
- 定期更新证书
- 限制访问权限
- 配置防火墙规则
维护建议:
- 定期备份数据
- 监控集群状态
- 及时清理历史数据
性能建议:
- 使用 SSD 存储
- 独立的磁盘空间
- 足够的内存配置
高可用建议:
- 节点跨机架部署
- 配置监控告警
- 定期进行故障演练
Harbor 私有镜像仓库部署
环境准备
DNS 配置
配置本地解析 |
存储配置
安装 LVM 工具 |
Docker 环境配置
安装 Docker
安装依赖包 |
配置 Docker
创建 Docker 配置目录 |
安装 Docker Compose
下载 Docker Compose |
Harbor 部署
下载 Harbor
设置 Harbor 版本 |
配置 Harbor
创建配置文件 |
配置 TLS 证书
创建证书目录 |
安装 Harbor
cd /data/harbor |
客户端配置
配置 Docker 客户端
复制证书到客户端 |
维护管理
备份配置
创建备份脚本 |
监控配置
创建监控脚本 |
故障排除
常见问题
- 证书问题:
检查证书有效期 |
- 存储问题:
检查存储空间 |
- 服务问题:
检查服务状态 |
性能优化
- 系统优化:
调整系统限制 |
- Docker 优化:
- 配置合适的日志轮转策略
- 使用高性能存储
- 定期清理未使用的镜像和容器
注意事项
安全建议:
- 及时更新系统和组件
- 定期轮换密码和证书
- 限制访问权限
- 配置防火墙规则
维护建议:
- 定期备份数据
- 监控系统资源
- 及时清理垃圾数据
- 保持日志分析
高可用建议:
- 配置负载均衡
- 实现数据备份
- 监控告警配置
- 故障恢复演练
Kubernetes 集群环境部署
环境准备
主机配置
配置主机名 |
系统配置
在所有节点上执行 |
组件安装
容器运行时
安装 containerd |
安装 CNI 插件
下载并安装 CNI 插件 |
安装 nerdctl
下载并安装 nerdctl |
安装 Kubernetes 组件
添加 Kubernetes 软件源 |
证书配置
创建证书目录 |
系统优化
性能调优
调整系统限制 |
安全加固
禁用不必要的服务 |
验证部署
验证模块加载 |
注意事项
网络要求:
- 节点间网络互通
- 可访问外网(用于下载组件)
- 防火墙开放必要端口
安全建议:
- 及时更新系统和组件
- 使用最新的稳定版本
- 配置适当的安全策略
维护建议:
- 定期检查系统资源
- 监控关键组件状态
- 保持日志分析和审计
Kubernetes 集群部署
初始化配置
创建集群配置文件
在 master1 节点上执行 |
集群初始化
初始化主节点
在 master1 节点上执行 |
添加节点
在其他 master 节点上执行 |
节点标签管理
添加 worker 标签 |
网络配置
安装 Calico
添加 Helm 仓库 |
CoreDNS 配置
配置 CoreDNS |
组件配置
暴露组件端口
在所有 master 节点上执行 |
集群验证
验证集群状态 |
维护操作
证书更新
查看证书过期时间 |
集群升级
升级 kubeadm |
故障处理
重置节点
清理节点 |
常见问题排查
查看组件日志 |
注意事项
高可用配置:
- 至少部署三个 master 节点
- 使用负载均衡器
- 配置外部 etcd 集群
安全建议:
- 及时更新组件版本
- 配置网络策略
- 使用 RBAC 控制访问
- 定期备份 etcd 数据
性能优化:
- 合理配置资源限制
- 优化网络配置
- 监控系统性能
运维建议:
- 实施监控告警
- 定期进行备份
- 制定故障恢复预案
- 保持文档更新
NFS StorageClass 部署
存储服务器配置
安装 NFS 服务
安装 NFS 服务器 |
配置防火墙
允许 NFS 相关端口 |
客户端配置
安装 NFS 客户端
在所有 Kubernetes 节点上执行 |
StorageClass 部署
安装 NFS Provisioner
创建命名空间 |
验证部署
创建测试 PVC |
监控配置
创建监控脚本 |
注意事项
性能优化:
- 使用 SSD 存储
- 调整 NFS 缓存参数
- 配置合适的网络带宽
安全建议:
- 限制 NFS 访问IP
- 配置防火墙规则
- 定期更新系统
维护建议:
- 定期备份数据
- 监控存储使用量
- 及时清理无用数据
高可用建议:
- 配置 NFS 服务器集群
- 使用网络存储备份
- 配置自动故障转移