温馨提示×

Debian与Kubernetes的集成开发环境搭建

小樊
43
2025-11-29 08:55:54
栏目: 智能运维

在 Debian 上搭建 Kubernetes 集成开发环境

一 环境准备与系统要求

  • 节点建议:至少 2 核 CPU、2GB 内存、20GB 磁盘,并确保节点间 网络互通(可直连 6443 等端口)。
  • 主机名与解析:为每个节点设置 唯一主机名,并在 /etc/hosts 中添加 IP-主机名 映射,便于集群内部解析。
  • 关闭 Swap:Kubelet 要求关闭 Swap。执行:
    • 临时:sudo swapoff -a
    • 永久:注释 /etc/fstab 中的 swap 行:sudo sed -i '/ swap / s/^/#/g' /etc/fstab
  • 基础工具:安装常用工具 sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common

二 安装容器运行时

  • 方案 A Docker(通用、易上手)
    • 安装:sudo apt-get update && sudo apt-get install -y docker.io
    • 启动与开机自启:sudo systemctl enable --now docker
  • 方案 B containerd(与 Kubernetes 原生集成度高)
    • 安装:sudo apt-get install -y containerd
    • 启用模块与内核参数:
      sudo tee /etc/modules-load.d/containerd.conf <<EOF
      overlay
      br_netfilter
      EOF
      sudo modprobe overlay
      sudo modprobe br_netfilter
      sudo tee /etc/sysctl.d/99-kubernetes-k8s.conf <<EOF
      net.bridge.bridge-nf-call-iptables  = 1
      net.ipv4.ip_forward                 = 1
      EOF
      sudo sysctl --system
      
    • 启动与开机自启:sudo systemctl enable --now containerd
      说明:两者均可作为运行时;若使用 containerd,后续 kubeadm 可直接对接,无需额外配置 Docker。

三 安装 Kubernetes 组件

  • 添加仓库并安装:
    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-get update
    sudo apt-get install -y kubelet kubeadm kubectl
    sudo apt-mark hold kubelet kubeadm kubectl
    
  • 可选 指定版本(示例为 v1.26.0):
    sudo apt-get install -y kubelet=1.26.0-00 kubeadm=1.26.0-00 kubectl=1.26.0-00
    sudo apt-mark hold kubelet kubeadm kubectl
    
  • 启动 kubelet:
    sudo systemctl daemon-reload
    sudo systemctl enable --now kubelet
    

说明:kubelet 会持续重启直至集群初始化完成。

四 初始化控制平面与网络插件

  • 初始化 Master(示例命令,按需替换参数):
    sudo kubeadm init \
      --apiserver-advertise-address <MASTER_IP> \
      --pod-network-cidr 10.244.0.0/16 \
      --service-cidr 10.100.0.0/16
    
    常见网络插件与 Pod CIDR 搭配:
    • Flannel:Pod CIDR 常用 10.244.0.0/16
    • Calico:Pod CIDR 常用 192.168.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
      
  • 加入 Worker 节点:在 Master 初始化完成后,使用输出的 kubeadm join ... 命令在各 Worker 上执行。
  • 验证:
    kubectl cluster-info
    kubectl get nodes
    

说明:网络插件必须在控制平面就绪后安装,否则节点会一直处于 NotReady

五 开发验证与常见问题

  • 快速验证应用:
    kubectl create deployment nginx-app --image=nginx:1.25 --replicas=2
    kubectl expose deployment nginx-app --name=nginx-web-svc --type=NodePort --port=80 --target-port=80
    kubectl get pods -o wide
    kubectl get svc nginx-web-svc
    
    访问方式:集群内 http://nginx-web-svc;集群外使用任意节点 IP:NodePort
  • 常见问题与处理
    • 节点 NotReady:检查 Pod 网络插件是否已安装、Pod CIDR 是否与插件配置一致。
    • crictl 无法连接容器运行时:若使用 containerd,确保已启用 overlay/br_netfilterip_forward,并以 sudo crictl --runtime-endpoint=unix:///run/containerd/containerd.sock 指定运行时端点。
    • 镜像拉取慢或失败:配置 镜像仓库镜像(如国内镜像源),或在 kubeadm 初始化时使用 --image-repository 指定镜像仓库。
    • 防火墙/安全组:放行 6443(API Server)、10250(kubelet)、以及网络插件所需端口(如 8472/udp 用于 Flannel VXLAN)。
    • 重置环境:如需重来,执行 sudo kubeadm reset -f,清理 /etc/cni/net.d/var/lib/etcd 后再初始化。

0