温馨提示×

Kubernetes安装于Debian的技巧

小樊
46
2025-11-19 11:38:39
栏目: 智能运维

Debian 上安装 Kubernetes 的实用技巧

一 环境准备与系统调优

  • 使用较新的稳定版 Debian 12(Bookworm),资源建议至少 2 核 CPU、2GB RAM、20GB 磁盘,并确保节点间网络互通。
  • 更新系统并安装基础工具:sudo apt update && sudo apt upgrade -y;安装 apt-transport-https、ca-certificates、curl、software-properties-common
  • 关闭 Swap:sudo swapoff -a 并注释 /etc/fstab 中的 swap 行,避免 kubelet 报错。
  • 加载内核模块并开启桥接转发:
    echo -e “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-k8s.conf
    sudo sysctl --system
  • 建议启用 NTP/chrony 做时间同步,避免证书校验与调度异常。

二 容器运行时选择与安装

  • 推荐优先使用 containerd(与 K8s 集成更紧密,维护路径清晰):
    sudo apt install -y containerd
    sudo mkdir -p /etc/containerd
    containerd config default | sudo tee /etc/containerd/config.toml
    sudo systemctl enable --now containerd
  • 如需使用 Docker(仍可用但官方已转向 CRI 运行时):
    sudo apt install -y docker.io 或安装 docker-ce 系列包
    sudo systemctl enable --now docker
  • 无论哪种运行时,确保 /etc/containerd/config.toml 中的 SystemdCgroup 与 kubelet 的 cgroup 驱动一致(常见为 systemd)。

三 安装 kubeadm kubelet kubectl 与初始化

  • 添加 Kubernetes APT 源并安装组件(示例为 xenial 仓库,实际以可用版本为准):
    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 # 锁定版本,避免被系统升级影响
  • 初始化控制平面(以 Flannel 为例,Pod CIDR 用 10.244.0.0/16):
    sudo kubeadm init --pod-network-cidr=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
  • 安装网络插件(Flannel):
    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
  • 加入工作节点:使用 kubeadm init 输出中的 kubeadm join 命令(包含 –token–discovery-token-ca-cert-hash)在各 Node 上执行。

四 网络与防火墙要点

  • 常见端口需放通(示例):6443(API Server)10250(kubelet)10251/10252(kube-scheduler/controller-manager)、以及 NodePort 范围(默认 30000–32767);如使用 Calico 等插件,还需放通 BGP 179 等端口。
  • 云厂商或物理防火墙需同步策略,避免节点间与节点到 API Server 的访问被拦截。
  • 选择网络插件要与 Pod CIDR 匹配:如 Flannel 默认 10.244.0.0/16;如使用 Calico,常见 192.168.0.0/16,并在 kubeadm init 时通过 –pod-network-cidr 指定一致网段。

五 常见问题排查与优化

  • 节点 NotReady:优先检查 CNI 是否安装成功Pod CIDR 是否与插件一致、以及 kubelet 是否报错(journalctl -xeu kubelet)。
  • 镜像拉取慢或失败:可配置 containerd 镜像仓库镜像、使用 imagePullPolicy: IfNotPresent,或在 kubeadm 初始化时通过 –image-repository 指定可用镜像源。
  • 控制平面与节点时间不同步:部署 chronyNTP,确保时间误差在合理范围内。
  • 稳定性与可维护性:
    • 使用 apt-mark hold 固定 kubelet/kubeadm/kubectl 版本,避免滚动升级导致不兼容;
    • 生产环境建议启用 RBAC、最小权限与审计,并部署 监控(如 Prometheus+Grafana)日志(如 EFK/Loki)
    • 规划 资源请求/限额污点/容忍度,避免系统组件被业务抢占。

0