Debian上K8s安装有哪些技巧
导读:Debian上安装Kubernetes的实用技巧 一 基础准备与系统设置 建议使用Debian 12(Bookworm),资源基线至少2核CPU、2GB内存、20GB磁盘,节点间网络互通且最好使用静态IP。 设置主机名与**/etc/ho...
Debian上安装Kubernetes的实用技巧
一 基础准备与系统设置
- 建议使用Debian 12(Bookworm),资源基线至少2核CPU、2GB内存、20GB磁盘,节点间网络互通且最好使用静态IP。
- 设置主机名与**/etc/hosts**解析,便于集群内通信与排障。
- 关闭swap:执行
swapoff -a并注释/etc/fstab中的swap行,避免kubelet异常。 - 开启内核模块与转发:加载
overlay、br_netfilter,开启net.bridge.bridge-nf-call-iptables=1与net.ipv4.ip_forward=1,使容器网络与K8s策略生效。 - 保持时间同步(如NTP),避免证书校验与调度异常。
二 容器运行时选择与配置
- 优先选择containerd(与K8s集成更紧密、维护成本更低):
- 安装后生成默认配置:
containerd config default > /etc/containerd/config.toml - 在
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]下设置SystemdCgroup = true,与systemd驱动一致。 - 重启并设为开机自启:
systemctl restart containerd & & systemctl enable containerd。
- 安装后生成默认配置:
- 若使用Docker:安装
docker-ce与containerd.io,启动并设为开机自启。 - 提示:无论哪种运行时,都需确保上述内核与sysctl已正确配置。
三 kubeadm初始化与网络插件
- 安装工具链:在所有节点安装
kubelet、kubeadm、kubectl,并apt-mark hold避免被系统升级干扰。 - 初始化控制平面(示例):
- 使用Flannel时:
kubeadm init --pod-network-cidr=10.244.0.0/16 - 使用Calico时:
kubeadm init --pod-network-cidr=192.168.0.0/16
不同网络插件的Pod CIDR需与插件文档一致,否则Pod网络不通。
- 使用Flannel时:
- 配置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:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml - Calico:
kubectl apply -f https://docs.projectcalico.org/manifests/tigera-operator.yaml与kubectl apply -f https://docs.projectcalico.org/manifests/custom-resources.yaml
- Flannel:
- 加入工作节点:在Master上复制
kubeadm join ...命令在各Node执行。
四 防火墙与端口规划
- 若使用UFW:
- 控制平面放行:6443/tcp(API)、2379-2380/tcp(etcd)、10250/tcp(kubelet)、10251/tcp(kube-scheduler)、10252/tcp(kube-controller-manager)、10255/tcp(kubelet health)。
- 工作节点放行:10250/tcp、以及NodePort范围30000-32767/tcp(如启用NodePort服务)。
- 如使用firewalld,请按等价的区域与端口规则放行,确保节点与控制平面之间的双向可达。
五 常见问题与快速排查
- 节点NotReady:优先检查CNI网络插件是否已成功部署、
Pod CIDR是否与插件匹配、以及节点内核参数与模块是否加载。 - kubelet反复重启:确认swap已关闭、
SystemdCgroup设置与运行时一致、以及容器运行时处于active状态。 - 镜像拉取慢或失败:在
kubeadm init时使用--image-repository registry.aliyuncs.com/google_containers加速;或提前在各节点docker pull/ctr images pull所需镜像。 - Pod间/外网不通:核对Pod CIDR与Service CIDR是否冲突,检查NodePort与安全组/防火墙策略。
- 加入集群失败:重新生成token与CA证书哈希(
kubeadm token create --print-join-command),确保时间同步与API可达。 - 虚拟机克隆环境:确保各节点MAC地址与product_uuid唯一,避免kubelet识别异常。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian上K8s安装有哪些技巧
本文地址: https://pptw.com/jishu/766942.html
