Files
k3s_auto_deploy/JPD-DEPLOYMENT-REPORT.md

9.1 KiB
Raw Blame History

JPD集群部署完成报告

🎉 部署成功!

部署时间: 2026-02-04 集群名称: JPD K3s Cluster 部署状态: 成功


📊 集群信息

节点状态

节点 主机名 公网IP 内网IP 角色 状态 版本
Master jp1 149.13.91.216 10.198.0.112 control-plane Ready v1.28.5+k3s1
Worker1 jp2 149.13.91.64 10.198.0.175 worker Ready v1.28.5+k3s1
Worker2 jp3 149.13.91.59 10.198.0.111 worker Ready v1.28.5+k3s1

已部署组件

核心组件 (kube-system)

  • CoreDNS - DNS服务
  • Traefik - Ingress控制器 (LoadBalancer)
  • Metrics Server - 资源监控
  • Local Path Provisioner - 本地存储

Gitea (gitea namespace)

  • Gitea主服务 - 1个Pod
  • PostgreSQL HA - 3个实例
  • Valkey Cluster (Redis) - 3个实例
  • PgPool - 1个实例
  • 总计: 8个Pod全部Running

ArgoCD (argocd namespace)

  • argocd-server - Web UI和API
  • argocd-repo-server - Git仓库管理
  • argocd-application-controller - 应用控制器
  • argocd-dex-server - SSO认证
  • argocd-redis - 缓存
  • argocd-applicationset-controller - ApplicationSet控制器
  • argocd-notifications-controller - 通知控制器
  • 总计: 7个Pod全部Running

🔑 访问信息

Gitea Git仓库服务

访问地址:

登录凭证:

用户名: gitea_admin
密码: GitAdmin@2026
邮箱: admin@jpd.net3w.com

测试访问:

curl http://149.13.91.216:30080
# 或
curl http://git.jpd.net3w.com

ArgoCD GitOps平台

获取访问地址:

ssh fei@149.13.91.216
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml

# 配置NodePort
kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "NodePort"}}'

# 获取端口
kubectl get svc argocd-server -n argocd

获取admin密码:

kubectl -n argocd get secret argocd-initial-admin-secret \
  -o jsonpath="{.data.password}" | base64 -d && echo

登录凭证:

用户名: admin
密码: (使用上面命令获取)

🌐 网络配置

当前端口映射

服务 类型 内部端口 外部端口 访问地址
Gitea HTTP NodePort 3000 30080 http://149.13.91.216:30080
Traefik HTTP LoadBalancer 80 31637 http://149.13.91.216:31637
Traefik HTTPS LoadBalancer 443 30672 https://149.13.91.216:30672
ArgoCD ClusterIP 80/443 - 需配置NodePort或Ingress

DNS配置建议

在域名服务商控制台添加以下记录:

# 泛域名解析(推荐)
*.jpd.net3w.com         A    149.13.91.216

# 或单独配置
git.jpd.net3w.com       A    149.13.91.216
argocd.jpd.net3w.com    A    149.13.91.216
*.jpd1.net3w.com        A    149.13.91.216
*.jpd2.net3w.com        A    149.13.91.64
*.jpd3.net3w.com        A    149.13.91.59

📝 常用管理命令

在本地机器上通过SSH执行

# 查看所有Pod
sshpass -p '1' ssh fei@149.13.91.216 "export KUBECONFIG=/etc/rancher/k3s/k3s.yaml && kubectl get pods --all-namespaces"

# 查看所有Service
sshpass -p '1' ssh fei@149.13.91.216 "export KUBECONFIG=/etc/rancher/k3s/k3s.yaml && kubectl get svc --all-namespaces"

# 查看节点状态
sshpass -p '1' ssh fei@149.13.91.216 "export KUBECONFIG=/etc/rancher/k3s/k3s.yaml && kubectl get nodes -o wide"

# 查看资源使用
sshpass -p '1' ssh fei@149.13.91.216 "export KUBECONFIG=/etc/rancher/k3s/k3s.yaml && kubectl top nodes"

在Master节点上执行

# SSH到master节点
ssh fei@149.13.91.216

# 配置环境变量
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml

# 查看所有资源
kubectl get all --all-namespaces

# 查看特定命名空间
kubectl get pods -n gitea
kubectl get pods -n argocd

# 查看日志
kubectl logs -n gitea <pod-name>
kubectl logs -n argocd <pod-name>

# 查看Pod详情
kubectl describe pod -n gitea <pod-name>

🚀 下一步操作

1. 配置ArgoCD访问

# SSH到master节点
ssh fei@149.13.91.216
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml

# 方式1: 配置NodePort
kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "NodePort"}}'
ARGOCD_PORT=$(kubectl get svc argocd-server -n argocd -o jsonpath='{.spec.ports[0].nodePort}')
echo "ArgoCD访问地址: https://149.13.91.216:$ARGOCD_PORT"

# 方式2: 创建Ingress (推荐)
cat <<EOF | kubectl apply -f -
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: argocd-server
  namespace: argocd
  annotations:
    traefik.ingress.kubernetes.io/router.tls: "true"
spec:
  ingressClassName: traefik
  rules:
  - host: argocd.jpd.net3w.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: argocd-server
            port:
              number: 80
EOF

2. 部署cert-manager (HTTPS支持)

# 部署cert-manager
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.13.0/cert-manager.yaml

# 等待就绪
kubectl wait --for=condition=ready pod -l app=cert-manager -n cert-manager --timeout=300s

# 创建Let's Encrypt ClusterIssuer
cat <<EOF | kubectl apply -f -
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-prod
spec:
  acme:
    server: https://acme-v02.api.letsencrypt.org/directory
    email: admin@jpd.net3w.com
    privateKeySecretRef:
      name: letsencrypt-prod
    solvers:
    - http01:
        ingress:
          class: traefik
EOF

3. 配置Gitea Ingress (HTTPS)

cat <<EOF | kubectl apply -f -
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: gitea
  namespace: gitea
  annotations:
    cert-manager.io/cluster-issuer: "letsencrypt-prod"
spec:
  ingressClassName: traefik
  tls:
  - hosts:
    - git.jpd.net3w.com
    secretName: gitea-tls
  rules:
  - host: git.jpd.net3w.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: gitea-http
            port:
              number: 3000
EOF

4. 在Gitea中创建组织和仓库

  1. 访问 http://149.13.91.216:30080
  2. 使用 gitea_admin / GitAdmin@2026 登录
  3. 创建组织: k3s-apps
  4. 创建仓库: demo-app, nginx-app
  5. 创建ArgoCD用户: argocd / ArgoCD@2026

5. 配置ArgoCD连接Gitea

  1. 访问ArgoCD Web UI
  2. 登录 (admin / 密码从secret获取)
  3. Settings -> Repositories -> Connect Repo
  4. 添加Gitea仓库URL

6. 部署测试应用

参考 MANUAL-DEPLOYMENT-GUIDE.md 创建和部署应用。


🔍 故障排查

Pod无法启动

# 查看Pod状态
kubectl get pods -n <namespace>

# 查看Pod详情
kubectl describe pod <pod-name> -n <namespace>

# 查看Pod日志
kubectl logs <pod-name> -n <namespace>

# 查看事件
kubectl get events -n <namespace> --sort-by='.lastTimestamp'

服务无法访问

# 检查Service
kubectl get svc -n <namespace>

# 检查Ingress
kubectl get ingress -n <namespace>

# 测试内部访问
kubectl run test-pod --rm -it --image=curlimages/curl -- \
  curl http://<service-name>.<namespace>.svc.cluster.local

重启服务

# 重启Deployment
kubectl rollout restart deployment/<deployment-name> -n <namespace>

# 重启StatefulSet
kubectl rollout restart statefulset/<statefulset-name> -n <namespace>

# 删除Pod强制重建
kubectl delete pod <pod-name> -n <namespace>

📈 监控和维护

查看资源使用

# 节点资源
kubectl top nodes

# Pod资源
kubectl top pods --all-namespaces

# 持续监控
watch kubectl top pods --all-namespaces

备份集群

# 备份etcd
ssh fei@149.13.91.216
sudo k3s etcd-snapshot save --name jpd-backup-$(date +%Y%m%d)

# 查看备份
sudo ls -lh /var/lib/rancher/k3s/server/db/snapshots/

# 下载备份到本地
scp fei@149.13.91.216:/var/lib/rancher/k3s/server/db/snapshots/jpd-backup-* ./backups/

更新组件

# 更新Gitea
helm upgrade gitea gitea-charts/gitea -n gitea

# 更新ArgoCD
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

📚 相关文档


部署检查清单

  • K3s集群部署完成
  • 所有节点Ready
  • 核心组件运行正常
  • Gitea部署完成
  • ArgoCD部署完成
  • DNS配置完成
  • ArgoCD NodePort/Ingress配置
  • cert-manager部署
  • HTTPS证书配置
  • 测试应用部署

🎯 成功指标

集群健康: 3/3节点Ready Gitea: 8/8 Pods Running ArgoCD: 7/7 Pods Running 核心组件: 9/9 Pods Running 总计: 24个Pod全部正常运行


部署完成时间: 约15分钟 集群状态: 🟢 健康运行 下一步: 配置DNS和HTTPS

🎉 恭喜JPD集群GitOps自动化环境部署成功