温馨提示×

Kubernetes在Linux上如何高效部署

小樊
41
2025-11-04 12:32:38
栏目: 智能运维

Kubernetes在Linux上的高效部署指南

一、前期准备:环境与依赖配置

在开始部署前,需完成以下基础准备工作,确保系统环境符合Kubernetes的要求:

  1. 系统要求:使用CentOS 7.5+或Ubuntu 20.04+等主流Linux发行版,确保系统已更新至最新版本(sudo apt update && sudo apt upgrade -ysudo yum update -y)。
  2. 关闭冲突服务:Kubernetes组件需直接通信,需关闭防火墙、SELinux和Swap:
    # 关闭防火墙
    sudo systemctl stop firewalld && sudo systemctl disable firewalld
    # 关闭SELinux(临时生效)
    sudo setenforce 0
    # 永久关闭SELinux(修改配置文件)
    sudo sed -i 's/enforcing/disabled/' /etc/selinux/config
    # 关闭Swap
    sudo swapoff -a
    sudo sed -i '/swap/d' /etc/fstab
    
  3. 配置内核参数:编辑/etc/sysctl.conf,添加以下参数以优化网络性能:
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    net.ipv4.ip_forward = 1
    
    生效配置:sudo sysctl --system
  4. 安装Docker:Kubernetes推荐使用Docker作为容器运行时,安装步骤如下:
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    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
    sudo systemctl enable docker && sudo systemctl start docker
    # 配置Docker镜像加速(国内推荐)
    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://registry.aliyuncs.com"]
    }
    EOF
    sudo systemctl daemon-reload && sudo systemctl restart docker
    

二、核心组件部署:kubeadm快速初始化

使用kubeadm工具可快速完成Kubernetes集群的部署,步骤如下:

  1. 安装kubeadm、kubelet、kubectl
    sudo yum install -y kubeadm kubelet kubectl --nogpgcheck
    sudo systemctl enable kubelet
    
  2. 初始化Master节点
    sudo kubeadm init \
      --apiserver-advertise-address=<Master节点IP> \
      --pod-network-cidr=10.244.0.0/16 \
      --image-repository registry.aliyuncs.com/google_containers \
      --kubernetes-version v1.28.0
    
    • --apiserver-advertise-address:指定Master节点的访问IP;
    • --pod-network-cidr:指定Pod网络的CIDR范围(需与后续网络插件兼容);
    • --image-repository:使用国内镜像仓库加速镜像下载(避免网络问题)。
  3. 配置kubectl:初始化成功后,执行以下命令配置kubectl:
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
  4. 加入Worker节点:在Master节点初始化完成后,会输出kubeadm join命令(包含Token和CA证书哈希)。在Worker节点上执行该命令即可加入集群:
    sudo kubeadm join <Master节点IP>:6443 --token <Token> --discovery-token-ca-cert-hash sha256:<Hash>
    

三、网络插件部署:Calico实现Pod通信

Kubernetes需要网络插件实现Pod之间的跨节点通信,推荐使用Calico(高性能、易配置):

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

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

kubectl get pods -n calico-system

若所有Pod状态为Running,则说明网络插件部署成功。

四、高效部署优化技巧

为提升部署效率和集群性能,需进行以下优化:

  1. 自动化部署:使用脚本或工具简化重复操作:
    • 脚本部署:编写Shell脚本自动执行安装Docker、kubeadm、初始化Master等步骤(参考搜索结果中的脚本示例);
    • Ansible自动化:通过Ansible Playbook批量管理节点,实现“一键部署”(适用于大规模集群)。
  2. 镜像优化
    • 使用轻量级镜像:如Alpine Linux(体积小、启动快)替代Ubuntu;
    • 多阶段构建:减少镜像层数和大小(例如,将编译环境和运行环境分离)。
  3. 资源调优
    • 调整kubelet参数:修改/etc/systemd/system/kubelet.service.d/10-kubeadm.conf,设置--max-pods(每个节点最大Pod数,默认110,可根据节点资源调整);
    • 启用kube-proxy的IPVS模式:IPVS比iptables更适合大规模集群,提升网络性能:
      kubectl edit cm -n kube-system kube-proxy
      # 修改mode为ipvs
      mode: "ipvs"
      
      重启kube-proxy使配置生效:
      kubectl rollout restart ds -n kube-system kube-proxy
      

五、验证集群状态

部署完成后,通过以下命令验证集群是否正常运行:

# 查看Master节点状态
kubectl get nodes
# 查看集群组件状态
kubectl get componentstatuses
# 查看Pod状态
kubectl get pods -A

若所有节点状态为Ready、组件状态为Healthy、Pod状态为Running,则说明集群部署成功。

通过以上步骤,可在Linux上高效部署Kubernetes集群,并通过优化手段提升集群的性能和稳定性。部署过程中需注意版本兼容性(如Docker与Kubernetes的版本匹配)和网络安全(如配置RBAC、网络策略),确保集群的安全运行。

0