基于 Kubernetes 搭建 DevOps 持续集成环境

发布于:2025-03-06 ⋅ 阅读:(10) ⋅ 点赞:(0)

环境准备

在部署 Kubernetes(K8s)以及相关 DevOps 工具(如 Jenkins、Kuboard、Harbor)时,我们需要确保服务器和软件环境符合要求。

服务器及软件环境

  • 服务器配置:2 核 4G 及以上(推荐至少 2 台,分别作为 Master 和 Worker)
  • 服务器操作系统:Linux(CentOS、Ubuntu 等)
  • Web 服务器:Nginx
  • 数据库:MySQL 5.6 及以上,或 MariaDB 10.3 及以上
  • PHP 版本:PHP7.4 及以上(如需 PHP 兼容性支持,可选择 PHP5.6、PHP8)
  • 服务器管理面板:推荐使用 宝塔面板(支持一键部署)
  • 浏览器:Chrome、Edge 等现代浏览器

服务器选择

在选择云服务器时,我们可以使用 慈云数据提供的云服务器产品,其稳定性和网络性能能够满足 Kubernetes 及 DevOps 相关应用的需求。

示例服务器配置(以 慈云数据 为例):

  • 2 核 4G 适用于轻量级 Kubernetes 集群
  • 4 核 8G 适用于中等规模的持续集成环境
  • 更高配置 可用于大规模应用及生产环境

安装 Kubernetes 及 Kuboard

按照 Kuboard 官方教程,我们可以使用以下步骤进行 Kubernetes 集群的安装。

1. 配置服务器内网通信

确保服务器之间可以通过内网通信,避免不必要的公网流量消耗。可以使用 ping 命令测试互通性:

ping <另一台服务器内网IP>

如果无法连通,需要检查防火墙或网络配置。例如,在 CentOS 上可以执行:

systemctl stop firewalld && systemctl disable firewalld

2. 安装 Docker 并配置 Harbor

在所有节点上安装 Docker,并修改 /etc/docker/daemon.json 以添加 Harbor 私有仓库:

{
  "insecure-registries": ["http://<Harbor_IP>:<Port>"]
}

然后重启 Docker:

systemctl restart docker

3. 安装 Kubernetes

使用 kubeadm 进行 Kubernetes 初始化,Master 节点执行:

kubeadm init --apiserver-advertise-address=<Master_IP> --pod-network-cidr=10.244.0.0/16

Worker 节点加入集群:

kubeadm join <Master_IP>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>

4. 部署 Kuboard

按照官方文档使用 kubectl apply 安装 Kuboard:

kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard.yaml

然后访问 http://<Kuboard_IP>:32567 进行界面管理。

Jenkins 持续集成

Jenkins 主要用于自动化构建、测试和部署应用。推荐安装 Jenkins 并配置 SSH 免密登录,以便自动推送更新到 Kubernetes 集群。

1. 配置 SSH 免密登录

在 Jenkins 服务器上生成 SSH 密钥:

ssh-keygen -t rsa -b 4096

将公钥复制到 Kubernetes Master 节点:

ssh-copy-id root@<Master_IP>

2. 编写 CI/CD Pipeline

在 Jenkins 中创建 pipeline.yml,其中包含:

  • 构建 Docker 镜像并推送至 Harbor
  • 更新 Kubernetes Deployment 配置
  • 自动执行 kubectl apply 部署更新

示例 Pipeline:

stages:
  - stage: Build
    script:
      - docker build -t <Harbor_IP>:<Port>/myapp:latest .
      - docker push <Harbor_IP>:<Port>/myapp:latest
  - stage: Deploy
    script:
      - kubectl apply -f deployment.yml

总结

通过以上步骤,我们可以在云服务器上搭建完整的 Kubernetes + DevOps 持续集成环境,实现从代码提交到应用部署的全流程自动化。此环境适用于各类云服务器,而 慈云数据 的服务器在网络稳定性和计算资源方面也能提供良好的支持。


网站公告

今日签到

点亮在社区的每一天
去签到