centos

k8s在centos上的资源分配

小樊
56
2025-07-04 21:22:34
栏目: 智能运维

在CentOS上部署和管理Kubernetes(k8s)集群时,资源分配是一个关键步骤。以下是一些详细的步骤和策略,帮助你在CentOS上成功部署Kubernetes并进行有效的资源分配和管理:

资源分配基本步骤

  1. 系统准备

    • 更新系统:sudo yum update -y
    • 安装必要的软件包:sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    • 关闭防火墙和SELinux:
      sudo systemctl stop firewalld
      sudo systemctl disable firewalld
      sudo sed -i 's/SELINUX.*/SELINUX=disabled/' /etc/selinux/config
      sudo swapoff -a && echo 'vm.swappiness  0' /etc/sysctl.conf
      
    • 配置静态网络:编辑 /etc/sysconfig/network-scripts/ifcfg-ens33 文件,设置静态IP地址、网关和DNS。
  2. 安装Docker

    • 添加Docker的yum源:
      sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
      
    • 安装Docker CE:
      sudo yum install -y docker-ce
      sudo systemctl start docker
      sudo systemctl enable docker
      
  3. 安装Kubernetes组件

    • 添加Kubernetes的yum源:
      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
      
    • 安装kubelet、kubeadm和kubectl:
      sudo yum install -y kubelet kubeadm kubectl
      sudo systemctl enable kubelet && sudo systemctl start kubelet
      
  4. 初始化Master节点

    sudo kubeadm init --pod-network-cidr=10.244.0.0/16
    
  5. 安装网络插件

    • 安装Flannel网络插件:
      kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
      
  6. 配置kubectl

    mkdir -p $HOME/.kubes
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
  7. 验证安装

    • 验证Docker安装:
      sudo docker run hello-world
      
    • 验证kubectl安装:
      kubectl get nodes
      

资源请求和限制

在Kubernetes中,资源分配主要通过定义Pod的资源请求和限制来实现。以下是一个示例Pod配置文件:

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my-container
    image: nginx
    resources:
      requests:
        memory: "64Mi"
        cpu: "250m"
      limits:
        memory: "128Mi"
        cpu: "500m"

动态资源分配(DRA)

虽然DRA目前还在alpha阶段,但它展示了强大的潜力,可以通过动态管理资源来提高集群的资源利用率。

资源调度策略

  1. 定向调度与亲和性

    • 使用nodeName或nodeSelector来强制将Pod调度到特定的节点。
    • 使用nodeAffinity、podAffinity和podAntiAffinity来实现更复杂的调度规则。
  2. 资源拓扑感知调度

    • 利用Kubernetes的CPU Manager功能,根据节点的NUMA拓扑结构进行CPU分配。
  3. 服务质量(QoS)

    • 根据Pod的需求设置不同的QoS级别,以确保关键应用的性能。
  4. 调度器插件

    • 使用调度器插件来扩展调度器的功能,如podTopologySpread插件可以自动将Pod分布到不同的节点上。

监控与调整

使用监控工具(如Prometheus)来监控集群的负载和性能,根据监控数据进行调度策略的调整。

通过以上步骤和策略,你可以在CentOS上成功部署Kubernetes并进行有效的资源分配和管理。根据实际需求,可以进一步调整和优化资源分配策略。

0
看了该问题的人还看了