273 lines
5.8 KiB
Markdown
273 lines
5.8 KiB
Markdown
# JPD集群后续部署步骤
|
||
|
||
## ✅ 已完成
|
||
|
||
- ✅ K3s集群部署成功
|
||
- ✅ 3个节点全部Ready
|
||
- ✅ 核心组件运行正常(CoreDNS, Traefik, Metrics Server)
|
||
|
||
## 📋 集群信息
|
||
|
||
- **Master节点**: jp1 (149.13.91.216 / 10.198.0.112)
|
||
- **Worker1节点**: jp2 (149.13.91.64 / 10.198.0.175)
|
||
- **Worker2节点**: jp3 (149.13.91.59 / 10.198.0.111)
|
||
|
||
## 🚀 继续部署步骤
|
||
|
||
由于网络限制,需要SSH到master节点进行后续操作。
|
||
|
||
### 步骤1: SSH到Master节点
|
||
|
||
```bash
|
||
ssh fei@149.13.91.216
|
||
```
|
||
|
||
### 步骤2: 配置kubectl(在master节点上)
|
||
|
||
```bash
|
||
# 配置kubectl权限
|
||
sudo chmod 644 /etc/rancher/k3s/k3s.yaml
|
||
|
||
# 配置环境变量
|
||
echo "export KUBECONFIG=/etc/rancher/k3s/k3s.yaml" >> ~/.bashrc
|
||
source ~/.bashrc
|
||
|
||
# 验证集群
|
||
kubectl get nodes -o wide
|
||
kubectl get pods --all-namespaces
|
||
```
|
||
|
||
### 步骤3: 安装Helm(在master节点上)
|
||
|
||
```bash
|
||
# 下载Helm安装脚本
|
||
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 > /tmp/get_helm.sh
|
||
|
||
# 安装Helm
|
||
chmod +x /tmp/get_helm.sh
|
||
sudo /tmp/get_helm.sh
|
||
|
||
# 验证安装
|
||
helm version
|
||
```
|
||
|
||
### 步骤4: 上传部署脚本(在本地机器上)
|
||
|
||
```bash
|
||
# 回到本地机器,上传所有脚本到master节点
|
||
cd /home/fei/opk3s/k3s自动化部署
|
||
scp -r scripts/ config/ fei@149.13.91.216:/home/fei/k3s-deploy/
|
||
```
|
||
|
||
### 步骤5: 部署Gitea(在master节点上)
|
||
|
||
```bash
|
||
# SSH到master节点
|
||
ssh fei@149.13.91.216
|
||
|
||
# 进入部署目录
|
||
cd /home/fei/k3s-deploy
|
||
|
||
# 运行Gitea部署脚本
|
||
bash scripts/deploy-gitea.sh
|
||
|
||
# 等待Gitea Pod就绪(约3-5分钟)
|
||
watch kubectl get pods -n gitea
|
||
|
||
# 获取Gitea访问地址
|
||
GITEA_PORT=$(kubectl get svc gitea-http -n gitea -o jsonpath='{.spec.ports[0].nodePort}')
|
||
echo "Gitea访问地址: http://149.13.91.216:$GITEA_PORT"
|
||
echo "Gitea域名访问: http://git.jpd.net3w.com"
|
||
```
|
||
|
||
### 步骤6: 部署ArgoCD(在master节点上)
|
||
|
||
```bash
|
||
# 运行ArgoCD部署脚本
|
||
bash scripts/deploy-argocd.sh
|
||
|
||
# 等待ArgoCD Pod就绪(约2-3分钟)
|
||
watch kubectl get pods -n argocd
|
||
|
||
# 获取ArgoCD admin密码
|
||
kubectl -n argocd get secret argocd-initial-admin-secret \
|
||
-o jsonpath="{.data.password}" | base64 -d && echo
|
||
|
||
# 访问ArgoCD
|
||
echo "ArgoCD访问地址: https://argocd.jpd.net3w.com"
|
||
echo "用户名: admin"
|
||
```
|
||
|
||
### 步骤7: 配置HTTPS(在master节点上)
|
||
|
||
```bash
|
||
# 部署cert-manager和配置HTTPS
|
||
bash scripts/deploy-https.sh
|
||
|
||
# 等待证书签发(约1-2分钟)
|
||
watch kubectl get certificate --all-namespaces
|
||
```
|
||
|
||
### 步骤8: 部署测试应用(在master节点上)
|
||
|
||
```bash
|
||
# 部署nginx测试应用
|
||
bash scripts/deploy-nginx-app.sh
|
||
|
||
# 验证部署
|
||
kubectl get pods -l app=nginx-test -n default
|
||
kubectl get ingress -n default
|
||
|
||
# 测试访问
|
||
curl http://ng.jpd.net3w.com
|
||
```
|
||
|
||
## 🔧 快速部署命令(一键执行)
|
||
|
||
如果想一次性完成所有部署,可以在master节点上执行:
|
||
|
||
```bash
|
||
# SSH到master节点
|
||
ssh fei@149.13.91.216
|
||
|
||
# 创建部署目录
|
||
mkdir -p /home/fei/k3s-deploy
|
||
|
||
# 退出,从本地上传文件
|
||
exit
|
||
|
||
# 上传部署文件
|
||
cd /home/fei/opk3s/k3s自动化部署
|
||
scp -r scripts/ config/ fei@149.13.91.216:/home/fei/k3s-deploy/
|
||
|
||
# 重新SSH到master节点
|
||
ssh fei@149.13.91.216
|
||
|
||
# 配置kubectl
|
||
sudo chmod 644 /etc/rancher/k3s/k3s.yaml
|
||
echo "export KUBECONFIG=/etc/rancher/k3s/k3s.yaml" >> ~/.bashrc
|
||
source ~/.bashrc
|
||
|
||
# 安装Helm
|
||
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | sudo bash
|
||
|
||
# 进入部署目录
|
||
cd /home/fei/k3s-deploy
|
||
|
||
# 依次部署所有组件
|
||
bash scripts/deploy-gitea.sh
|
||
sleep 180 # 等待Gitea就绪
|
||
|
||
bash scripts/deploy-argocd.sh
|
||
sleep 120 # 等待ArgoCD就绪
|
||
|
||
bash scripts/deploy-https.sh
|
||
sleep 60 # 等待证书签发
|
||
|
||
bash scripts/deploy-nginx-app.sh
|
||
```
|
||
|
||
## 📊 验证部署
|
||
|
||
### 查看所有资源
|
||
|
||
```bash
|
||
# 查看所有命名空间
|
||
kubectl get namespaces
|
||
|
||
# 查看所有Pod
|
||
kubectl get pods --all-namespaces
|
||
|
||
# 查看所有Service
|
||
kubectl get svc --all-namespaces
|
||
|
||
# 查看所有Ingress
|
||
kubectl get ingress --all-namespaces
|
||
|
||
# 查看证书状态
|
||
kubectl get certificate --all-namespaces
|
||
```
|
||
|
||
### 访问服务
|
||
|
||
| 服务 | 访问地址 | 用户名 | 密码 |
|
||
|------|----------|--------|------|
|
||
| Gitea | http://git.jpd.net3w.com | gitea_admin | GitAdmin@2026 |
|
||
| ArgoCD | https://argocd.jpd.net3w.com | admin | (见kubectl命令) |
|
||
| Nginx测试 | http://ng.jpd.net3w.com | - | - |
|
||
|
||
### 获取ArgoCD密码
|
||
|
||
```bash
|
||
kubectl -n argocd get secret argocd-initial-admin-secret \
|
||
-o jsonpath="{.data.password}" | base64 -d && echo
|
||
```
|
||
|
||
## 🔍 故障排查
|
||
|
||
### Pod无法启动
|
||
|
||
```bash
|
||
# 查看Pod详情
|
||
kubectl describe pod <e> -n <namespace>
|
||
|
||
# 查看Pod日志
|
||
kubectl logs <pod-name> -n <namespace>
|
||
|
||
# 查看事件
|
||
kubectl get events -n <namespace> --sort-by='.lastTimestamp'
|
||
```
|
||
|
||
### 服务无法访问
|
||
|
||
```bash
|
||
# 检查Service
|
||
kubectl get svc -n <namespace>
|
||
|
||
# 检查Ingress
|
||
kubectl describe ingress <ingress-name> -n <namespace>
|
||
|
||
# 测试内部访问
|
||
kubectl run test-pod --rm -it --image=curlimages/curl -- \
|
||
curl http://<service-name>.<namespace>.svc.cluster.local
|
||
```
|
||
|
||
### DNS未解析
|
||
|
||
```bash
|
||
# 检查DNS配置
|
||
nslookup git.jpd.net3w.com
|
||
|
||
# 如果DNS未生效,使用NodePort访问
|
||
kubectl get svc -n gitea
|
||
# 访问 http://149.13.91.216:<NodePort>
|
||
```
|
||
|
||
## 📝 重要提示
|
||
|
||
1. **DNS配置**: 确保已在域名服务商配置DNS解析:
|
||
```
|
||
*.jpd.net3w.com A 149.13.91.216
|
||
```
|
||
|
||
2. **防火墙**: 确保以下端口已开放:
|
||
- 6443: Kubernetes API
|
||
- 80: HTTP
|
||
- 443: HTTPS
|
||
- 30000-32767: NodePort范围
|
||
|
||
3. **证书签发**: 首次HTTPS访问需等待1-2分钟证书签发
|
||
|
||
4. **ArgoCD同步**: ArgoCD每3分钟检查一次Git仓库更新
|
||
|
||
## 📚 相关文档
|
||
|
||
- [完整部署指南](./JPD-CLUSTER-DEPLOYMENT.md)
|
||
- [手动部署指南](./MANUAL-DEPLOYMENT-GUIDE.md)
|
||
- [集群迁移指南](./CLUSTER-MIGRATION-GUIDE.md)
|
||
|
||
---
|
||
|
||
**当前状态**: K3s集群已部署,等待部署Gitea和ArgoCD
|
||
**下一步**: SSH到master节点,按照上述步骤继续部署
|