Kubernetes节点在Ubuntu上的管理指南
在Ubuntu上管理Kubernetes节点(包括Master和Worker)需完成环境准备、集群搭建、节点管理、资源操作及维护监控等步骤,以下是详细流程:
一、环境准备(所有节点)
-
系统更新与基础配置
更新系统包并升级到最新版本,确保内核及依赖项兼容:sudo apt update && sudo apt upgrade -y- 关闭Swap分区:Kubernetes要求禁用Swap,否则无法启动集群:
sudo swapoff -a # 临时禁用 sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab # 永久禁用(注释swap行) - 开启内核转发与模块:编辑
/etc/sysctl.d/k8s.conf文件,添加以下内容以启用IP转发和网络插件所需功能:
执行net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward = 1sudo sysctl --system使配置生效。 - 加载内核模块:临时加载
overlay和br_netfilter模块(永久加载需添加到/etc/modules):sudo modprobe overlay sudo modprobe br_netfilter
- 关闭Swap分区:Kubernetes要求禁用Swap,否则无法启动集群:
-
安装容器运行时(Docker)
Kubernetes依赖容器运行时管理容器,Ubuntu上推荐使用Docker:sudo apt install -y apt-transport-https ca-certificates curl software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" sudo apt update sudo apt install -y docker-ce sudo systemctl enable --now docker # 开机自启 -
安装Kubernetes核心组件
安装kubelet(节点代理)、kubeadm(集群初始化工具)、kubectl(命令行工具):sudo apt update sudo apt install -y kubelet kubeadm kubectl sudo apt-mark hold kubelet kubeadm kubectl # 锁定版本,避免自动升级
二、集群搭建(Master节点)
-
初始化Master节点
使用kubeadm初始化集群,指定Pod网络CIDR(需与后续网络插件匹配,如Calico的10.244.0.0/16):sudo kubeadm init --pod-network-cidr=10.244.0.0/16初始化完成后,终端会输出kubeadm join命令(包含Token和CA证书哈希),需保存备用(用于Worker节点加入集群)。
-
配置kubectl
将集群配置文件复制到用户目录,使当前用户具备集群访问权限:mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config验证配置是否成功:
kubectl version # 应显示客户端与服务端版本信息 -
部署网络插件
Kubernetes需要网络插件实现Pod间通信,常用Calico(高性能、支持网络策略):kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml部署完成后,等待插件状态变为
Running。
三、节点管理(Worker节点加入与移除)
-
添加Worker节点
在Worker节点上执行Master节点初始化时输出的kubeadm join命令(替换为实际IP、Token和哈希值):sudo kubeadm join:6443 --token --discovery-token-ca-cert-hash sha256: 执行后,Master节点会自动识别该Worker节点。
-
验证节点状态
在Master节点上运行以下命令,查看所有节点的状态(Ready表示节点已加入集群并可正常工作):kubectl get nodes -
移除节点
- 从集群中删除节点(Master节点执行):
kubectl drain <节点名称> --ignore-daemonsets # 排空节点上的Pod kubectl delete node <节点名称> - 清理Worker节点(在目标节点上执行):
若需重新加入集群,需清理节点上的Kubernetes残留文件:sudo kubeadm reset sudo rm -rf /etc/kubernetes /var/lib/kubelet sudo systemctl restart docker
- 从集群中删除节点(Master节点执行):
四、日常资源管理(kubectl命令)
-
基础资源操作
- 查看节点状态:
kubectl get nodes - 查看Pod列表(所有命名空间):
kubectl get pods -A - 创建Deployment(以Nginx为例):
kubectl create deployment nginx --image=nginx - 暴露Service(NodePort类型,允许外部访问):
kubectl expose deployment nginx --port=80 --type=NodePort
- 查看节点状态:
-
高级资源管理
- 通过YAML文件声明式管理资源(如创建Deployment):
kubectl apply -f deployment.yaml # 创建/更新资源 kubectl delete -f deployment.yaml # 删除资源 - 查看资源详情(如Pod日志、描述):
kubectl logs# 查看Pod日志 kubectl describe pod # 查看Pod详情
- 通过YAML文件声明式管理资源(如创建Deployment):
五、可视化与管理工具
-
命令行增强工具
- K9s:终端可视化工具,简化集群管理(如查看Pod、Deployment状态):
sudo snap install k9s - Lens:GUI工具,支持集群监控、日志分析、资源编辑(需下载.deb包安装)。
- K9s:终端可视化工具,简化集群管理(如查看Pod、Deployment状态):
-
Web UI工具
- Kubernetes Dashboard:官方Web UI,可视化集群资源:
访问方式:通过kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yamlkubectl proxy启动代理,在浏览器访问http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/(需配置Token认证)。 - Portainer:跨平台管理工具,支持Docker和Kubernetes:
访问方式:通过kubectl apply -f https://raw.githubusercontent.com/portainer/portainer-kubernetes/master/deploy/portainer.yamlkubectl port-forward或Ingress暴露服务,在浏览器访问http://。:9000
- Kubernetes Dashboard:官方Web UI,可视化集群资源:
六、监控与维护
-
监控集群状态
- Metrics Server:轻量级监控工具,支持
kubectl top命令(查看节点/Pod资源使用率):kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml - Prometheus+Grafana:专业监控方案,部署Prometheus Operator后导入Grafana Dashboard(如Kubernetes Cluster Monitoring)。
- Metrics Server:轻量级监控工具,支持
-
日志管理
- EFK栈(Elasticsearch+Fluentd+Kibana):收集、存储、可视化日志(适合大规模集群)。
- Loki+Grafana:轻量级日志方案,部署
loki-stack后通过Grafana查看日志。
-
故障排除
- Kubewatch:事件通知工具,当集群发生异常(如Pod崩溃)时发送Slack/Email通知:
kubectl apply -f https://github.com/bitnami-labs/kubewatch/releases/latest/download/kubewatch.yaml - Sonobuoy:集群测试工具,生成集群状态报告(如kubelet、kube-apiserver健康状况):
curl -LO https://github.com/vmware-tanzu/sonobuoy/releases/latest/download/sonobuoy_0.56.10_linux_amd64.tar.gz tar -xzf sonobuoy_*.tar.gz ./sonobuoy run # 运行测试 ./sonobuoy retrieve # 获取测试结果
- Kubewatch:事件通知工具,当集群发生异常(如Pod崩溃)时发送Slack/Email通知:
通过以上步骤,可在Ubuntu上完成Kubernetes节点的部署、管理与维护,满足容器化应用的运行需求。需注意定期更新Kubernetes组件及系统补丁,确保集群安全稳定。