在CentOS上配置Kubernetes(k8s)资源分配涉及多个步骤,包括系统准备、安装Kubernetes组件、配置网络、以及设置资源限制等。以下是详细的步骤指南:
更新系统:
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.*/SELINUXdisabled/' /etc/selinux/config
sudo swapoff -a && echo 'vm.swappiness = 0' >> /etc/sysctl.conf
配置静态网络:
编辑 /etc/sysconfig/network-scripts/ifcfg-ens33
文件,设置静态IP地址、网关和DNS。
DEVICE=ens33
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
ONBOOT=yes
添加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
添加Kubernetes的yum源:
创建 /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
安装kubelet、kubeadm和kubectl:
sudo yum install -y kubelet kubeadm kubectl
sudo systemctl enable kubelet && sudo systemctl start kubelet
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
验证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"
Kubernetes支持动态资源分配,可以通过配置资源请求和限制来管理Pod的资源使用。例如,可以在Pod的配置文件中指定请求和限制GPU资源:
resources:
limits:
nvidia.com/gpu: 1 # 请求1个GPU
为了更细粒度地控制GPU资源的使用,可以在集群中配置GPU限制和调度策略。例如,可以通过Kubernetes的节点配置来限制每个节点可以使用的GPU数量。
通过以上步骤,你可以在CentOS上成功配置Kubernetes集群,并进行资源分配和管理。根据实际需求,可以进一步调整和优化资源分配策略。