✨ 欢迎访问!本站所有文章均为原创,转载请注明出处 🌟

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端口

  • 如此就完成实验

posted @ 2025-07-09 21:42  lonely1220  阅读(28)  评论(0)    收藏  举报