Debian系统上Kubernetes集群的搭建方法
导读:在 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
- sudo kubeadm init
- 配置 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:
- sudo kubeadm join <
MASTER_IP>
:6443
- 验证
- 在控制平面:kubectl get nodes(状态变为 Ready 即正常)
五 高可用与常见问题处理
- 高可用部署要点
- 使用 奇数个 etcd 节点(通常 3/5),通过 Raft 保证一致性。
- 为 API Server 前置 外部负载均衡器(如 LVS/HAProxy/云 LB),对外暴露 6443/tcp。
- Controller Manager 与 Scheduler 默认开启 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
