在Debian上配置Kubernetes集群时,资源分配是一个关键步骤。以下是一个详细的指南,帮助你在Debian系统上进行资源分配:
在每个节点上设置主机名,并在 /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运行时,并设置必要的内核参数。
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仓库以获取最新版本的软件包。
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
使用apt安装kubelet、kubeadm和kubectl。
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
使用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
安装并配置网络插件,例如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
验证集群的状态,确保所有组件正常运行。
kubectl get nodes
在Kubernetes中,可以通过以下几种方式调整资源分配策略:
手动修改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
创建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
安装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集群,并进行资源分配。根据实际需求和环境调整细节。