先决条件
- 一台Linux服务器(或本地虚拟机),建议Ubuntu/CentOS
- 基础命令行操作能力
- 确保服务器有至少2GB内存和10GB磁盘空间
1. 安装k3s(极简Kubernetes)
1.1 一键安装
# 用root用户或sudo权限执行以下命令
curl -sfL https://get.k3s.io | sh -
解释:
k3s
是一个轻量级Kubernetes发行版,专为资源有限的环境设计- 这条命令会自动下载并安装k3s,默认使用
containerd
作为容器运行时
1.2 验证安装
# 检查k3s服务状态
sudo systemctl status k3s# 查看节点(此时应显示一个节点)
sudo kubectl get nodes
可能遇到的问题:
- 如果提示
kubectl command not found
,尝试退出终端重新登录
2. 部署MySQL数据库
2.1 创建存储卷(保存数据库数据)
创建文件 mysql-pvc.yaml
:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: mysql-pvc
spec:accessModes:- ReadWriteOnce # 存储卷只能被一个节点挂载resources:requests:storage: 1Gi # 申请1GB存储空间
应用配置:
sudo kubectl apply -f mysql-pvc.yaml
2.2 设置数据库密码(安全存储)
# 创建一个名为mysql-secret的密钥,密码为yourpassword(自行修改)
sudo kubectl create secret generic mysql-secret --from-literal=password=yourpassword
2.3 部署MySQL
创建文件 mysql-deployment.yaml
:
apiVersion: apps/v1
kind: Deployment
metadata:name: mysql-deployment
spec:replicas: 1 # 只运行1个副本selector:matchLabels:app: mysqltemplate:metadata:labels:app: mysqlspec:containers:- name: mysqlimage: mysql:5.7 # 使用MySQL 5.7镜像ports:- containerPort: 3306env:- name: MYSQL_ROOT_PASSWORD # 从密钥读取密码valueFrom:secretKeyRef:name: mysql-secretkey: passwordvolumeMounts:- mountPath: /var/lib/mysql # 挂载存储卷到容器内目录name: mysql-storagevolumes:- name: mysql-storagepersistentVolumeClaim:claimName: mysql-pvc # 使用之前创建的存储卷
---
apiVersion: v1
kind: Service
metadata:name: mysql-service
spec:selector:app: mysqlports:- protocol: TCPport: 3306 # 服务对外暴露的端口targetPort: 3306 # 容器内部端口type: ClusterIP # 仅集群内部访问
应用配置:
sudo kubectl apply -f mysql-deployment.yaml
验证MySQL是否运行:
sudo kubectl get pods # 查看状态是否为Running
3. 部署Redis缓存
3.1 创建存储卷(保存Redis数据)
创建文件 redis-pvc.yaml
:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: redis-pvc
spec:accessModes:- ReadWriteOnceresources:requests:storage: 1Gi
应用配置:
sudo kubectl apply -f redis-pvc.yaml
3.2 部署Redis
创建文件 redis-deployment.yaml
:
apiVersion: apps/v1
kind: Deployment
metadata:name: redis-deployment
spec:replicas: 1selector:matchLabels:app: redistemplate:metadata:labels:app: redisspec:containers:- name: redisimage: redis:alpine # 轻量级Redis镜像ports:- containerPort: 6379volumeMounts:- mountPath: /data # Redis数据存储目录name: redis-storagevolumes:- name: redis-storagepersistentVolumeClaim:claimName: redis-pvc
---
apiVersion: v1
kind: Service
metadata:name: redis-service
spec:selector:app: redisports:- protocol: TCPport: 6379targetPort: 6379type: ClusterIP
应用配置:
sudo kubectl apply -f redis-deployment.yaml
4. 部署PHP应用
4.1 创建PHP服务
创建文件 php-deployment.yaml
:
apiVersion: apps/v1
kind: Deployment
metadata:name: php-deployment
spec:replicas: 2 # 运行2个副本提高可用性selector:matchLabels:app: phptemplate:metadata:labels:app: phpspec:containers:- name: phpimage: php:7.4-fpm # PHP-FPM镜像env:- name: MYSQL_HOSTvalue: "mysql-service" # 通过服务名连接MySQL- name: REDIS_HOSTvalue: "redis-service" # 通过服务名连接RedisvolumeMounts:- mountPath: /var/www/html # PHP代码目录name: php-codevolumes:- name: php-codeemptyDir: {} # 临时存储(生产环境需替换为持久化存储)
应用配置:
sudo kubectl apply -f php-deployment.yaml
5. 部署Nginx反向代理
5.1 配置Nginx
创建文件 nginx-config.yaml
:
apiVersion: v1
kind: ConfigMap
metadata:name: nginx-config
data:nginx.conf: |server {listen 80;root /var/www/html; # PHP代码目录index index.php;location / {try_files $uri $uri/ /index.php$is_args$args;}location ~ .php$ {fastcgi_pass php-service:9000; # 转发请求到PHP服务include fastcgi_params;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;}}
应用配置:
sudo kubectl apply -f nginx-config.yaml
5.2 部署Nginx
创建文件 nginx-deployment.yaml
:
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deployment
spec:replicas: 2selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:alpineports:- containerPort: 80volumeMounts:- mountPath: /etc/nginx/conf.d # 挂载配置文件name: nginx-config- mountPath: /var/www/html # 共享PHP代码目录name: php-codevolumes:- name: nginx-configconfigMap:name: nginx-config # 使用ConfigMap中的配置- name: php-codeemptyDir: {}
---
apiVersion: v1
kind: Service
metadata:name: nginx-service
spec:selector:app: nginxports:- protocol: TCPport: 80targetPort: 80type: NodePort # 通过节点IP+端口访问
应用配置:
sudo kubectl apply -f nginx-deployment.yaml
6. 访问应用
6.1 查看服务端口
sudo kubectl get svc nginx-service
输出示例:
NAME TYPE CLUSTER-IP PORT(S) AGE
nginx-service NodePort 10.43.123.45 80:30007/TCP 5m
30007
是外部访问端口(随机分配)
6.2 通过浏览器访问
-
如果部署在本地虚拟机:
http://localhost:30007
-
如果部署在云服务器:
http://<服务器公网IP>:30007
7. 补充说明
7.1 如何上传PHP代码?
-
临时测试:进入PHP容器手动创建文件
sudo kubectl exec -it <php-pod名称> -- bash echo "<?php phpinfo(); ?>" > /var/www/html/index.php
-
正式部署:
- 将代码打包到Docker镜像中
- 或使用持久化存储(如NFS)
7.2 常用命令
# 查看所有资源状态
sudo kubectl get pods,svc,pvc# 查看Pod日志(替换<pod-name>)
sudo kubectl logs -f <pod-name># 删除部署
sudo kubectl delete -f <文件名>.yaml
7.3 遇到问题怎么办?
-
检查Pod状态:
sudo kubectl describe pod <pod-name>
-
检查服务是否正常:
sudo kubectl port-forward svc/nginx-service 8080:80 # 然后访问 http://localhost:8080
推荐 🌟🌟🌟🌟🌟
🔍 dblens for MySQL - 下一代智能数据库管理与开发工具
🚀 免费下载 | 开箱即用 | AI赋能 | 全链路SQL开发
🌟 核心亮点功能
🤖 AI 智能引擎
- AI自然语言对话:用日常语言描述需求,自动生成精准SQL语句
- SQL智能优化器:AI深度解析执行计划,提供性能优化建议
- 测试数据工厂:智能生成海量仿真测试数据,支持复杂业务规则
- 大模型定制中心:支持配置接入/训练专属领域大模型
🛠️ 智能开发套件
- 可视化表设计器:设计表,实时DDL同步
- AI SQL编辑器:
- 智能语法高亮
- 智能语法补全
- 动态错误检测 + 一键修复
- 多窗口对比调试
- AI对象生成:自动创建表/视图/存储过程/函数
📊 数据管理矩阵
- 智能SQL筛选器:可视化条件组合生成复杂查询
- 数据字典中心:自动生成文档,支持PDF
- 云原生数据库沙箱:预置测试实例,5秒快速连接
- 异构数据迁移:支持Excel/CSV/JSON ↔ 数据库双向同步
🚄 效率加速器
- 自然语言转SQL:业务人员也能轻松操作数据库
- SQL历史版本对比:智能识别语法差异
- 跨平台工作区:Windows/macOS/Linux全支持
- 多语言界面:中文/英文自由切换
🎯 适用场景
✅ 敏捷开发团队快速迭代
✅ DBA智能运维管理
✅ 数据分析师自助查询
✅ 教学培训SQL编程
✅ 企业级数据资产管理
⚡ 即刻体验
→ [立即下载] https://sourceforge.net/projects/dblens-for-mysql