温馨提示×

Kubernetes 节点如何在 Ubuntu 上管理

小樊
42
2025-11-09 01:42:28
栏目: 智能运维

Kubernetes节点在Ubuntu上的管理指南
在Ubuntu上管理Kubernetes节点(包括Master和Worker)需完成环境准备、集群搭建、节点管理、资源操作及维护监控等步骤,以下是详细流程:

一、环境准备(所有节点)

  1. 系统更新与基础配置
    更新系统包并升级到最新版本,确保内核及依赖项兼容:

    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 = 1
      
      执行sudo sysctl --system使配置生效。
    • 加载内核模块:临时加载overlaybr_netfilter模块(永久加载需添加到/etc/modules):
      sudo modprobe overlay
      sudo modprobe br_netfilter
      
  2. 安装容器运行时(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  # 开机自启
    
  3. 安装Kubernetes核心组件
    安装kubelet(节点代理)、kubeadm(集群初始化工具)、kubectl(命令行工具):

    sudo apt update
    sudo apt install -y kubelet kubeadm kubectl
    sudo apt-mark hold kubelet kubeadm kubectl  # 锁定版本,避免自动升级
    

二、集群搭建(Master节点)

  1. 初始化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节点加入集群)。

  2. 配置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  # 应显示客户端与服务端版本信息
    
  3. 部署网络插件
    Kubernetes需要网络插件实现Pod间通信,常用Calico(高性能、支持网络策略):

    kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
    

    部署完成后,等待插件状态变为Running

三、节点管理(Worker节点加入与移除)

  1. 添加Worker节点
    在Worker节点上执行Master节点初始化时输出的kubeadm join命令(替换为实际IP、Token和哈希值):

    sudo kubeadm join <Master-IP>:6443 --token <TOKEN> --discovery-token-ca-cert-hash sha256:<HASH>
    

    执行后,Master节点会自动识别该Worker节点。

  2. 验证节点状态
    在Master节点上运行以下命令,查看所有节点的状态(Ready表示节点已加入集群并可正常工作):

    kubectl get nodes
    
  3. 移除节点

    • 从集群中删除节点(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
      

四、日常资源管理(kubectl命令)

  1. 基础资源操作

    • 查看节点状态: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
      
  2. 高级资源管理

    • 通过YAML文件声明式管理资源(如创建Deployment):
      kubectl apply -f deployment.yaml  # 创建/更新资源
      kubectl delete -f deployment.yaml  # 删除资源
      
    • 查看资源详情(如Pod日志、描述):
      kubectl logs <Pod名称>  # 查看Pod日志
      kubectl describe pod <Pod名称>  # 查看Pod详情
      

五、可视化与管理工具

  1. 命令行增强工具

    • K9s:终端可视化工具,简化集群管理(如查看Pod、Deployment状态):
      sudo snap install k9s
      
    • Lens:GUI工具,支持集群监控、日志分析、资源编辑(需下载.deb包安装)。
  2. Web UI工具

    • Kubernetes Dashboard:官方Web UI,可视化集群资源:
      kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
      
      访问方式:通过kubectl 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.yaml
      
      访问方式:通过kubectl port-forward或Ingress暴露服务,在浏览器访问http://<Node-IP>:9000

六、监控与维护

  1. 监控集群状态

    • 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)。
  2. 日志管理

    • EFK栈(Elasticsearch+Fluentd+Kibana):收集、存储、可视化日志(适合大规模集群)。
    • Loki+Grafana:轻量级日志方案,部署loki-stack后通过Grafana查看日志。
  3. 故障排除

    • 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  # 获取测试结果
      

通过以上步骤,可在Ubuntu上完成Kubernetes节点的部署、管理与维护,满足容器化应用的运行需求。需注意定期更新Kubernetes组件及系统补丁,确保集群安全稳定。

0