debian

Debian机器如何搭建Kubernetes环境

小樊
43
2025-10-25 13:18:29
栏目: 智能运维

Debian机器搭建Kubernetes环境详细步骤

一、准备工作

  1. 硬件要求:每节点至少2核CPU、2GB内存、20GB可用磁盘空间(生产环境建议更高配置)。
  2. 系统要求:推荐使用Debian 12(Bookworm)及以上稳定版本(若使用Debian 11需调整软件源地址)。
  3. 网络要求:所有节点(Master/Worker)之间能互相通信,关闭防火墙或开放必要端口(如6443(K8s API)、2379-2380(etcd)、10250(kubelet)等)。
  4. 唯一性检查:确保每节点的MAC地址、product_uuidcat /sys/class/dmi/id/product_uuid)唯一,避免虚拟机克隆导致的问题。

二、系统初始化

  1. 更新系统
    sudo apt update && sudo apt upgrade -y
    
  2. 安装必要工具
    sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
    
  3. 禁用Swap
    Kubernetes要求禁用Swap,否则kubelet无法正常启动:
    sudo swapoff -a  # 临时关闭
    sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab  # 永久禁用(注释掉swap行)
    

三、安装容器运行时(Docker)

Kubernetes支持多种容器运行时(如Docker、containerd),这里以Docker为例:

  1. 添加Docker仓库
    curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
    echo "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list
    
  2. 安装Docker
    sudo apt update
    sudo apt install -y docker-ce docker-ce-cli containerd.io
    sudo systemctl start docker && sudo systemctl enable docker
    
  3. 验证Docker状态
    sudo docker run hello-world  # 测试Docker是否正常运行
    

四、安装Kubernetes核心组件

  1. 添加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
    
  2. 安装kubelet、kubeadm、kubectl
    sudo apt update
    sudo apt install -y kubelet kubeadm kubectl
    sudo apt-mark hold kubelet kubeadm kubectl  # 锁定版本,避免自动升级
    

五、初始化Master节点

  1. 初始化集群
    在Master节点上执行以下命令(--pod-network-cidr需与后续网络插件匹配,如Flannel用10.244.0.0/16):
    sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12
    
    初始化完成后,会输出加入Worker节点的命令(包含Token和CA证书哈希),需保存备用。
  2. 配置kubectl
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
  3. 验证Master节点状态
    kubectl get nodes  # 应显示Master节点状态为"NotReady"(需安装网络插件后变为Ready)
    

六、部署网络插件

Kubernetes需要网络插件实现Pod间通信,常用Flannel(轻量易用):

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

等待插件部署完成(可通过kubectl get pods -n kube-system查看插件Pod状态,需均为Running)。

七、加入Worker节点

在每台Worker节点上执行Master节点初始化时输出的命令(示例如下,需替换为实际值):

sudo kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

八、验证集群状态

  1. 检查节点状态(在Master节点执行):
    kubectl get nodes
    
    所有节点应显示为Ready状态。
  2. 部署测试应用(可选):
    部署Nginx应用并暴露为NodePort服务,验证集群功能:
    kubectl create deployment nginx-app --image=nginx --replicas=2
    kubectl expose deployment nginx-app --name=nginx-web-svc --type=NodePort --port=80 --target-port=80
    kubectl get pods  # 查看Pod是否Running
    kubectl get svc   # 查看Service的NodePort(如31000-32767之间的端口)
    
    在浏览器访问http://<Master-IP>:<NodePort>,应看到Nginx欢迎页面。

九、注意事项

  1. 版本兼容性:确保Docker、Kubernetes组件版本兼容(参考Kubernetes官方文档的版本支持表)。
  2. 网络插件选择:除Flannel外,还可选择Calico(高性能)、Cilium(支持eBPF)等,根据需求调整。
  3. 安全加固:生产环境需配置RBAC、网络策略、etcd加密等安全措施。
  4. 备份与恢复:定期备份/etc/kubernetes目录(包含集群配置)和etcd数据(集群状态)。

0
看了该问题的人还看了