温馨提示×

Debian与K8S集成有哪些实用技巧

小樊
34
2025-12-13 03:41:29
栏目: 智能运维

Debian 与 Kubernetes 集成实用技巧

一 基础环境加固与内核调优

  • 选择稳定系统版本:优先使用 Debian 12,内核建议 ≥ 5.10,以获得更好的容器与网络栈兼容性与稳定性。
  • 关闭 Swap:Kubernetes 要求禁用 Swap,避免 kubelet 与网络插件异常。
    命令示例:
    sudo swapoff -a
    sudo sed -i ‘/ swap / s/^/#/’ /etc/fstab
  • 加载内核模块与转发:
    echo “overlay\nbr_netfilter” | sudo tee /etc/modules-load.d/containerd.conf
    sudo modprobe overlay && sudo modprobe br_netfilter
    echo -e “net.bridge.bridge-nf-call-iptables = 1\nnet.ipv4.ip_forward = 1” | sudo tee /etc/sysctl.d/99-kubernetes.conf
    sudo sysctl --system
  • 时间同步:安装并启用 systemd-timesyncd,避免证书校验、调度等因时间漂移引发的问题。
    sudo apt install -y systemd-timesyncd
    sudo systemctl enable --now systemd-timesyncd
  • 资源基线:至少 2 核 CPU / 2GB 内存 / 20GB 磁盘;生产建议 4 核 / 4GB+,并优先使用 SSD

二 容器运行时与网络插件配置

  • 使用 containerd(Kubernetes 自 v1.24 起默认不再内置 Docker,推荐 containerd 作为 CRI 运行时):
    sudo apt update && sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release
    curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
    echo “deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable” | sudo tee /etc/apt/sources.list.d/docker.list
    sudo apt update && sudo apt install -y containerd.io
    sudo mkdir -p /etc/containerd
    containerd config default | sudo tee /etc/containerd/config.toml
    sudo sed -i ‘s/SystemdCgroup = false/SystemdCgroup = true/’ /etc/containerd/config.toml
    sudo systemctl restart containerd && sudo systemctl enable containerd
  • 选择 Pod 网络插件:
    • Flannel(轻量、易部署):kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    • Calico(策略丰富、性能佳):kubectl apply -f https://docs.projectcalico.org/manifests/tigera-operator.yaml && kubectl apply -f https://docs.projectcalico.org/manifests/custom-resources.yaml
  • 端口与连通性:确保节点间 6443(API Server)10250(kubelet) 等端口放通;如使用云厂商安全组,需同步放行。

三 kubeadm 初始化与节点加入

  • 添加 Kubernetes APT 源并安装组件:
    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 # 避免组件被自动升级破坏集群稳定性
  • 初始化控制平面(示例):
    sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --service-cidr=10.0.0.0/16
    说明:Pod CIDR 需与所选网络插件兼容(如 Flannel 默认 10.244.0.0/16)。
  • 配置 kubectl:
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
  • 加入工作节点:使用 kubeadm init 输出中的 kubeadm join 命令(包含 TokenCA 证书哈希)在 Worker 节点执行。
  • 快速验证:
    kubectl get nodes
    kubectl create deployment nginx --image=nginx --replicas=2
    kubectl expose deployment nginx --type=NodePort --port=80
    kubectl get svc nginx # 获取 NodePort(如 30080),访问 : 验证

四 安全与运维最佳实践

  • 版本与升级:保持 DebianKubernetes 版本匹配,跨版本升级遵循官方支持路径;组件使用 apt-mark hold 固定版本,变更通过测试环境验证后再上线。
  • 安全加固:启用 RBAC 最小权限;为 API Server、kubelet 等启用 TLS;按需配置 网络策略(NetworkPolicy);定期更新系统与组件补丁。
  • 备份与恢复:定期备份 etcd(如 etcdctl snapshot save),并演练恢复流程,确保灾难时可快速恢复。
  • 监控与日志:部署 Prometheus + Grafana 监控集群与应用指标,使用 EFK/ELK 聚合与分析日志,设置告警规则。
  • 自动化运维:使用 Ansible 批量配置节点、证书与组件;通过 Jenkins/GitLab CI 实现 GitOps/CI-CD;编写健康检查与巡检脚本,降低人工干预。

五 常见问题快速排查

  • 节点 NotReady:优先检查容器运行时(containerd)是否运行、kubelet 是否健康;查看 kubelet 日志:journalctl -u kubelet -f;确认网络插件 Pod 均为 Running
  • Pod 无法跨节点通信:核对 Pod CIDR 与网络插件配置是否一致;检查节点间 6443/10250 等端口连通性;确认 net.bridge.bridge-nf-call-iptables=1ip_forward=1 已生效。
  • 镜像拉取失败:确认节点可访问镜像仓库(含私有仓库的 imagePullSecrets);必要时配置 containerd 镜像加速
  • 时间漂移导致证书错误:确认 systemd-timesyncd 已启用并同步成功(timedatectl status)。

0