温馨提示×

在Debian上怎样快速安装K8s

小樊
45
2025-11-29 08:39:49
栏目: 智能运维

在 Debian 上使用 kubeadm 快速搭建单主集群

一 环境准备

  • 准备至少 2 核 CPU / 2 GB RAM / 20 GB 磁盘 的两台以上机器(一台作为 Master,其余为 Worker),系统建议使用 Debian 12,并确保节点间网络互通、可访问互联网。
  • 每个节点设置唯一 主机名,并在所有节点的 /etc/hosts 中添加解析(便于内网直连)。
  • 关闭 Swap:执行 sudo swapoff -a,并在 /etc/fstab 中注释 swap 行,避免重启后恢复。
  • 如使用 UFW,在主节点放行端口:6443、2379、2380、10250、10251、10252、10255;在工作节点放行:10250、30000:32767。若未启用防火墙,可跳过放行步骤。

二 安装容器运行时 containerd

  • 安装依赖与 containerd:
    sudo apt update
    sudo apt install -y apt-transport-https ca-certificates curl
    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/containerd.list
    sudo apt update
    sudo apt install -y containerd
    sudo systemctl enable --now containerd
    
  • 启用内核模块与网络转发(K8s 必需):
    sudo tee /etc/modules-load.d/containerd.conf <<EOF
    overlay
    br_netfilter
    EOF
    sudo modprobe overlay
    sudo modprobe br_netfilter
    sudo tee /etc/sysctl.d/99-kubernetes-k8s.conf <<EOF
    net.bridge.bridge-nf-call-iptables  = 1
    net.ipv4.ip_forward                 = 1
    EOF
    sudo sysctl --system
    

三 安装 kubeadm kubelet kubectl

  • 添加 Kubernetes APT 源并安装组件(版本保持一致):
    sudo apt update
    sudo apt install -y apt-transport-https curl
    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 systemctl enable --now kubelet
    
  • 说明:上述为常见做法;若访问官方源较慢,可替换为国内镜像源(如 registry.aliyuncs.com/google_containersmirrors.aliyun.com/kubernetes/apt/)后再安装。

四 初始化 Master 并配置 kubectl

  • 在主节点初始化(单主最简命令,按需追加参数):
    sudo kubeadm init --pod-network-cidr=10.244.0.0/16
    
  • 常见可选参数:
    • 指定内网地址:--apiserver-advertise-address=<Master_IP>
    • 指定镜像仓库:--image-repository=registry.aliyuncs.com/google_containers
    • 指定服务网段:--service-cidr=10.1.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,与上面 pod-network-cidr 保持一致):
    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    

五 加入 Worker 与验证

  • 在 Worker 节点执行 kubeadm init 完成后输出的 kubeadm join 命令,例如:
    sudo kubeadm join <Master_IP>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>
    
    若 token 过期,可在 Master 上执行 kubeadm token create --print-join-command 重新生成。
  • 在 Master 验证:
    kubectl get nodes
    kubectl get pods --all-namespaces
    
    等待片刻,所有节点状态应为 Ready

常见问题与提示

  • 镜像拉取慢或失败:在 init 时使用 --image-repository=registry.aliyuncs.com/google_containers 加速;或提前在各节点 docker pull/crictl 拉取所需镜像。
  • 端口不通:核对 UFW 或云安全组已放行上文端口,尤其是 6443(APIServer)与 10250(kubelet)。
  • 节点 NotReady:确认已安装 CNI 插件(如 Flannel),且 pod-network-cidr 与插件配置一致;检查 kubelet 日志 journalctl -u kubelet -f
  • 需要重置环境:在主节点执行 sudo kubeadm reset -f,清理后重新 kubeadm init

0