概述
本文档描述了如何在 Kubernetes 集群中部署 Solo 博客系统。Solo 是一个基于 Java 的博客系统,使用 MySQL 作为数据库。部署包括以下组件:
- Deployment:运行 Solo 应用的 Pod。
- Service:为 Solo 应用提供内部访问。
- Ingress:为 Solo 应用提供外部访问。
前提条件
- 已安装并配置好 Kubernetes 集群。
- 已安装并配置好
kubectl
命令行工具。 - 已安装并配置好
nginx-ingress-controller
。 - 已准备好 MySQL 数据库,并确保数据库可访问。
- 已准备好域名(如
solo.jiufog.space
),并配置好 DNS 解析。
部署步骤
1. 准备 MySQL 数据库
确保 MySQL 数据库已创建,并准备好以下信息:
- 数据库名称:
solo
- 数据库用户名:
root
- 数据库密码:
<your_password>
(替换为实际密码) - 数据库连接地址:
<your_db_endpoints>
2. 创建 Kubernetes 命名空间
如果 dev
命名空间不存在,请先创建:
kubectl create namespace dev
3. 部署 Solo 应用
将以下内容保存为 solo-deployment.yaml
文件:
apiVersion: apps/v1 kind: Deployment metadata: name: solo namespace: dev spec: replicas: 1 selector: matchLabels: app: solo template: metadata: labels: app: solo spec: containers: - name: solo image: b3log/solo env: - name: RUNTIME_DB value: "MYSQL" - name: JDBC_USERNAME value: "root" - name: JDBC_PASSWORD value: "" # 替换为 root 的密码 - name: JDBC_DRIVER value: "com.mysql.cj.jdbc.Driver" - name: JDBC_URL value: "jdbc:mysql://10.244.3.48:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true" args: [ "--listen_port=8080", "--server_scheme=http", "--server_host=solo.jiufog.space", # 替换为你的域名 "--server_port=" ] ports: - containerPort: 8080
使用 kubectl
部署:
kubectl apply -f solo-deployment.yaml
4. 创建 Service
将以下内容保存为 solo-service.yaml
文件:
apiVersion: v1 kind: Service metadata: name: solo-service namespace: dev spec: selector: app: solo ports: - protocol: TCP port: 80 targetPort: 8080
使用 kubectl
部署:
kubectl apply -f solo-service.yaml
5. 创建 Ingress
将以下内容保存为 solo-ingress.yaml
文件:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: solo-ingress namespace: dev spec: ingressClassName: nginx rules: - host: solo.jiufog.space # 替换为你的域名 http: paths: - path: / pathType: Prefix backend: service: name: solo-service port: number: 80
使用 kubectl
部署:
kubectl apply -f solo-ingress.yaml
验证部署
- 检查 Pod 状态:
kubectl get pods -n dev
确保 solo
Pod 状态为 Running
。
- 检查 Service 状态:
kubectl get svc -n dev
确保 solo-service
已创建。
- 检查 Ingress 状态:
kubectl get ingress -n dev
确保 solo-ingress
已创建,并检查其 ADDRESS
字段是否已分配。
- 访问 Solo 博客:
在浏览器中访问http://solo.jiufog.space
,确保页面正常加载。
注意事项
- 数据库密码:请确保在
solo-deployment.yaml
中正确填写JDBC_PASSWORD
。 - 域名解析:确保域名
solo.jiufog.space
已正确解析到 Kubernetes 集群的 Ingress 控制器 IP。 - HTTPS:如果需要启用 HTTPS,请在 Ingress 中配置 TLS 证书。
故障排查
- Pod 无法启动:
- 检查日志:
kubectl logs <pod-name> -n dev
- 确保数据库连接信息正确。
- 无法访问服务:
- 检查 Ingress 控制器日志:
kubectl logs -n ingress-nginx <ingress-nginx-pod-name>
- 确保 DNS 解析正确。
清理资源
如果需要删除部署,可以运行以下命令:
kubectl delete -f solo-deployment.yaml kubectl delete -f solo-service.yaml kubectl delete -f solo-ingress.yaml
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于