温馨提示×

Debian系统K8s安装步骤解析

小樊
39
2025-12-26 20:48:25
栏目: 智能运维

Debian系统K8s安装步骤解析

一 环境准备与系统设置

  • 资源与系统
    • 建议配置:每节点至少2核CPU2GB内存(推荐4GB+)、20GB+磁盘;操作系统选用Debian 11/12稳定版,并提前执行:sudo apt update && sudo apt upgrade -y。
  • 主机与网络
    • 设置主机名(如 master、worker1),并在所有节点配置**/etc/hosts**进行IP与主机名映射,确保节点间可互通与可SSH登录。
  • 内核与网络参数
    • 加载内核模块并开启桥接转发(适配 containerd/部分网络插件):
      • echo -e “overlay\nbr_netfilter” | sudo tee /etc/modules-load.d/containerd.conf
      • sudo modprobe overlay && sudo modprobe br_netfilter
      • cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-k8s.conf net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 EOF
      • sudo sysctl --system
  • 关闭 Swap
    • 临时:sudo swapoff -a;永久:sudo sed -i ‘/ swap / s/^(.*)$/#\1/’ /etc/fstab。
  • 时间同步
    • 建议安装并启用NTP:sudo apt install -y ntp,保证节点间时间一致,避免证书校验与组件异常。

二 安装容器运行时

  • 方案A Docker(通用、易上手)
    • 安装依赖与仓库:
      • sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
      • 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 docker-ce docker-ce-cli containerd.io
      • sudo systemctl start docker && sudo systemctl enable docker
  • 方案B containerd(更贴近K8s默认栈,可选)
    • 安装:sudo apt update && sudo apt install -y containerd
    • 生成默认配置并启用:
      • sudo containerd config default | sudo tee /etc/containerd/config.toml
      • sudo systemctl restart containerd && sudo systemctl enable containerd
  • 说明
    • 若采用 containerd,上文的内核参数与 sysctl 配置为必要前提;若采用 Docker,同样建议完成这些网络与内核设置以避免后续网络插件异常。

三 安装Kubernetes核心组件

  • 添加仓库与安装
    • 添加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。

四 初始化控制平面与配置kubectl

  • 初始化 Master
    • 使用 kubeadm 初始化(Pod 网络 CIDR 需与后续网络插件一致,示例使用 Flannel 的10.244.0.0/16):
      • sudo kubeadm init --pod-network-cidr=10.244.0.0/16
    • 常见可选参数:–service-cidr=10.96.0.0/12(可按需调整)。初始化成功后,控制台会输出用于 Worker 加入集群的kubeadm join命令,务必保存。
  • 配置 kubectl
    • 非 root 用户管理集群所需:
      • mkdir -p $HOME/.kube
      • sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
      • sudo chown $(id -u):$(id -g) $HOME/.kube/config

五 安装网络插件与加入工作节点

  • 安装网络插件(控制平面就绪后执行)
    • Flannel(轻量、易部署,与 10.244.0.0/16 配套):
      • kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    • Calico(策略丰富,生产常用):
      • kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
    • 等待 kube-system 命名空间下相关 Pod 均为 Running 再进行后续操作。
  • 加入 Worker 节点
    • 在每台 Worker 上执行 Master 初始化输出中的命令,例如:
      • sudo kubeadm join :6443 --token --discovery-token-ca-cert-hash sha256:
  • 验证
    • 在 Master 上检查节点状态:kubectl get nodes(状态应为Ready)。可进一步部署测试应用验证网络与服务发布。

六 防火墙与常用排错要点

  • 防火墙与端口
    • 确保节点间与对外管理所需端口放行,常见包括:6443(API Server)、10250(kubelet)、10255(kubelet 只读,视环境)、以及 kube-proxy 与网络插件所需端口;如使用 ufw:sudo ufw allow 6443,10250,10255/tcp 或按实际策略放行。
  • 常见问题速查
    • kubelet 无法启动:确认已关闭 Swap、内核模块与 sysctl 已生效、容器运行时(Docker/containerd)处于Running状态。
    • 节点 NotReady:检查网络插件是否部署成功(kubectl get pods -n kube-system)、Pod CIDR 是否与插件配置一致(如 Flannel 使用10.244.0.0/16)。
    • 加入集群失败:确认 Token 未过期(默认24小时)、CA 证书哈希正确、控制平面与 Worker 时间同步、网络与防火墙策略允许6443与 kubelet 端口通信。

0