debian

Kubernetes部署在Debian上的最佳实践是什么

小樊
49
2025-10-08 14:22:32
栏目: 智能运维

Kubernetes部署在Debian上的最佳实践

一、系统准备:基础环境配置

  1. 硬件与系统要求

    • 选择稳定的Debian版本(推荐Debian 12及以上),避免使用过旧版本以减少兼容性问题。
    • 硬件配置:Master节点至少2核CPU、8GB RAM、20GB磁盘;Worker节点至少1核CPU、2GB RAM、20GB磁盘(生产环境需根据负载调整)。
    • 网络要求:所有节点处于同一局域网,配置静态IP地址,确保节点间能互相通信(如Master节点IP为192.168.1.10,Worker节点为192.168.1.11192.168.1.12等)。
  2. 系统优化

    • 关闭Swap分区:Kubernetes要求禁用Swap以避免内存管理问题,执行以下命令:
      sudo swapoff -a
      sudo sed -i '/ swap / s/^\(.*\)$/#&/' /etc/fstab
      
    • 配置内核参数:编辑/etc/sysctl.conf,添加以下内容以支持容器网络转发:
      net.bridge.bridge-nf-call-iptables = 1
      net.ipv4.ip_forward = 1
      
      应用配置:sudo sysctl -p
  3. 主机标识配置

    • 为每个节点设置唯一主机名(如Master节点k8s-master,Worker节点k8s-worker1),并通过/etc/hosts文件配置IP与主机名映射:
      echo "192.168.1.10 k8s-master" | sudo tee -a /etc/hosts
      echo "192.168.1.11 k8s-worker1" | sudo tee -a /etc/hosts
      

二、依赖安装:容器运行时与Kubernetes组件

  1. 容器运行时选择

    • 推荐使用containerd(Kubernetes原生支持的轻量级运行时):
      sudo apt update
      sudo apt install -y containerd
      sudo mkdir -p /etc/containerd
      sudo containerd config default > /etc/containerd/config.toml
      sudo systemctl enable --now containerd
      
    • 若需使用Docker(兼容性好但非原生),需额外配置Docker与Kubernetes的集成(如修改Docker的cgroupdriversystemd)。
  2. Kubernetes组件安装

    • 添加Kubernetes官方APT源(替换$(lsb_release -cs)为Debian版本代号,如bookworm):
      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
      
    • 安装kubeletkubeadmkubectl(用于集群初始化与管理),并锁定版本防止自动升级:
      sudo apt install -y kubelet kubeadm kubectl
      sudo apt-mark hold kubelet kubeadm kubectl
      

三、集群初始化:Master节点配置

  1. 初始化Master节点

    • 执行kubeadm init命令,指定Pod网络CIDR(如10.244.0.0/16,适配Flannel等插件):
      sudo kubeadm init --pod-network-cidr=10.244.0.0/16
      
    • 初始化完成后,会输出kubeadm join命令(用于Worker节点加入集群),需妥善保存。
  2. 配置kubectl

    • 创建.kube目录并将集群配置复制到用户目录:
      mkdir -p $HOME/.kube
      sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
      sudo chown $(id -u):$(id -g) $HOME/.kube/config
      

四、网络插件部署:实现Pod通信

五、Worker节点加入:扩展集群

六、安全加固:保障集群安全

  1. 权限管理

    • 启用RBAC(基于角色的访问控制),限制用户对集群资源的访问权限,避免未授权操作。
    • 使用命名空间划分环境(如devprod),隔离不同业务的工作负载。
  2. 网络安全

    • 配置防火墙规则,仅开放必要端口(如Kubernetes API服务器的6443端口、Worker节点的10250端口)。
    • 启用网络策略(NetworkPolicy),定义Pod之间的通信规则(如禁止跨命名空间的无授权访问)。
  3. 系统安全

    • 定期升级Kubernetes组件与Debian系统,修复安全漏洞(如sudo apt update && sudo apt upgrade -y)。
    • 禁用SSH密码认证,使用密钥认证登录节点,提高节点安全性。

七、维护与监控:保障集群稳定

  1. 监控与日志

    • 部署监控工具(如Prometheus+Grafana),监控集群节点、Pod的资源使用情况(CPU、内存、磁盘)。
    • 配置日志管理(如ELK Stack),收集Pod日志以便快速排查问题。
  2. 备份与恢复

    • 定期备份etcd数据(Kubernetes的核心存储),可使用etcdctl工具或第三方备份方案(如Velero)。
    • 制定灾难恢复计划,确保在集群故障时能快速恢复。

八、注意事项

0
看了该问题的人还看了