Debian系统K8s安装步骤解析
小樊
39
2025-12-26 20:48:25
Debian系统K8s安装步骤解析
一 环境准备与系统设置
- 资源与系统
- 建议配置:每节点至少2核CPU、2GB内存(推荐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 端口通信。