首页主机资讯Debian系统上Kubernetes集群的搭建方法

Debian系统上Kubernetes集群的搭建方法

时间2025-11-25 20:06:06发布访客分类主机资讯浏览585
导读:在 Debian 12 上使用 kubeadm 搭建 Kubernetes 集群 一 环境准备与前置条件 节点规划:至少准备 1 台控制平面 与 1 台工作节点;推荐硬件为 2 核 CPU / 2 GB RAM / 20 GB 磁盘,并具...

在 Debian 12 上使用 kubeadm 搭建 Kubernetes 集群

一 环境准备与前置条件

  • 节点规划:至少准备 1 台控制平面1 台工作节点;推荐硬件为 2 核 CPU / 2 GB RAM / 20 GB 磁盘,并具备 sudo 权限与稳定网络。
  • 主机名与解析:为各节点设置唯一主机名,并在所有节点的 /etc/hosts 中添加映射,确保节点间可互相解析。
  • 关闭 Swap:临时与永久关闭,避免 kubelet 异常。
  • 容器运行时:安装并启用 containerd(Kubernetes 当前推荐的行业标准运行时)。
  • 内核与网络参数:加载必要内核模块,开启桥接与转发,满足 Kubernetes 网络要求。
  • 防火墙:如使用 UFW,放行控制平面与工作节点所需端口,保证组件通信与 NodePort 访问。

二 所有节点通用配置

  • 更新系统与基础工具
    • sudo apt update & & sudo apt upgrade -y
    • sudo apt install -y apt-transport-https ca-certificates curl gpg
  • 设置主机名与 /etc/hosts(示例)
    • sudo hostnamectl set-hostname k8s-master01
    • echo “192.168.16.20 k8s-master01” | sudo tee -a /etc/hosts
  • 关闭 Swap
    • sudo swapoff -a
    • sudo sed -i ‘/ swap / s/^(.*)$/#\1/g’ /etc/fstab
  • 安装并启用 containerd
    • sudo apt install -y containerd
    • sudo systemctl enable --now containerd
  • 内核模块与 sysctl
    • 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.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward = 1 EOF
    • sudo sysctl --system
  • 安装 kubeadm、kubelet、kubectl
    • 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
  • 防火墙放行(UFW 示例)
    • 控制平面:sudo ufw allow 6443/tcp
    • 工作节点:sudo ufw allow 10250/tcp;NodePort 范围:sudo ufw allow 30000:32767/tcp
    • 如需使用 kube-proxy 的 IPVS 模式,可额外放行:sudo ufw allow 8472/udp(可选)

三 控制平面初始化

  • 初始化命令(按需替换参数)
    • sudo kubeadm init
      –apiserver-advertise-address=< MASTER_IP>
      –control-plane-endpoint=< MASTER_IP> :6443
      –pod-network-cidr=10.244.0.0/16
      –service-cidr=10.100.0.0/16
      –image-repository=registry.aliyuncs.com/google_containers
  • 配置 kubectl
    • mkdir -p $HOME/.kube
    • sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    • sudo chown $(id -u):$(id -g) $HOME/.kube/config
  • 安装 Pod 网络插件(二选一)
    • Calico:kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
    • Flannel:kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
  • 验证
    • kubectl cluster-info
    • kubectl get nodes
    • kubectl get pods -n kube-system

四 加入工作节点

  • 获取加入命令
    • 在控制平面执行:kubeadm token create --print-join-command
  • 在工作节点执行(示例)
    • sudo kubeadm join < MASTER_IP> :6443
      –token
      –discovery-token-ca-cert-hash sha256:
  • 验证
    • 在控制平面:kubectl get nodes(状态变为 Ready 即正常)

五 高可用与常见问题处理

  • 高可用部署要点
    • 使用 奇数个 etcd 节点(通常 3/5),通过 Raft 保证一致性。
    • API Server 前置 外部负载均衡器(如 LVS/HAProxy/云 LB),对外暴露 6443/tcp
    • Controller ManagerScheduler 默认开启 leader election,多控制平面自动选主。
  • 常见问题速查
    • 节点 NotReady:检查 Pod 网络插件是否已部署、节点 10250 端口连通性、以及 Pod CIDR 是否与网络插件配置一致。
    • crictl 无法连接容器运行时:确认 containerd 正常运行,/etc/containerd/config.toml 中 cri 插件启用,必要时重启 containerd。
    • 镜像拉取慢或失败:使用 image-repository=registry.aliyuncs.com/google_containers 或更换为可达的镜像仓库;也可在节点上预拉取所需镜像。
    • 防火墙/安全组:确保 6443/tcp(API)、10250/tcp(kubelet)、30000–32767/tcp(NodePort)、以及网络插件所需端口(如 Calico 的 179/tcp、4789/udp)已放行。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Debian系统上Kubernetes集群的搭建方法
本文地址: https://pptw.com/jishu/755900.html
Debian环境下如何管理Kubernetes集群 如何在Debian上使用Laravel API

游客 回复需填写必要信息