容器编排: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。

相关推荐
weixin_307779133 小时前
Jenkins GitHub插件1.45.0:深度集成与实践指南
运维·云原生·云计算·jenkins
如果未来,10 小时前
k8s介绍,及其主要组件作用
云原生·容器·kubernetes
bendan5010 小时前
服务通过docker部署后,调用确定相互调用的URL
运维·docker·容器
阿拉斯攀登12 小时前
Kubernetes(K8s)全面解析:核心概念、架构与实践
docker·云原生·容器·kubernetes·k8s
boboo_2000_013 小时前
基于SpringBoot+Langchain4j的AI机票预订系统
spring cloud·微服务·云原生·langchain
拾忆,想起15 小时前
Dubbo配置方式大全:七种配置任你选,轻松玩转微服务!
服务器·网络·网络协议·微服务·云原生·架构·dubbo
ん贤15 小时前
高可靠微服务消息设计:Outbox模式、延迟队列与Watermill集成实践
redis·微服务·云原生·架构·消息队列·go·分布式系统
White-Legend16 小时前
支持docker一键部署了
运维·docker·容器