linux

如何在Linux上搭建Kubernetes环境

小樊
49
2025-11-08 19:24:48
栏目: 智能运维

在Linux上搭建Kubernetes环境的通用步骤

一、前置准备

  1. 硬件要求
    最小规模集群需1台Master节点+2台Worker节点(生产环境建议更多节点以保证高可用)。每台服务器需满足:

    • 至少2GB内存、2核CPU、20GB存储空间;
    • 确保节点间网络互通(可通过ping命令测试)。
  2. 软件与配置要求

    • 操作系统:推荐使用Ubuntu 20.04+/CentOS 7+/Rocky Linux 8+等主流发行版;
    • 容器运行时:Kubernetes默认支持Docker(需安装兼容版本,如Docker CE 18.09+);
    • 基础配置
      • 关闭SELinux(CentOS/RHEL):编辑/etc/selinux/config,将SELINUX=enforcing改为SELINUX=disabled,重启生效;
      • 关闭防火墙(或放行必要端口):systemctl stop firewalld && systemctl disable firewalld(CentOS);ufw disable(Ubuntu);
      • 禁用Swap分区:swapoff -a(临时生效),并修改/etc/fstab注释掉Swap行(永久生效);
      • 配置主机名与hosts文件:通过hostnamectl set-hostname <节点名称>设置主机名,在所有节点的/etc/hosts中添加节点IP与主机名映射(如192.168.1.100 master-node)。

二、安装Docker容器运行时

Docker是Kubernetes最常用的容器运行时,安装步骤如下(以Ubuntu为例,CentOS类似):

  1. 添加Docker官方GPG密钥:
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    
  2. 添加Docker APT仓库:
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    
  3. 安装Docker并启动服务:
    sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io
    sudo systemctl enable --now docker
    
  4. 验证Docker安装:
    docker run hello-world
    
    (若输出“Hello from Docker!”则表示安装成功)

三、安装Kubernetes核心组件(kubeadm、kubelet、kubectl)

Kubernetes核心组件需通过包管理器安装(以Ubuntu为例,CentOS需替换为YUM源):

  1. 添加Kubernetes官方APT仓库:
    curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/kubernetes-archive-keyring.gpg
    echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list > /dev/null
    
  2. 安装组件并锁定版本(避免自动升级):
    sudo apt update
    sudo apt install -y kubelet kubeadm kubectl
    sudo apt-mark hold kubelet kubeadm kubectl  # 锁定版本
    
  3. 验证组件安装:
    kubeadm version && kubelet version && kubectl version --client
    
    (需显示版本信息,且kubectl为客户端版本)

四、初始化Master节点

Master节点是集群的控制平面,负责调度、管理集群状态。

  1. 执行初始化命令(需替换<Master节点IP>):

    sudo kubeadm init --apiserver-advertise-address=<Master节点IP> --pod-network-cidr=10.244.0.0/16
    
    • --apiserver-advertise-address:指定Master节点的监听IP;
    • --pod-network-cidr:指定Pod网络的CIDR范围(需与后续网络插件兼容,如Flannel默认使用10.244.0.0/16)。
  2. 初始化完成后,会输出kubeadm join命令(包含Token和CA证书哈希),务必保存该命令(用于Worker节点加入集群)。

  3. 配置kubectl

    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    

    (配置完成后,可通过kubectl version验证客户端与服务端连接)

五、部署网络插件

Kubernetes需要网络插件实现Pod间的通信,常用插件包括Calico(高性能、支持网络策略)、Flannel(简单易用)。以下以Calico为例:

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

(若使用Flannel,可将命令替换为kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

部署完成后,检查网络插件状态:

kubectl get pods -n kube-system

(所有Pod应处于Running状态,若有Pending状态的Pod,需检查网络配置)

六、加入Worker节点

在Worker节点上执行Master节点初始化时输出的kubeadm join命令(如未保存,可在Master节点通过kubeadm token create --print-join-command重新生成):

sudo kubeadm join <Master节点IP>:6443 --token <TOKEN> --discovery-token-ca-cert-hash sha256:<HASH>

(执行后,Worker节点会自动连接到Master节点,无需额外操作)

七、验证集群状态

在Master节点上运行以下命令,检查集群状态:

kubectl get nodes

(若所有节点(Master+Worker)均显示Ready状态,则表示集群搭建成功)

注意事项

0
看了该问题的人还看了