温馨提示×

Linux如何支持Kubernetes集群

小樊
79
2025-09-23 02:22:40
栏目: 智能运维

Linux支持Kubernetes集群的核心条件与部署流程
Kubernetes(K8s)是一个开源容器编排平台,其设计初衷是跨平台支持,而Linux是K8s的首选操作系统(K8s社区版本主要针对Linux优化)。Linux系统的高稳定性、灵活的网络配置及对容器技术的原生支持,使其成为搭建K8s集群的基础环境。

一、Linux支持K8s集群的前提条件

要让Linux系统支持K8s集群,需满足以下关键要求:

  1. 操作系统兼容性
    推荐使用Ubuntu 16.04及以上版本CentOS 7.x及以上版本或**Rocky Linux 8+**等主流Linux发行版(避免使用过旧的内核版本,如CentOS 6.x)。
  2. 硬件要求
    • 至少3台服务器(用于搭建最小规模集群:1个Master节点+2个Worker节点,生产环境建议更多);
    • 每台服务器需配备≥2GB内存≥2核CPU≥20GB存储空间(若运行内存密集型应用,需适当增加内存)。
  3. 基础环境配置
    • 网络互通:所有节点之间需能通过SSH无密码登录,且防火墙开放K8s组件通信端口(如6443(API Server)、10250(kubelet)等);
    • 关闭SELinux(仅CentOS/RHEL):setenforce 0(临时关闭),并修改/etc/selinux/config文件中的SELINUX=disabled(永久关闭);
    • 禁用Swap分区swapoff -a(临时禁用),并修改/etc/fstab文件(删除或注释swap相关行,永久禁用)——K8s要求节点禁用Swap以避免性能问题。

二、Linux下部署K8s集群的具体步骤

1. 准备基础环境

在所有节点上执行以下操作:

  • 更新系统软件包:sudo apt update && sudo apt upgrade -y(Ubuntu)或sudo yum update -y(CentOS);
  • 安装Docker(容器运行时):
    • Ubuntu:添加Docker官方仓库并安装:
      curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
      sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
      sudo apt install -y docker-ce docker-ce-cli containerd.io
      
    • CentOS:使用Yum安装:
      sudo yum install -y yum-utils
      sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
      sudo yum install -y docker-ce docker-ce-cli containerd.io
      
    • 启动Docker服务并设置开机自启:sudo systemctl start docker && sudo systemctl enable docker

2. 安装K8s核心组件

在所有节点上安装kubeadm(集群初始化工具)、kubelet(节点代理)、kubectl(命令行工具):

  • Ubuntu:
    sudo apt install -y apt-transport-https curl
    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 update
    sudo apt install -y kubelet kubeadm kubectl
    sudo apt-mark hold kubelet kubeadm kubectl  # 锁定版本,避免自动升级
    
  • CentOS:
    cat <<EOF > /etc/yum.repos.d/kubernetes.repo
    [kubernetes]
    name=Kubernetes
    baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
    enabled=1
    gpgcheck=1
    repo_gpgcheck=1
    gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
    EOF
    sudo yum install -y kubelet kubeadm kubectl
    sudo systemctl enable kubelet
    ```。  
    
    

3. 初始化Master节点

在Master节点上执行kubeadm init命令初始化集群(需指定Pod网络CIDR,如10.244.0.0/16,用于Flannel等网络插件):

sudo kubeadm init --apiserver-advertise-address=<Master节点IP> --pod-network-cidr=10.244.0.0/16

初始化成功后,会输出加入Worker节点的命令(需保存,后续使用),并提示配置kubectl

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

验证Master节点状态:kubectl get nodes(此时Master节点状态为NotReady,需等待网络插件部署)。

4. 部署网络插件

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

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

部署完成后,再次检查Master节点状态:kubectl get nodes(此时Master节点应变为Ready)。

5. 加入Worker节点

在Worker节点上执行Master节点初始化时输出的kubeadm join命令(替换其中的<Master节点IP><token><sha256哈希>):

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

执行成功后,Worker节点会自动连接到Master节点,Master节点的kubectl get nodes命令将显示该节点状态为Ready

三、常见问题排查

  • 节点状态NotReady:检查Docker/kubelet服务是否运行(systemctl status docker kubelet),网络插件是否部署成功(kubectl get pods -n kube-system),节点间网络是否互通(ping <其他节点IP>);
  • kubeadm init失败:确保系统满足K8s版本要求(如K8s 1.25需Linux内核≥3.10),Docker版本兼容(建议使用18.09及以上版本),swap分区已禁用。

通过以上步骤,即可在Linux系统上成功搭建Kubernetes集群,实现对容器化应用的高效编排与管理。

0