温馨提示×

Debian上K8s的资源如何分配

小樊
46
2025-06-07 18:43:37
栏目: 智能运维

在Debian上配置Kubernetes集群时,资源分配是一个关键步骤。以下是一个详细的指南,帮助你在Debian系统上进行资源分配:

1. 准备工作

硬件要求

  • 2个CPU / vCPU
  • 2 GB RAM
  • 20 GB硬盘空间
  • 具有管理权限的sudo用户
  • 稳定的互联网连接

网络配置

  • 确保每个节点都能通过可靠的网络连接与其他节点通信。
  • 关闭Swap分区:禁用Swap分区以确保kubelet顺利运行。

2. 安装Kubernetes组件

设置主机名和更新hosts文件

在每个节点上设置主机名,并在 /etc/hosts 文件中添加节点IP和主机名的映射。

sudo hostnamectl set-hostname "k8s-master01.test.local"
sudo hostnamectl set-hostname "k8s-worker01.test.local"
sudo hostnamectl set-hostname "k8s-worker02.test.local"

echo "192.168.16.20 k8s-master01.test.local k8s-master01" | sudo tee -a /etc/hosts
echo "192.168.16.21 k8s-worker01.test.local k8s-worker01" | sudo tee -a /etc/hosts
echo "192.168.16.22 k8s-worker02.test.local k8s-worker02" | sudo tee -a /etc/hosts

安装containerd运行时

在所有节点上安装containerd运行时,并设置必要的内核参数。

sudo apt update
sudo apt install -y containerd

cat << EOF | sudo tee /etc/modules-load.d/containerd.conf
overlaybr_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter

cat << EOF | sudo tee /etc/sysctl.d/99-kubernetes-k8s.conf
net.bridge.bridge-nf-call-iptables
net.ipv4.ip_forward
EOF

sudo sysctl --system

添加Kubernetes apt仓库

添加Kubernetes官方的apt仓库以获取最新版本的软件包。

sudo apt-get update
sudo apt-get 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-get update

安装Kubernetes工具

使用apt安装kubelet、kubeadm和kubectl。

sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

3. 初始化Kubernetes集群

使用kubeadm初始化控制平面组件,并配置网络插件。

sudo apt update
sudo apt install -y apt-transport-https curl
curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update

sudo apt install -y kubelet kubeadm kubectl

sudo kubeadm init --apiserver-advertise-address 192.168.16.20 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.28.0 --control-plane-endpoint 192.168.16.20 --service-cidr 10.100.0.0/16 --token-ttl 0 --pod-network-cidr 10.244.0.0/16

4. 安装网络插件

安装并配置网络插件,例如Calico。

wget https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml
kubectl apply -f calico.yaml

sudo ufw allow 179/tcp
sudo ufw allow 4789/udp
sudo ufw allow 51820/udp
sudo ufw allow 51821/udp
sudo ufw reload

5. 验证集群状态

验证集群的状态,确保所有组件正常运行。

kubectl get nodes

6. 资源分配策略

在Kubernetes中,可以通过以下几种方式调整资源分配策略:

调整单个Pod的资源请求和限制

手动修改YAML配置文件或创建ResourceQuota对象来限制资源使用总量。

apiVersion: v1
kind: ResourceQuota
metadata:
  name: my-namespace-quotas
spec:
  hard:
    requests.cpu: "4"
    requests.memory: 8Gi
    limits.cpu: "8"
    limits.memory: 16Gi

使用Horizontal Pod Autoscaler(HPA)进行自动扩缩容

创建HPA对象,根据CPU或内存利用率自动调整Pod的副本数量。

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: my-app-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: my-app-deployment
  minReplicas: 2
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 70

使用Vertical Pod Autoscaler(VPA)自动调整资源请求和限制

安装VPA组件,自动调整Pod的资源请求和限制。

apiVersion: autoscaling.k8s.io/v1
kind: VerticalPodAutoscaler
metadata:
  name: my-app-vpa
spec:
  targetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: my-app-deployment
  updatePolicy:
    updateMode: "Auto"

通过以上步骤,你可以在Debian上成功配置一个基本的Kubernetes集群,并进行资源分配。根据实际需求和环境调整细节。

0