9.基于 Git、Docker/k3s 技术构建个人博客系统
0.初始化仓库
-
进入gitee:https://gitee.com/
-
新建仓库:
![image]()
-
就这样:
![image]()
-
初始化:
![image]()
-
在网页:点击克隆下载后:
-
复制命令:
![image]()
-
在云服务器(或者在本地的终端)
-
根目录下(我是这样的):输入刚刚的命令
![image]()
1.搭建项目骨架
-
进入目录
cd cloud-blog -
在该分支下创建所需的 manifest 目录
mkdir -p manifests/mysql manifests/redis manifests/wordpress -
全局配置Git 身份信息
-
换成你的名字(我的是日初)
git config --global user.name "日初" -
邮箱:
git config --global user.email "2804707428@qq.com" -
提交并推送
git add manifests
git commit -m "chore: 初始化项目结构,添加 manifests 目录骨架"
git push -
git push输入之后会你让你输入name: -
我的是
yao_ju_liang -
接着让你输入密码(私人令牌也可以,我用私人令牌):
-
在首页->个人设置->安全设置->私人令牌
-
按照着填写就可以了:
![image]()
-
最后,把令牌复制上去
-
配置 Git 缓存凭证,避免每次都输入
git config --global credential.helper store
2.创建 MySQL 的 YAML 文件
cd ~/cloud-blog
cat > manifests/mysql/mysql-deployment.yaml << 'EOF'
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql
labels:
app: mysql
spec:
replicas: 1
selector:
matchLabels:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- name: mysql
image: mysql:5.7
imagePullPolicy: IfNotPresent
env:
- name: MYSQL_ROOT_PASSWORD
value: "123"
ports:
- containerPort: 3306
volumeMounts:
- name: mysql-data
mountPath: /var/lib/mysql
volumes:
- name: mysql-data
persistentVolumeClaim:
claimName: mysql-pvc
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
---
apiVersion: v1
kind: Service
metadata:
name: mysql
labels:
app: mysql
spec:
type: ClusterIP
ports:
- port: 3306
targetPort: 3306
selector:
app: mysql
EOF
-
将修改后的文件 添加到 Git 的暂存区,标记为待提交的变更
git add manifests/mysql/mysql-deployment.yaml -
将暂存区的变更正式提交到本地仓库
git commit -m "feat(mysql): 添加 MySQL Deployment+PVC+Service 配置,密码 123,存储 5Gi" -
将本地仓库的提交推送到远程仓库
git push -
在gitee可以看到:
![image]()
3.启动k3s集群
-
启动 containerd
sudo systemctl start containerd -
启动 k3s 服务
sudo systemctl start k3s -
查看 k3s 服务状态
sudo systemctl status k3s
结果应该如下:(我的cpu直接爆了)
![image]()
-
sudo ss -tnlp | grep 6443
![image]()
-
由于我在https://www.cnblogs.com/lonely1220/p/18959879
已经为k3s配置了mysql和Redis, -
但是因为
- data-dir 在慢速云盘,Kine DB 读写触发严重 I/O 等待,所以我的cpu会被I/O严重拖累
- 又因为journald 持久化写盘、swap 频繁触发 kswapd0,进一步拖垮 I/O
- 无资源限制的容器一启动就解压镜像、挂载卷、写日志,瞬时 IOPS 跑满
-
我试过给容器限制资源,但不知道为什么还是会爆了cpu和内存
-
现在的话我倒是找到过一个方法,就是重新安装 k3s(只留最小控制平面),但是,太麻烦了,而且,还不一定可以完成这个实验
-
现在给接下来的可能可行的方案(在资源充足的条件下,我的就只有2 核 (vCPU) 2GiB,而且还要跑主机的mysql等)
4.未完成
-
之前已经配置了mysql和redis,现在只配置WordPress
-
应用 WordPress 清单:
cd ~/cloud-blog
kubectl apply -f manifests/wordpress/ -
等待 Deployment 就绪
kubectl rollout status deployment/wordpress -
验证 Pod、Service、Ingress
kubectl get pods,svc,ing -l app=wordpress -
访问验证
47.109.149.251 blog.example.com -
接下来可以:浏览器访问
http://blog.example.com -
按提示完成 WordPress 安装向导
-
查询 Service 的 NodePort 端口号
kubectl get svc wordpress -o yaml | grep nodePort
http://47.109.149.251 :设置的NodePort端口 -
如此就完成实验










浙公网安备 33010602011771号