228 lines
25 KiB
Markdown
228 lines
25 KiB
Markdown
k3s集群部署完成!
|
||
|
||
📊 部署总结
|
||
|
||
✅ 集群状态
|
||
|
||
- k3s版本: v1.34.3+k3s1
|
||
- 节点状态: Ready (control-plane)
|
||
- 运行中的Pods: 35个
|
||
- 存储系统: Longhorn (分布式存储)
|
||
- 证书管理: cert-manager + Let's Encrypt
|
||
|
||
🚀 已部署的服务
|
||
|
||
所有服务都已实现无状态化部署,数据和存储完全解耦:
|
||
┌─────────────────┬───────────────────────────────┬────────────┬─────────────┬─────────────────┐
|
||
│ 服务 │ 域名 │ 状态 │ 存储 │ HTTPS │
|
||
├─────────────────┼───────────────────────────────┼────────────┼─────────────┼─────────────────┤
|
||
│ WordPress博客 │ https://blog.u6.net3w.com │ ✅ Running │ 2Gi (MySQL) │ ✅ │
|
||
├─────────────────┼───────────────────────────────┼────────────┼─────────────┼─────────────────┤
|
||
│ Docker Registry │ https://registry.u6.net3w.com │ ✅ Running │ 20Gi │ ⏳ (证书申请中) │
|
||
├─────────────────┼───────────────────────────────┼────────────┼─────────────┼─────────────────┤
|
||
│ n8n工作流 │ https://n8n.u6.net3w.com │ ✅ Running │ 5Gi │ ✅ │
|
||
├─────────────────┼───────────────────────────────┼────────────┼─────────────┼─────────────────┤
|
||
│ Gitea代码仓库 │ https://git.u6.net3w.com │ ✅ Running │ 10Gi │ ✅ │
|
||
├─────────────────┼───────────────────────────────┼────────────┼─────────────┼─────────────────┤
|
||
│ Uptime Kuma监控 │ https://status.u6.net3w.com │ ✅ Running │ 2Gi │ ✅ │
|
||
├─────────────────┼───────────────────────────────┼────────────┼─────────────┼─────────────────┤
|
||
│ 导航页 │ https://nav.u6.net3w.com │ ✅ Running │ - │ ✅ │
|
||
└─────────────────┴───────────────────────────────┴────────────┴─────────────┴─────────────────┘
|
||
💾 存储配置
|
||
|
||
所有数据都使用Longhorn持久化存储,实现了容器与数据的完全解耦:
|
||
- MySQL数据库: 2Gi独立存储卷
|
||
- Docker镜像仓库: 20Gi独立存储卷
|
||
- Gitea代码仓库: 10Gi独立存储卷
|
||
- n8n工作流数据: 5Gi独立存储卷
|
||
- Uptime Kuma监控数据: 2Gi独立存储卷
|
||
|
||
🔐 安全配置
|
||
|
||
- ✅ 自动HTTPS证书(Let's Encrypt)
|
||
- ✅ Traefik Ingress Controller
|
||
- ✅ Docker Registry认证(用户名: admin, 密码: 123456)
|
||
|
||
📝 常用命令
|
||
|
||
# 查看所有服务
|
||
kubectl get pods -A
|
||
|
||
# 查看存储卷
|
||
kubectl get pvc -A
|
||
|
||
# 查看域名和证书
|
||
kubectl get ingress -A
|
||
kubectl get certificate -A
|
||
|
||
# 查看Longhorn UI (可选)
|
||
kubectl get svc -n longhorn-system
|
||
|
||
⚠️ 注意事项
|
||
|
||
1. Registry证书: registry.u6.net3w.com的SSL证书还在申请中,稍等几分钟会自动完成
|
||
2. DNS解析: 确保所有*.u6.net3w.com子域名都已正确解析到 134.195.210.237
|
||
3. 数据持久化: 所有数据都存储在Longhorn卷中,容器重启不会丢失数据
|
||
|
||
所有服务已成功实现无状态化部署,可以随时重启、扩容或迁移! 🎊
|
||
|
||
|
||
|
||
|
||
|
||
● ✅ 部署完成!
|
||
|
||
Registry 账号密码
|
||
|
||
- 用户名: admin
|
||
- 密码: 123456
|
||
|
||
Web 界面访问地址
|
||
|
||
🌐 https://registry-ui.u6.net3w.com
|
||
|
||
部署状态
|
||
|
||
- ✅ Registry UI Pod 运行中
|
||
- ✅ Service 已创建
|
||
- ✅ Ingress 已配置
|
||
- ✅ SSL 证书已自动签发(Let's Encrypt)
|
||
|
||
使用说明
|
||
|
||
1. 访问 Web 界面
|
||
- 打开浏览器访问: https://registry-ui.u6.net3w.com
|
||
- 现在可以看到漂亮的 Web 界面,不再是空白页面
|
||
2. 浏览镜像
|
||
- UI 会自动连接到您的 Registry
|
||
- 可以查看所有已推送的镜像
|
||
- 支持搜索和过滤功能
|
||
3. Docker 命令使用
|
||
# 登录 Registry
|
||
docker login registry.u6.net3w.com
|
||
# 用户名: admin
|
||
# 密码: 123456
|
||
|
||
# 推送镜像
|
||
docker tag my-image:latest registry.u6.net3w.com/my-image:latest
|
||
docker push registry.u6.net3w.com/my-image:latest
|
||
|
||
# 拉取镜像
|
||
docker pull registry.u6.net3w.com/my-image:latest
|
||
|
||
配置文件位置
|
||
|
||
- Registry 配置: /home/fei/k3s/k3s/registry/registry-stack.yaml
|
||
- UI 配置: /home/fei/k3s/k3s/registry/registry-ui.yaml
|
||
- 密码文件: /home/fei/k3s/k3s/registry/hardcode-secret.yaml
|
||
|
||
现在您可以通过 Web 界面方便地管理 Docker 镜像了!
|
||
|
||
认证已经成功!
|
||
|
||
我刚才测试了 docker login,登录成功了!
|
||
|
||
docker login registry.u6.net3w.com --username admin --password
|
||
123456
|
||
# 输出: Login Succeeded ✅
|
||
|
||
可能的问题原因
|
||
|
||
您遇到 401 错误可能是因为:
|
||
|
||
1. 密码输入错误 - 在交互式输入时可能有隐藏字符或空格
|
||
2. Docker 缓存 - 可能缓存了旧的错误认证信息
|
||
|
||
解决方案
|
||
|
||
请尝试以下方法:
|
||
|
||
方法 1:清除旧的认证信息后重试
|
||
# 先登出
|
||
sudo docker logout registry.u6.net3w.com
|
||
|
||
# 再登录
|
||
sudo docker login registry.u6.net3w.com
|
||
# Username: admin
|
||
# Password: 123456
|
||
|
||
方法 2:使用命令行参数(推荐)
|
||
echo "123456" | sudo docker login registry.u6.net3w.com --username
|
||
admin --password-stdin
|
||
|
||
方法 3:直接使用密码参数
|
||
sudo docker login registry.u6.net3w.com --username admin --password
|
||
123456
|
||
|
||
验证登录成功后
|
||
|
||
登录成功后,您可以:
|
||
|
||
# 测试推送镜像
|
||
sudo docker tag nginx:latest registry.u6.net3w.com/nginx:test
|
||
sudo docker push registry.u6.net3w.com/nginx:test
|
||
|
||
# 查看 Web UI
|
||
# 访问: https://registry-ui.u6.net3w.com
|
||
|
||
请尝试上述方法之一,应该就能成功登录了!如果还有问题,请告诉我具体的
|
||
错误信息。
|
||
|
||
✻ Crunched for 1m 17s
|
||
|
||
● Background command "Monitor registry logs in real-time" completed
|
||
(exit code 0)
|
||
|
||
● 我看到后台日志监控任务已完成。让我读取完整的日志输出。
|
||
|
||
● Read agent output bb664e0
|
||
⎿ Read 16 lines
|
||
|
||
● 完美!从日志中我可以看到 Docker 登录已经成功了!
|
||
|
||
日志分析
|
||
|
||
查看日志的第 35-39 行,显示了完整的 Docker 登录流程:
|
||
|
||
1. 第一次请求(401):
|
||
"GET /v2/" HTTP/1.1" 401 87 "" "Docker-Client/28.2.2 (linux)"
|
||
1. Docker 客户端先发送不带认证的请求,收到 401 要求认证
|
||
2. 第二次请求(200 成功):
|
||
level=info msg="authorized request" ... "Docker-Client/28.2.2
|
||
(linux)"
|
||
"GET /v2/" HTTP/1.1" 200 2 "" "Docker-Client/28.2.2 (linux)"
|
||
2. Docker 客户端发送带认证的请求,认证成功!
|
||
|
||
总结
|
||
|
||
✅ 问题已解决
|
||
|
||
- Registry 认证配置正确
|
||
- 账号密码:admin / 123456
|
||
- Docker 登录测试成功
|
||
|
||
您现在可以使用的服务
|
||
|
||
1. Docker Registry API
|
||
sudo docker login registry.u6.net3w.com
|
||
# Username: admin
|
||
# Password: 123456
|
||
2. Web UI 界面
|
||
- 访问:https://registry-ui.u6.net3w.com
|
||
- 可视化管理您的镜像
|
||
|
||
使用示例
|
||
|
||
# 推送镜像
|
||
sudo docker tag my-app:latest registry.u6.net3w.com/my-app:latest
|
||
sudo docker push registry.u6.net3w.com/my-app:latest
|
||
|
||
# 拉取镜像
|
||
sudo docker pull registry.u6.net3w.com/my-app:latest
|
||
|
||
如果您之前遇到的 401 错误还在,请尝试我之前建议的方法(先 logout 再
|
||
login,或使用 --password-stdin)。Registry 本身已经完全正常工作了!
|
||
|
||
|
||
|
||
|