首页主机资讯如何自定义Debian上的K8s安装

如何自定义Debian上的K8s安装

时间2025-11-21 22:05:03发布访客分类主机资讯浏览354
导读:在 Debian 上自定义安装 Kubernetes 的实操指南 一 环境与规划 节点与网络 至少准备 2 核 CPU、2GB 内存、20GB 磁盘 的节点若干,建议使用 Debian 12(Bookworm)。 为各节点配置 静态 I...

在 Debian 上自定义安装 Kubernetes 的实操指南

一 环境与规划

  • 节点与网络
    • 至少准备 2 核 CPU、2GB 内存、20GB 磁盘 的节点若干,建议使用 Debian 12(Bookworm)
    • 为各节点配置 静态 IP,设置 主机名,并在所有节点的 /etc/hosts 中互指,保证节点名可解析。
    • 开启 NTP/chrony 时间同步,避免证书与组件通信异常。
  • 组件与版本
    • 容器运行时:优先使用 containerd(生产更通用);也可选 Docker(需额外配置 CRI 对接)。
    • 工具链:kubeadm / kubelet / kubectl,建议固定版本以避免升级漂移。
  • 网络规划
    • Pod 网段与 Service 网段需提前规划且不冲突,例如:Pod 使用 10.244.0.0/16,Service 使用 10.100.0.0/16
    • 如使用 Calico,需放行 BGP 179/TCP;如使用 Flannel VXLAN,需放行 UDP 4789
  • 防火墙与安全组
    • 控制面端口:6443/TCP(API)2379–2380/TCP(etcd)10250/TCP(kubelet)10251/TCP(kube-scheduler)10252/TCP(kube-controller-manager)
    • 节点端口:30000–32767/TCP(NodePort);按需开放 10255/TCP(kubelet 只读)

二 系统准备与容器运行时

  • 基础准备
    • 更新系统并安装常用工具:sudo apt update & & sudo apt upgrade -y
    • 关闭 Swap:sudo swapoff -a & & sudo sed -i '/ swap / s/^/#/g' /etc/fstab
    • 加载内核模块与网络参数:
      • sudo modprobe overlay & & sudo modprobe br_netfilter
      • echo -e "overlay\nbr_netfilter" | sudo tee /etc/modules-load.d/containerd.conf
      • echo -e "net.bridge.bridge-nf-call-iptables=1\nnet.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/99-kubernetes.conf & & sudo sysctl --system
  • 使用 containerd(推荐)
    • 安装与启用:sudo apt install -y containerd.io & & sudo systemctl enable --now containerd
    • 配置 SystemdCgroup:
      • sudo mkdir -p /etc/containerd & & containerd config default | sudo tee /etc/containerd/config.toml
      • [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] 下设置 SystemdCgroup = true
      • sudo systemctl restart containerd
  • 使用 Docker(可选)
    • 安装:sudo apt install -y docker.io & & sudo systemctl enable --now docker
    • 注意:Docker 默认使用 cgroups v1,若主机启用 cgroups v2,需按发行版指引调整或优先使用 containerd。

三 安装 kubeadm kubelet kubectl 与初始化控制面

  • 安装工具链
    • 添加仓库并安装:sudo apt update & & sudo apt install -y kubelet kubeadm kubectl
    • 锁定版本:sudo apt-mark hold kubelet kubeadm kubectl
  • 初始化控制面(示例)
    • 单控制面(最简):
      • sudo kubeadm init --pod-network-cidr=10.244.0.0/16
    • 高可用或指定镜像源/版本(示例):
      • sudo 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/16
  • 配置 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/calico.yaml
  • 加入工作节点
    • 使用 kubeadm init 输出中的 kubeadm join ... 命令在各 Worker 上执行。

四 自定义与常用场景

  • 自定义镜像仓库与版本
    • 通过 --image-repository 指定国内镜像源(如 registry.aliyuncs.com/google_containers),通过 --kubernetes-version 固定版本(如 v1.28.0)。
  • Pod 与 Service CIDR 自定义
    • 初始化时分别用 --pod-network-cidr--service-cidr 指定,确保与现有网络不冲突;不同网络插件对 Pod CIDR 有默认要求(如 Flannel 常用 10.244.0.0/16)。
  • 高可用控制面
    • 采用 --control-plane-endpoint 指向 VIP/负载均衡,并按需准备多台控制面节点与 etcd 集群(kubeadm 提供 HA 引导流程)。
  • 运行时与 cgroups
    • 生产推荐 containerd + SystemdCgroup=true;如使用 Docker,需确认 cgroups 驱动一致,避免 kubelet 异常。
  • 防火墙与端口
    • UFW 示例:
      • 控制面:sudo ufw allow 6443,2379:2380,10250,10251,10252/tcp
      • 工作节点:sudo ufw allow 10250/tcp & & sudo ufw allow 30000:32767/tcp
      • 按需放行 Calico BGP 179/TCP 或 Flannel VXLAN 4789/UDP
  • 自动化与批量部署
    • 使用 KubeKeycurl -sfL https://get-kk.kubesphere.io | sh -,随后 ./kk create cluster --with-local-storage --with-kubernetes v1.31.0 --container-manager containerd -y
    • 使用 Ansible:编写 Playbook 批量执行系统准备、容器运行时、kubeadm 初始化与加入等步骤。

五 验证与常见问题

  • 验证集群
    • kubectl cluster-infokubectl get nodes -o widekubectl get pods -A
    • 部署测试应用:kubectl create deployment nginx --image=nginx:1.25 --replicas=2
    • 暴露服务:kubectl expose deployment nginx --type=NodePort --port=80,访问 http://< NODE_IP> :< NodePort>
  • 常见问题排查
    • 节点 NotReady:检查 CNI 插件是否就绪、/var/log/syslog 中 kubelet 日志、crictl ps -a 容器状态。
    • Pod 无法跨节点通信:核对 Pod CIDR 与网络插件配置、节点间 UDP/TCP 放行、云厂商 安全组规则。
    • 镜像拉取失败:确认 image-repository 可达,或手动 crictl pull < 镜像> 验证。
    • kubelet 启动失败:确认 Swap 已关闭SystemdCgroup 配置正确、容器运行时健康。

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


若转载请注明出处: 如何自定义Debian上的K8s安装
本文地址: https://pptw.com/jishu/753755.html
ubuntu ifconfig怎样配置DHCP Laravel在Debian上的多环境配置方法

游客 回复需填写必要信息