环境准备
在部署 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 持续集成环境,实现从代码提交到应用部署的全流程自动化。此环境适用于各类云服务器,而 慈云数据 的服务器在网络稳定性和计算资源方面也能提供良好的支持。