如何通过Ubuntu轻松管理Kubernetes节点,实现高效运维?
- 内容介绍
- 文章标签
- 相关推荐
在实际运维中,管理员常常会遇到以下痛点: ① 节点加入集群时命令丢失或执行失败导致集群不完整;② 网络插件配置错误导致 Pod 之间无法通信;③ 组件版本不统一引发兼容性问题;④ 手动操作繁琐、缺乏可视化工具,排查故障效率低下。下面提供一套基于 Ubuntu 的完整流程。方便你搭建、管理并监控 Kubernetes 节点,切实缓解上述痛点。
一、环境准备
确保 Ubuntu 节点满足以下基础要求:
- 至于程序版本,Ubuntu 20.04 LTS 或更新的发行版。
- 网络连通这方面,所有节点之间能够相互 ping 通。话说回来,
- 硬件资源这方面。每个节点至少 2 CPU、4 GB RAM。老实说,
1. 安装 kubeadm、kubelet、kubectl
官方仓库提供了最新稳定版。这一步可以避免后期因版本不匹配导致的“组件冲突”痛点。
sudo apt update && sudo apt install -y apt-transport-https ca-certificates curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl # 锁定版本。防止自动升级破坏集群
2. 安装容器运行时
Docker 是最成熟的容器运行时兼容性好,可大幅降低“容器启动异常”的排查成本。
sudo apt update && sudo apt upgrade -y
sudo apt install -y ca-certificates gnupg lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb \
至于https,//download.docker.com/linux/ubuntu $ stable" | \
sudo tee /etc/apt/sources.list.d/docker.list> /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
sudo systemctl enable --now docker # 开机自启。避免“Docker 未启动”导致 Pod 启动失败
3. 初始化 Master 节点并部署网络插件
初始化集群:
# 指定 Pod 网络 CIDR
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
初始化成功后终端会输出类似如下的 kubeadm join 命令,请务必保存——这是后续添加 Worker 节点的关键步骤,也是“加入命令丢失”痛点的根源。
# 示例输出
kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:11223344556677889900aabbccddeeff...
配置本地 kubectl:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $:$ $HOME/.kube/config
部署 Calico 网络插件:
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
Calico 能提供高效且易于调试的网络策略,是解决 “Pod 间通信异常” 常见痛点的优先考虑方案。
二、Worker 节点加入与清理
1. 添加 Worker 节点
在 Master 上获取到的 kubeadm join … 命令复制到每台待加入的 Worker 上执行:
# 在 Worker 上执行
sudo kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:11223344556677889900aabbccddeeff...
执行成功后Master 控制面会自动将该节点标记为 Ready。若出现 “node not ready” 或 “certificate signed by unknown authority” 等报错,请检查以下两点:
- 程序时间同步是否正常。怎么说呢,
- Kubelet 与 Docker 服务是否已启动。
2. 重置 & 重新加入节点
当节点需要重新加入或彻底清理时可使用下面的命令快速恢复到初始状态,这能避免手动删除残余文件带来的 “残留配置冲突” 痛点。
# 重置 K8s 状态并清理数据
sudo kubeadm reset -f
sudo rm -rf /etc/kubernetes /var/lib/kubelet /var/lib/containerd
# 重启 Docker 与 containerd 确保干净环境
sudo systemctl restart docker containerd
#
执行上一步获取的 join 命令即可重新加入集群
三、日常资源管理与运维操作
1. 基础资源 CRUD 示例
- 查看节点状态:
# 所有节点概览
kubectl get nodes
# 查看单个节点详细信息
kubectl describe node worker01
- 创建命名空间:
# 为不同业务划分独立命名空间,提高资源隔离度
kubectl create namespace prod-apps
kubectl create namespace dev-test
- 部署示例 Nginx 应用:
# nginx-deployment.yaml 示例文件内容省略。可直接使用 kubectl apply 创建部署
kubectl apply -f https://k8s.io/examples/application/deployment.yaml -n prod-apps
# 检查 Deployment 与 Service 状态
kubectl get deployment -n prod-apps && kubectl get svc -n prod-apps
2. 配置资源配额与网络策略
- 配额示例:
yaml
kubectl apply -f dev-quota.yaml
- 网络策略示例:
kind这方面,NetworkPolicy
metadata:
从name来看,allow-same-namespace
namespace: prod-apps
说到spec,podSelector: {} # 匹配所有 Pod
policyTypes:
- Ingress # 入站策略
- Egress # 出站策略
ingress:
- from:
- podSelector: {} # 同一命名空间内任意 Pod
egress这方面,– to:
– podSelector: {}
kubectl apply -f allow-same-namespace.yaml
四、可视化与提高工具提高运维效率
1. k9s – 命令行交互式 UI
K9s 能让你在终端实时查看 Pods、Deployments、Events 等信息,大幅降低 “kubectl 参数记不住” 的学习成本。
# 使用 Snap 安装
sudo snap install k9s
2. Lens – 桌面 GUI 管理网站
Lens 提供全局视图。包括集群健康状态、工作负载图谱还有日志聚合,是解决 “缺少统一监控面板” 痛点的合适方案。
3. Sonobuoy – 集群诊断工具
SonoBuoy 能一次性跑完 Conformance 测试并生成报告,对排查 “集群不符合规范”“功能缺失”等问题非常有帮助。
# 下载并解压当前版本 curl -LO https://github.com/vmware-tanzu/sonobuoy/releases/download/v0.56/sonobuoy0.56linuxamd64.tar.gz \ && tar xzf sonobuoy0.*linuxamd64.tar.gz./sonobuoy run --mode=quick # 快速模式,仅主要测试项 ./sonobuoy retrieve . # 拉取 tar 包报告 tar xzf .tar.gz # 解压后查看 results/.json
五、运维常用方法小结
- Pain Point: 加入节点时忘记保存 Join 命令 → Avoidance: 在 Master 初始化完成后立即将命令写入安全文件。例如
/root/k8s_join_cmd.txt.- Pain Point: 网络插件配置错误导致 Pods 不通 → Avoidance: 使用官方 Calico manifest 并在部署前检查 CIDR 是否一致.
- Pain Point: 组件版本冲突 → Avoidance: 通过
a pt‑mark hold锁定 kubelet/kubeadm/kubectl.- Pain Point: 手动排查日志繁琐 → Avoidance: 采用 k9s 或 Lens 提供统一视图,并结合 Sonobuoy 定期做健康检查.
- Pain Point: 节点重装或迁移时残留配置 → Avoidance: 使用
sudo kubeadm reset –force+ 清理目录脚本,一键恢复干净状态.通过上述步骤,你可以在 Ubuntu 环境下实现 Kubernetes 节点的一键部署、快速加入/退出还有高效监控,从根本上缓解日常运维中最常见的痛点,让整个容器网站保持高可用、高可靠。
在实际运维中,管理员常常会遇到以下痛点: ① 节点加入集群时命令丢失或执行失败导致集群不完整;② 网络插件配置错误导致 Pod 之间无法通信;③ 组件版本不统一引发兼容性问题;④ 手动操作繁琐、缺乏可视化工具,排查故障效率低下。下面提供一套基于 Ubuntu 的完整流程。方便你搭建、管理并监控 Kubernetes 节点,切实缓解上述痛点。
一、环境准备
确保 Ubuntu 节点满足以下基础要求:
- 至于程序版本,Ubuntu 20.04 LTS 或更新的发行版。
- 网络连通这方面,所有节点之间能够相互 ping 通。话说回来,
- 硬件资源这方面。每个节点至少 2 CPU、4 GB RAM。老实说,
1. 安装 kubeadm、kubelet、kubectl
官方仓库提供了最新稳定版。这一步可以避免后期因版本不匹配导致的“组件冲突”痛点。
sudo apt update && sudo apt install -y apt-transport-https ca-certificates curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl # 锁定版本。防止自动升级破坏集群
2. 安装容器运行时
Docker 是最成熟的容器运行时兼容性好,可大幅降低“容器启动异常”的排查成本。
sudo apt update && sudo apt upgrade -y
sudo apt install -y ca-certificates gnupg lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb \
至于https,//download.docker.com/linux/ubuntu $ stable" | \
sudo tee /etc/apt/sources.list.d/docker.list> /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
sudo systemctl enable --now docker # 开机自启。避免“Docker 未启动”导致 Pod 启动失败
3. 初始化 Master 节点并部署网络插件
初始化集群:
# 指定 Pod 网络 CIDR
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
初始化成功后终端会输出类似如下的 kubeadm join 命令,请务必保存——这是后续添加 Worker 节点的关键步骤,也是“加入命令丢失”痛点的根源。
# 示例输出
kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:11223344556677889900aabbccddeeff...
配置本地 kubectl:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $:$ $HOME/.kube/config
部署 Calico 网络插件:
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
Calico 能提供高效且易于调试的网络策略,是解决 “Pod 间通信异常” 常见痛点的优先考虑方案。
二、Worker 节点加入与清理
1. 添加 Worker 节点
在 Master 上获取到的 kubeadm join … 命令复制到每台待加入的 Worker 上执行:
# 在 Worker 上执行
sudo kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:11223344556677889900aabbccddeeff...
执行成功后Master 控制面会自动将该节点标记为 Ready。若出现 “node not ready” 或 “certificate signed by unknown authority” 等报错,请检查以下两点:
- 程序时间同步是否正常。怎么说呢,
- Kubelet 与 Docker 服务是否已启动。
2. 重置 & 重新加入节点
当节点需要重新加入或彻底清理时可使用下面的命令快速恢复到初始状态,这能避免手动删除残余文件带来的 “残留配置冲突” 痛点。
# 重置 K8s 状态并清理数据
sudo kubeadm reset -f
sudo rm -rf /etc/kubernetes /var/lib/kubelet /var/lib/containerd
# 重启 Docker 与 containerd 确保干净环境
sudo systemctl restart docker containerd
#
执行上一步获取的 join 命令即可重新加入集群
三、日常资源管理与运维操作
1. 基础资源 CRUD 示例
- 查看节点状态:
# 所有节点概览
kubectl get nodes
# 查看单个节点详细信息
kubectl describe node worker01
- 创建命名空间:
# 为不同业务划分独立命名空间,提高资源隔离度
kubectl create namespace prod-apps
kubectl create namespace dev-test
- 部署示例 Nginx 应用:
# nginx-deployment.yaml 示例文件内容省略。可直接使用 kubectl apply 创建部署
kubectl apply -f https://k8s.io/examples/application/deployment.yaml -n prod-apps
# 检查 Deployment 与 Service 状态
kubectl get deployment -n prod-apps && kubectl get svc -n prod-apps
2. 配置资源配额与网络策略
- 配额示例:
yaml
kubectl apply -f dev-quota.yaml
- 网络策略示例:
kind这方面,NetworkPolicy
metadata:
从name来看,allow-same-namespace
namespace: prod-apps
说到spec,podSelector: {} # 匹配所有 Pod
policyTypes:
- Ingress # 入站策略
- Egress # 出站策略
ingress:
- from:
- podSelector: {} # 同一命名空间内任意 Pod
egress这方面,– to:
– podSelector: {}
kubectl apply -f allow-same-namespace.yaml
四、可视化与提高工具提高运维效率
1. k9s – 命令行交互式 UI
K9s 能让你在终端实时查看 Pods、Deployments、Events 等信息,大幅降低 “kubectl 参数记不住” 的学习成本。
# 使用 Snap 安装
sudo snap install k9s
2. Lens – 桌面 GUI 管理网站
Lens 提供全局视图。包括集群健康状态、工作负载图谱还有日志聚合,是解决 “缺少统一监控面板” 痛点的合适方案。
3. Sonobuoy – 集群诊断工具
SonoBuoy 能一次性跑完 Conformance 测试并生成报告,对排查 “集群不符合规范”“功能缺失”等问题非常有帮助。
# 下载并解压当前版本 curl -LO https://github.com/vmware-tanzu/sonobuoy/releases/download/v0.56/sonobuoy0.56linuxamd64.tar.gz \ && tar xzf sonobuoy0.*linuxamd64.tar.gz./sonobuoy run --mode=quick # 快速模式,仅主要测试项 ./sonobuoy retrieve . # 拉取 tar 包报告 tar xzf .tar.gz # 解压后查看 results/.json
五、运维常用方法小结
- Pain Point: 加入节点时忘记保存 Join 命令 → Avoidance: 在 Master 初始化完成后立即将命令写入安全文件。例如
/root/k8s_join_cmd.txt.- Pain Point: 网络插件配置错误导致 Pods 不通 → Avoidance: 使用官方 Calico manifest 并在部署前检查 CIDR 是否一致.
- Pain Point: 组件版本冲突 → Avoidance: 通过
a pt‑mark hold锁定 kubelet/kubeadm/kubectl.- Pain Point: 手动排查日志繁琐 → Avoidance: 采用 k9s 或 Lens 提供统一视图,并结合 Sonobuoy 定期做健康检查.
- Pain Point: 节点重装或迁移时残留配置 → Avoidance: 使用
sudo kubeadm reset –force+ 清理目录脚本,一键恢复干净状态.通过上述步骤,你可以在 Ubuntu 环境下实现 Kubernetes 节点的一键部署、快速加入/退出还有高效监控,从根本上缓解日常运维中最常见的痛点,让整个容器网站保持高可用、高可靠。

