使用Kubeeasy工具快速部署kubernetes
镜像链接:https://pan.baidu.com/s/1zA0cWvXZXxZPSUceNaJHDA
提取码:8888
Kubeeasy 部署 Kubernetes 与传统部署方式的对比
Kubeeasy 是一个面向企业级用户设计的 Kubernetes 自动化部署与管理工具,旨在简化集群的搭建、运维和扩展流程。相较于传统的手动或脚本化部署方式,Kubeeasy 在多个维度上提供了显著差异与优势。
部署效率与自动化程度
传统部署依赖人工编写 Ansible 脚本、Shell 脚本或使用 kubeadm 手动初始化控制平面与工作节点,过程繁琐且易出错。需逐台配置系统环境、安装 Docker/CRI-O、配置 kubeconfig、分发证书等。
Kubeeasy 提供一键式部署功能,通过图形化界面或 CLI 工具完成从主机准备到集群运行的全流程自动化。支持多节点并行部署,极大缩短部署时间,减少人为失误。
环境一致性与可重复性
传统部署中,不同运维人员的操作习惯可能导致节点间配置不一致,引发兼容性问题。例如,内核参数、防火墙规则、CNI 插件版本存在差异。
Kubeeasy 内置标准化模板,统一定义操作系统要求、安全策略、网络插件(如 Calico、Flannel)、存储驱动等,确保所有节点环境一致,实现“一次配置,处处可用”的可重复部署能力。
集群生命周期管理
传统方式下,升级、扩容、故障恢复等操作需手动执行命令,缺乏统一视图和回滚机制。
Kubeeasy 提供完整的集群生命周期管理功能:
- 支持滚动升级控制平面与工作节点
- 可视化查看节点状态、资源使用、组件健康度
- 支持快速扩缩容,自动同步配置
- 提供备份与恢复机制,保障数据安全
安全性与合规性
传统部署中,证书生成、RBAC 权限分配、网络策略配置常因疏忽导致安全隐患。
Kubeeasy 集成安全最佳实践:
- 自动生成加密证书并集中管理
- 默认启用 Pod Security Policies(PSP)与 NetworkPolicy
- 支持基于角色的细粒度权限控制
- 提供审计日志记录与合规检查报告
多集群与混合云支持
传统部署通常局限于单一物理或虚拟环境,跨数据中心或公有云迁移复杂。
Kubeeasy 支持多集群统一管理,可在私有云、公有云(如 AWS、Azure、阿里云)及边缘节点之间灵活部署。通过中心化控制台实现跨集群应用分发、监控与策略同步。
运维可视化与可观测性集成
传统部署后需额外集成 Prometheus、Grafana、ELK 等工具才能实现可观测性。
Kubeeasy 原生集成常用监控与日志组件,提供开箱即用的仪表盘:
- 实时展示集群资源使用率、节点负载、Pod 状态
- 支持告警规则配置与通知推送(邮件、钉钉、企业微信)
- 日志采集与分析一体化,便于故障排查
成本与资源利用率优化
传统部署往往因配置不当导致资源浪费,如过度分配内存或未合理设置资源请求/限制。
Kubeeasy 提供智能资源建议功能,基于历史负载数据推荐合理的资源配额,并支持自动调度优化,提升整体资源利用率,降低运营成本。
总结:Kubeeasy 的核心优势
| 维度 | 传统部署 | Kubeeasy |
|---|---|---|
| 部署速度 | 慢,依赖人工 | 快速,全自动 |
| 环境一致性 | 难保证 | 强一致 |
| 生命周期管理 | 手动,复杂 | 可视化,自动化 |
| 安全性 | 依赖经验 | 内置安全策略 |
| 多集群支持 | 低效,难维护 | 高效,统一管理 |
| 可观测性 | 需额外集成 | 开箱即用 |
| 运维成本 | 高 | 显著降低 |
选择 Kubeeasy 不仅是部署方式的改变,更是从“运维驱动”向“平台驱动”的转型,适用于希望快速构建稳定、安全、可扩展 Kubernetes 生产环境的企业用户。
一、环境准备:
| 主机名 | IP | 节点 |
|---|---|---|
| localhost | 192.168.100.10 | master |
| localhost | 192.168.100.20 | node |
1、关闭防火墙
[root@localhost ~]# systemctl stop firewalld && systemctl disable firewalld[root@localhost ~]# setenforce 02、配置免密连接
[root@localhost ~]# ssh-keygenGenerating public/private rsa key pair. Enterfileinwhichto save the key(/root/.ssh/id_rsa): Created directory'/root/.ssh'.Enter passphrase(emptyforno passphrase): Enter same passphrase again: Your identification has been savedin/root/.ssh/id_rsa Your public key has been savedin/root/.ssh/id_rsa.pub The key fingerprint is: SHA256:Gji1hV/8zJH4hM7QBndVyVfnST6SXuhwQNedxKPWk0w root@localhost.localdomain The key's randomart image is: +---[RSA3072]----+|.oo.o*+O||.=+o.=E=||o o B.+====||o + * *=+o=.||o o S o *o.||.o||.|||||+----[SHA256]-----+[root@localhost ~]# ssh-copy-id 192.168.100.20二、实验部署:
1、将安装包 chinaskills_cloud_paas_v2.1.iso 下载至 master,node 节点/root 目录
[root@localhost ~]# lsanaconda-ks.cfg chinaskills_cloud_paas_v2.1_1.iso[root@localhost ~]# mount -o loop chinaskills_cloud_paas_v2.1_1.iso /mnt/mount: /dev/loop0 写保护,将以只读方式挂载root@localhost ~]# cp -rfv /mnt/* /opt/"/mnt/dependencies"->"/opt/dependencies""/mnt/dependencies/packages-lists.txt"->"/opt/dependencies/packages-lists.txt""/mnt/dependencies/packages.tar.gz"->"/opt/dependencies/packages.tar.gz""/mnt/kubeeasy.tar.gz"->"/opt/kubeeasy.tar.gz""/mnt/kubeeasy-v2.0"->"/opt/kubeeasy-v2.0"[root@master ~]# umount /mnt/2、在两节点安装 kubeeasy 工具
[root@localhost ~]# mv /opt/kubeeasy-v2.0 /usr/bin/kubeeasy3、在两节点安装依赖包
[root@localhost]# tar -zxvf /opt/dependencies/packages.tar.gz -C /opt/dependencies/[root@localhost packages]# dnf -y install /opt/dependencies/packages/*4、在master节点安装 Kubernetes 集群
root@master dependencies]#kubeeasyinstalldepend--host192.168.100.10,192.168.100.20--userroot--password000000 --offline-file /opt/dependencies/packages.tar.gz#密码 ip等自己根据实际情况修改,如果前面你的node节点和master节点一样操作,这步可做可不做安装过程中可另外打开一个 master节点的窗口,使用“tail -f /var/log/kubeinstall.log”命令查看安装详细步骤。无任何报错就ok了!(可做可不做)
[root@master ~]#kubeeasyinstallkubernetes--master192.168.100.10--worker192.168.100.20--userroot--password000000--version1.25.2 --offline-file /opt/kubeeasy.tar.gz注意:如果报错
tar: kubeeasy/harbor/conf/notary-signer.json: Cannot write: No space left on device tar: kubeeasy/harbor/values.yaml: Cannot write: No space left on device tar: kubeeasy/dashboard.tgz: Cannot write: No space left on device tar: Exiting with failure status due to previous errors......通过bind mount把/data/tmp覆盖到/tmp,立即扩大临时目录可用空间,解决ISO 解压或大文件暂存时“空间不足”问题,无需重启、无需格式化(俩节点都做)
[root@localhost ~]# rm -rf /tmp*[root@localhost ~]# mkdir -p /data/tmp[root@localhost ~]# mount --bind /data/tmp/ /tmp/[root@localhost ~]# df -h /tmp/Filesystem Size Used Avail Use% Mounted on /dev/mapper/openeuler-root 89G7.1G 77G9% /tmp5、检查
[root@k8s-master-node1 ~]# kubectl get pods -ANAMESPACE NAME READY STATUS RESTARTS AGE harbor harbor-chartmuseum-6879b85648-qdqlp1/1 Running041m harbor harbor-core-67d76f899d-zq9wp1/1 Running041m harbor harbor-database-01/1 Running041m harbor harbor-jobservice-df7b7bc85-r7msk1/1 Running3(40m ago)41m harbor harbor-nginx-7599458b66-v4wvj1/1 Running041m harbor harbor-notary-server-69d756c4c-75wt41/1 Running041m harbor harbor-notary-signer-75b5545fc-kvsqq1/1 Running041m harbor harbor-portal-67d8547c5f-dnt9g1/1 Running041m harbor harbor-redis-01/1 Running041m harbor harbor-registry-fbd67bdfd-kd7822/2 Running041m harbor harbor-trivy-01/1 Running041m istio-system grafana-56bdf8bf85-z5fmw1/1 Running041m istio-system istio-egressgateway-fffc799cf-s25981/1 Running042m istio-system istio-ingressgateway-7d68764b55-89kvh1/1 Running042m istio-system istiod-5456fd558d-t5khx1/1 Running042m istio-system jaeger-c4fdf6674-vp6sm1/1 Running041m istio-system kiali-8f955f859-79vwg1/1 Running041m istio-system prometheus-85949fddb-fh48q2/2 Running041m kube-system coredns-565d847f94-f5p291/1 Running044m kube-system coredns-565d847f94-lr6sm1/1 Running044m kube-system dashboard-metrics-scraper-64bcc67c9c-c4bmt1/1 Running044m kube-system dashboard-portainer-695648f848-hxj7z1/1 Running041m kube-system etcd-k8s-master-node11/1 Running044m kube-system kube-apiserver-k8s-master-node11/1 Running044m kube-system kube-controller-manager-k8s-master-node11/1 Running044m kube-system kube-flannel-ds-5pk251/1 Running044m kube-system kube-flannel-ds-s8lj71/1 Running044m kube-system kube-proxy-jlwbq1/1 Running044m kube-system kube-proxy-l7p651/1 Running044m kube-system kube-scheduler-k8s-master-node11/1 Running044m kube-system kubernetes-dashboard-74b66d7f9c-rf2xq1/1 Running044m kube-system metrics-server-84c4f4fb8d-n7jtw1/1 Running044m kube-system nfs-client-provisioner-5947b7c5b9-77sdx1/1 Running043m kubevirt virt-api-5dd9ccbc96-2ngqv1/1 Running043m kubevirt virt-api-5dd9ccbc96-kggvt1/1 Running043m kubevirt virt-controller-7659874849-nrwpz1/1 Running042m kubevirt virt-controller-7659874849-thkwj1/1 Running042m kubevirt virt-handler-bpbfr1/1 Running042m kubevirt virt-handler-h4rrj1/1 Running042m kubevirt virt-operator-5db8d9f8f9-f267k1/1 Running043m kubevirt virt-operator-5db8d9f8f9-vllr41/1 Running043m[root@k8s-master-node1 ~]#[root@k8s-master-node1 ~]# kubectl get nodesNAME STATUS ROLES AGE VERSION k8s-master-node1 Ready control-plane 45m v1.25.2 k8s-worker-node1 Ready<none>44m v1.25.2kubernetes到这里就已经部署完成了!
补充:如果net.ipv4.ip_forward=0,建议改成1,操作如下
#开启 Linux 内核 IPv4 转发,开启 ip_forward=1,使节点具备路由转发能力,满足 K8s 跨节点 Pod 通信、Service 负载均衡及外网访问需求,否则 Pod 无法跨节点通信,Service 与外网访问均失败[root@localhost ~]# cat /etc/sysctl.conf | grep 'net.ipv4.ip_forward'net.ipv4.ip_forward=0[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/ip_forward[root@localhost ~]# echo "net.ipv4.ip_forward = 1" > /etc/sysctl.conf[root@localhost ~]# cat /etc/sysctl.conf | grep 'net.ipv4.ip_forward'net.ipv4.ip_forward=1