Files
k3s/009-基础设施/部署总结.md
2026-02-05 00:11:05 +08:00

5.8 KiB
Raw Blame History

K3s 基础设施部署总结

部署日期: 2026-01-30

已完成的基础设施组件

1. Helm 包管理工具

  • 版本: v3.20.0
  • 位置: /usr/local/bin/helm
  • 配置: KUBECONFIG 已添加到 ~/.bashrc

2. Longhorn 分布式存储

  • 版本: v1.11.0
  • 命名空间: longhorn-system
  • 存储类: longhorn (默认)
  • S3 备份: 已配置 MinIO S3 备份
    • 备份目标: s3://longhorn-backup@us-east-1/
    • 凭证 Secret: longhorn-crypto
  • 访问: http://longhorn.local

3. Redis 中间件

  • 版本: Redis 7 (Alpine)
  • 命名空间: redis
  • 存储: 5Gi Longhorn 卷
  • 持久化: RDB + AOF 双重持久化
  • 内存限制: 2GB
  • 访问: redis.redis.svc.cluster.local:6379

4. PostgreSQL 数据库

  • 版本: PostgreSQL 16.11
  • 命名空间: postgresql
  • 存储: 10Gi Longhorn 卷
  • 内存限制: 2GB
  • 访问: postgresql-service.postgresql.svc.cluster.local:5432
  • 凭证:
    • 用户: postgres
    • 密码: postgres123

5. Traefik Ingress 控制器

6. Prometheus + Grafana 监控系统

  • 命名空间: monitoring
  • 组件:
    • Prometheus: 时间序列数据库 (20Gi 存储, 15天保留)
    • Grafana: 可视化仪表板 (5Gi 存储)
    • Alertmanager: 告警管理 (5Gi 存储)
    • Node Exporter: 节点指标收集
    • Kube State Metrics: K8s 资源状态
  • Grafana 凭证:
    • 用户: admin
    • 密码: prom-operator
  • 访问:

目录结构

/home/fei/k3s/009-基础设施/
├── 003-helm/
│   ├── install_helm.sh
│   └── readme.md
├── 004-longhorn/
│   ├── deploy.sh
│   ├── s3-secret.yaml
│   ├── values.yaml
│   ├── readme.md
│   └── 说明.md
├── 005-ingress/
│   ├── deploy-longhorn-ingress.sh
│   ├── longhorn-ingress.yaml
│   └── readme.md
└── 006-monitoring/
    ├── deploy.sh
    ├── values.yaml
    ├── ingress.yaml
    └── readme.md

/home/fei/k3s/010-中间件/
├── 001-redis/
│   ├── deploy.sh
│   ├── redis-deployment.yaml
│   └── readme.md
└── 002-postgresql/
    ├── deploy.sh
    ├── postgresql-deployment.yaml
    └── readme.md

存储使用情况

组件 存储大小 存储类
MinIO 50Gi local-path
Redis 5Gi longhorn
PostgreSQL 10Gi longhorn
Prometheus 20Gi longhorn
Grafana 5Gi longhorn
Alertmanager 5Gi longhorn
总计 95Gi -

访问地址汇总

需要在 /etc/hosts 中添加以下配置(将 <节点IP> 替换为实际 IP

<节点IP> longhorn.local
<节点IP> grafana.local
<节点IP> prometheus.local
<节点IP> alertmanager.local
<节点IP> s3.u6.net3w.com
<节点IP> console.s3.u6.net3w.com

快速验证命令

# 查看所有命名空间的 Pods
kubectl get pods -A

# 查看所有 PVC
kubectl get pvc -A

# 查看所有 Ingress
kubectl get ingress -A

# 查看存储类
kubectl get storageclass

# 测试 Redis
kubectl exec -n redis $(kubectl get pod -n redis -l app=redis -o jsonpath='{.items[0].metadata.name}') -- redis-cli ping

# 测试 PostgreSQL
kubectl exec -n postgresql postgresql-0 -- psql -U postgres -c "SELECT version();"

备份策略

  1. Longhorn 卷备份:

    • 所有持久化数据存储在 Longhorn 卷上
    • 可通过 Longhorn UI 创建快照
    • 自动备份到 MinIO S3 (s3://longhorn-backup@us-east-1/)
  2. 数据库备份:

    • Redis: AOF + RDB 持久化
    • PostgreSQL: 可使用 pg_dump 进行逻辑备份
  3. 配置备份:

    • 所有配置文件已保存在 /home/fei/k3s/ 目录
    • 建议定期备份此目录

下一步建议

  1. 安全加固:

    • 修改 PostgreSQL 默认密码
    • 配置 TLS/SSL 证书
    • 启用 RBAC 权限控制
  2. 监控优化:

    • 配置告警通知邮件、Slack、钉钉
    • 导入更多 Grafana 仪表板
    • 为 Redis 和 PostgreSQL 添加专用监控
  3. 高可用:

    • 考虑 Redis 主从复制或 Sentinel
    • 考虑 PostgreSQL 主从复制
    • 增加 K3s 节点实现多节点高可用
  4. 日志收集:

    • 部署 Loki 或 ELK 进行日志聚合
    • 配置日志持久化和查询
  5. CI/CD:

    • 部署 GitLab Runner 或 Jenkins
    • 配置自动化部署流程

维护命令

# 更新 Helm 仓库
helm repo update

# 升级 Longhorn
helm upgrade longhorn longhorn/longhorn --namespace longhorn-system -f values.yaml

# 升级监控栈
helm upgrade kube-prometheus-stack prometheus-community/kube-prometheus-stack --namespace monitoring -f values.yaml

# 查看 Helm 发布
helm list -A

# 清理未使用的镜像
kubectl get pods -A -o jsonpath='{range .items[*]}{.spec.containers[*].image}{"\n"}{end}' | sort -u

故障排查

如果遇到问题,请检查:

  1. Pod 状态: kubectl get pods -A
  2. 事件日志: kubectl get events -A --sort-by='.lastTimestamp'
  3. Pod 日志: kubectl logs -n <namespace> <pod-name>
  4. 存储状态: kubectl get pvc -A
  5. Longhorn 卷状态: 访问 http://longhorn.local

联系和支持


部署完成!所有基础设施组件已成功运行。 🎉