首页主机资讯Kubernetes集群Ubuntu节点如何扩展

Kubernetes集群Ubuntu节点如何扩展

时间2025-11-27 15:03:04发布访客分类主机资讯浏览1492
导读:Kubernetes集群 Ubuntu 节点扩展实操指南 一、前置条件与规划 准备一台或多台运行 Ubuntu 20.04/22.04 的新机器,确保与现有集群网络互通(同一二层/三层网段或可达的 API Server 端点)。 规划节点...

Kubernetes集群 Ubuntu 节点扩展实操指南

一、前置条件与规划

  • 准备一台或多台运行 Ubuntu 20.04/22.04 的新机器,确保与现有集群网络互通(同一二层/三层网段或可达的 API Server 端点)。
  • 规划节点角色与标签(如 worker、gpu、ssd),便于后续调度。
  • 统一时间同步(如 Asia/Shanghai),避免证书校验与组件异常。
  • 如使用 UFW,提前放通必要端口(如 22/TCP、10250/TCP、30000–32767/TCP),或直接使用 iptables/firewalld 统一管理。
  • 规划容器运行时(推荐 containerd),并保持与现有集群版本一致(如 v1.23+)。

二、新节点预处理

  • 关闭 Swap(生产环境必须;新版 kubelet 支持开启但默认仍建议关闭):
    sudo swapoff -a
    sudo sed -i '/ swap / s/^/#/' /etc/fstab
    
  • 内核与转发参数:
    cat <
        <
        EOF | sudo tee /etc/sysctl.d/k8s.conf
    net.ipv4.ip_forward = 1
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    EOF
    sudo sysctl --system
    
  • 可选:加载 br_netfilter 并验证
    sudo modprobe br_netfilter
    lsmod | grep br_netfilter
    
  • 设置主机名与 /etc/hosts(所有节点保持一致,便于解析控制面端点):
    sudo hostnamectl set-hostname <
        new-worker-hostname>
        
    echo "<
        控制面IP>
         <
        控制面主机名>
        " | sudo tee -a /etc/hosts
    
  • 时间同步:
    sudo timedatectl set-timezone Asia/Shanghai
    sudo systemctl restart systemd-timesyncd
    

三、安装容器运行时与 Kubernetes 组件

  • 安装并启动 containerd
    sudo apt-get update &
        &
         sudo apt-get install -y containerd
    sudo mkdir -p /etc/containerd
    containerd config default | sudo tee /etc/containerd/config.toml
    sudo systemctl restart containerd
    sudo systemctl enable containerd
    
  • 添加 Kubernetes APT 源并安装组件(版本与集群保持一致,示例 1.23.5-00):
    curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
    cat <
        <
    EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
    deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
    EOF
    sudo apt-get update
    K8S_VERSION="1.23.5-00"
    sudo apt-get install -y kubelet=${
    K8S_VERSION}
     kubeadm=${
    K8S_VERSION}
     kubectl=${
    K8S_VERSION}
        
    sudo apt-mark hold kubelet kubeadm kubectl
    sudo systemctl enable --now kubelet
    

四、生成加入命令并加入集群

  • 在控制面节点生成短期令牌与加入命令(示例有效期 2 小时):
    kubeadm token create --ttl 2h --print-join-command
    # 如需手动计算哈希,可在控制面执行:
    openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | \
      openssl rsa -pubin -outform der 2>
        /dev/null | \
      openssl dgst -sha256 -hex | sed 's/^.* //'
    
  • 在新节点执行加入命令(将输出替换为实际值):
    sudo kubeadm join <
        控制面IP或域名>
        :6443 \
      --token <
        token>
         \
      --discovery-token-ca-cert-hash sha256:<
        hash>
         \
      --node-labels=disk=ssd,region=cn-east
    
  • 如需临时忽略预检(不建议生产长期使用),可附加:
    --ignore-preflight-errors=Swap
    

五、验证、标签与后续优化

  • 验证节点状态:
    kubectl get nodes -o wide
    
  • 为新节点添加业务标签并验证:
    kubectl label node <
        new-worker-name>
         node-type=high-mem
    kubectl get node <
        new-worker-name>
         --show-labels
    
  • 可选:为节点设置污点/容忍,或配置 kubelet 资源预留(提升稳定性):
    # /var/lib/kubelet/config.yaml
    apiVersion: kubelet.config.k8s.io/v1beta1
    kind: KubeletConfiguration
    systemReserved:
      cpu: "500m"
      memory: "1Gi"
      ephemeral-storage: "5Gi"
    kubeReserved:
      cpu: "500m"
      memory: "2Gi"
      ephemeral-storage: "5Gi"
    
    修改后重启 kubelet:sudo systemctl restart kubelet
  • 防火墙要点(如使用 UFW):
    sudo ufw allow 22/tcp
    sudo ufw allow 10250/tcp
    sudo ufw allow 30000:32767/tcp
    # 如使用 Calico/Flannel,按需放通:
    sudo ufw allow 179/tcp    # BGP
    sudo ufw allow 5473/tcp   # Typha
    sudo ufw allow 4789/udp   # VXLAN
    

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Kubernetes集群Ubuntu节点如何扩展
本文地址: https://pptw.com/jishu/757925.html
Debian对Node.js支持如何 Ubuntu上Kubernetes安全策略有哪些

游客 回复需填写必要信息