容器编排:K8s 集群部署(kubeadm / kops)、节点管理全解读

容器编排:K8s 集群部署(kubeadm / kops)、节点管理全解读

容器已经成为现代应用的"标配",而 Kubernetes 则是容器编排领域的事实标准。无论你是想在公司落地 K8s,还是想自己折腾一个练手的集群,理解 如何部署集群如何管理节点,都是迈向云原生的第一步。

这篇文章,星哥就来带你把 Kubernetes 的集群部署方式(kubeadm / kops)和节点管理流程梳理得清清楚楚。


一、部署 Kubernetes:为什么有 kubeadm 和 kops 两种方式?

K8s 本身是"去中心化"的控制系统,但它的安装方式却有很多种。常见的两种是:

  • kubeadm:官方推荐的标准部署工具(适合裸机、虚拟机、自建服务器)
  • kops:Kubernetes Operations(适合在云上快速创建集群)

一句话总结就是:

kubeadm 更像"手工搭建",kops 更像"一键托管"。

下面分别展开细说。


二、kubeadm:最常见的 K8s 自建方式

kubeadm 是 Kubernetes 官方提供的部署工具,被定位为"启动最小可用集群的基础工具"。

✔ kubeadm 的特点

  • 官方标准、文档齐全
  • 灵活度高,可用于物理机和虚拟机
  • 适合本地实验、小公司环境、中小规模生产集群
  • 可搭配 Containerd / Docker / CRI-O

✔ kubeadm 适用场景

  • 你有几台服务器,想部署自己的 K8s
  • 本地 VMware / Proxmox / VirtualBox 练手
  • 公司内部自建集群(非云厂商)

✔ kubeadm 部署流程(简版)

1. 安装基础环境(关闭 swap / 配置 iptables / 开启内核模块)

bash 复制代码
swapoff -a
modprobe br_netfilter
sysctl -w net.bridge.bridge-nf-call-iptables=1

2. 安装 Containerd(推荐)

bash 复制代码
apt install containerd.io

3. 安装 kubeadm / kubelet / kubectl

bash 复制代码
apt install kubeadm kubelet kubectl

4. 初始化 Master 节点

bash 复制代码
kubeadm init --pod-network-cidr=10.244.0.0/16

5. 配置 kubectl 权限

bash 复制代码
mkdir -p ~/.kube
cp /etc/kubernetes/admin.conf ~/.kube/config

6. 部署 CNI 插件(例如 Flannel)

bash 复制代码
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

7. Worker 节点加入集群

bash 复制代码
kubeadm join x.x.x.x:6443 --token xxxx --discovery-token-ca-cert-hash sha256:xxxx

到这里,一个自建 Kubernetes 集群就准备完毕。


三、kops:云端快速创建 K8s 集群的利器

kops 全称 Kubernetes Operations,是一款"集群自动化运维工具"。

一句话描述:

kops = 云上版 kubeadm + Terraform + 自动运维

kops 主要支持:

  • AWS(最成熟)
  • GCE
  • DigitalOcean
  • OpenStack(部分)
  • 本地 KVM(需要额外插件)

✔ kops 的优势

  • 真正做到"一条命令创建可用的 HA K8s 集群"
  • 配置、网络、证书、DNS 全自动化
  • 支持自动扩容、滚动升级
  • 天然契合云平台资源(VPC、Load Balancer、Auto Scaling)

✔ 典型使用场景

  • 在 AWS 部署企业生产级 Kubernetes 集群
  • 快速创建测试环境 / CI 集群
  • 希望集群部署"开箱即用",不用自己调配置

✔ kops 部署流程(简版)

1. 创建 S3 bucket(用于存储 Kops 状态)

bash 复制代码
aws s3api create-bucket --bucket my-kops-state --region ap-southeast-1

2. 创建集群配置

bash 复制代码
kops create cluster \
  --name=k8s.xgcloud.com \
  --state=s3://my-kops-state \
  --zones=ap-southeast-1a \
  --node-count=3 --node-size=t3.large --master-size=t3.large

3. 一键部署

bash 复制代码
kops update cluster k8s.xgcloud.com --yes

4. 验证

bash 复制代码
kubectl get nodes

是不是感觉云端的 K8s 搭建瞬间简单好多?


四、节点管理:K8s 运维的核心环节

无论你用 kubeadm 还是 kops,最终都要面对一个核心主题:

节点(Node)的生命周期管理

下面说说最关键的节点运维操作。


1. 查看节点状态

bash 复制代码
kubectl get nodes -o wide

可以看到:

  • 节点是否 Ready
  • 内核版本
  • 运行时 Containerd、Docker 版本
  • Pod 分布、网络情况

2. 节点扩容(加入新 Worker)

kubeadm:

bash 复制代码
kubeadm token create --print-join-command

再在新节点执行打印出来的 join 命令即可。

kops:

bash 复制代码
kops edit ig nodes
kops update cluster --yes

即可自动扩容。


3. 节点维护(Drain)

当节点需要维护、升级、重启时,要先把 Pod 驱逐:

bash 复制代码
kubectl drain node01 --ignore-daemonsets --delete-emptydir-data

然后维护完成后重新加入:

bash 复制代码
kubectl uncordon node01

4. 节点删除

kubeadm:

bash 复制代码
kubectl delete node node01
kubeadm reset

kops:

bash 复制代码
kops delete ig nodes --yes

5. 节点升级

kubeadm 集群

升级 Master:

bash 复制代码
kubeadm upgrade apply v1.30.0

升级 Worker:

bash 复制代码
kubeadm upgrade node

kops 集群

bash 复制代码
kops upgrade cluster
kops update cluster --yes
kops rolling-update cluster --yes

五、kubeadm vs kops:怎么选?

特性 kubeadm kops
适合环境 裸机 / 自建 云上
部署复杂度 中等(需手动配置) 简单(一键)
运维自动化 一般
适合规模 小到中等 中到大型
学习门槛 较高 较低
可控性 很强 中等

星哥一句话总结:

想深入理解 K8s 架构,用 kubeadm;想快速跑起来集群,用 kops。
企业要生产级 Kubernetes,优先考虑托管服务(如 ACK/EKS/GKE),其次是 kops。

相关推荐
三块钱079412 小时前
群晖docker部署Mattermost,对接openclaw
运维·docker·容器
周航宇JoeZhou13 小时前
JB2-7-HTML
java·前端·容器·html·h5·标签·表单
苦逼IT运维14 小时前
从 0 到 1 理解 Kubernetes:一次“破坏式”学习实践(一)
linux·学习·docker·容器·kubernetes
萧曵 丶14 小时前
Docker 面试题
运维·docker·容器
晨港飞燕15 小时前
容器,pod,节点概念
容器
腾讯云开发者15 小时前
言出法随 -- Chaterm如何通过ASR精准操作K8S
云原生·容器·kubernetes
为什么不问问神奇的海螺呢丶15 小时前
n9e categraf docker 监控配置
运维·docker·容器
青树寒鸦15 小时前
wsl的docker备份mongo和迁移
运维·mongodb·docker·容器
伟大的大威16 小时前
NVIDIA DGX Spark (ARM64/Blackwell) Kubernetes 集群 + GPU Operator 完整部署指南
大数据·spark·kubernetes
爱宇阳18 小时前
WSL2 完整开发环境配置指南
容器