在 Debian 上自定义安装 Kubernetes 的实操指南
一 环境与规划
二 系统准备与容器运行时
sudo apt update && sudo apt upgrade -ysudo swapoff -a && sudo sed -i '/ swap / s/^/#/g' /etc/fstabsudo modprobe overlay && sudo modprobe br_netfilterecho -e "overlay\nbr_netfilter" | sudo tee /etc/modules-load.d/containerd.confecho -e "net.bridge.bridge-nf-call-iptables=1\nnet.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/99-kubernetes.conf && sudo sysctl --systemsudo apt install -y containerd.io && sudo systemctl enable --now containerdsudo mkdir -p /etc/containerd && containerd config default | sudo tee /etc/containerd/config.toml[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] 下设置 SystemdCgroup = truesudo systemctl restart containerdsudo apt install -y docker.io && sudo systemctl enable --now docker三 安装 kubeadm kubelet kubectl 与初始化控制面
sudo apt update && sudo apt install -y kubelet kubeadm kubectlsudo apt-mark hold kubelet kubeadm kubectlsudo kubeadm init --pod-network-cidr=10.244.0.0/16sudo kubeadm init \ --apiserver-advertise-address=<MASTER_IP> \ --control-plane-endpoint=<MASTER_IP>:6443 \ --image-repository=registry.aliyuncs.com/google_containers \ --kubernetes-version=v1.28.0 \ --service-cidr=10.100.0.0/16 \ --pod-network-cidr=10.244.0.0/16mkdir -p $HOME/.kube && sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config && sudo chown $(id -u):$(id -g) $HOME/.kube/configkubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.ymlkubectl apply -f https://docs.projectcalico.org/manifests/calico.yamlkubeadm init 输出中的 kubeadm join ... 命令在各 Worker 上执行。四 自定义与常用场景
--image-repository 指定国内镜像源(如 registry.aliyuncs.com/google_containers),通过 --kubernetes-version 固定版本(如 v1.28.0)。--pod-network-cidr 与 --service-cidr 指定,确保与现有网络不冲突;不同网络插件对 Pod CIDR 有默认要求(如 Flannel 常用 10.244.0.0/16)。--control-plane-endpoint 指向 VIP/负载均衡,并按需准备多台控制面节点与 etcd 集群(kubeadm 提供 HA 引导流程)。sudo ufw allow 6443,2379:2380,10250,10251,10252/tcpsudo ufw allow 10250/tcp && sudo ufw allow 30000:32767/tcpcurl -sfL https://get-kk.kubesphere.io | sh -,随后 ./kk create cluster --with-local-storage --with-kubernetes v1.31.0 --container-manager containerd -y五 验证与常见问题
kubectl cluster-info、kubectl get nodes -o wide、kubectl get pods -Akubectl create deployment nginx --image=nginx:1.25 --replicas=2kubectl expose deployment nginx --type=NodePort --port=80,访问 http://<NODE_IP>:<NodePort>/var/log/syslog 中 kubelet 日志、crictl ps -a 容器状态。crictl pull <镜像> 验证。