Kubernetes 1.32 集群部署:Ubuntu 24.04 双节点 10 分钟快速初始化

Kubernetes 1.32 集群部署:Ubuntu 24.04 双节点 10 分钟快速初始化

1. 环境准备与系统配置

在开始部署 Kubernetes 1.32 集群之前,我们需要确保两台 Ubuntu 24.04 服务器已经完成基础配置。以下是两台节点的推荐配置:

  • Master节点:2核CPU/4GB内存/50GB存储
  • Worker节点:2核CPU/2GB内存/30GB存储

首先在两台服务器上执行以下系统配置命令:

# 禁用交换分区(所有节点执行) sudo swapoff -a sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab # 关闭SELinux(如已安装) sudo setenforce 0 sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config # 加载内核模块(所有节点执行) sudo modprobe overlay sudo modprobe br_netfilter # 配置内核参数 cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward = 1 EOF sudo sysctl --system

提示:确保两台服务器之间可以互相ping通,且主机名解析正常。可以通过编辑/etc/hosts文件或配置DNS实现。

2. 容器运行时安装与配置

Kubernetes 1.32 默认使用 containerd 作为容器运行时。以下是安装步骤:

# 安装containerd(所有节点执行) sudo apt-get update sudo apt-get install -y containerd # 生成默认配置文件 sudo mkdir -p /etc/containerd containerd config default | sudo tee /etc/containerd/config.toml # 修改配置文件使用systemd作为cgroup驱动 sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml # 重启并启用containerd sudo systemctl restart containerd sudo systemctl enable containerd

验证containerd安装:

sudo ctr version

3. Kubernetes组件安装

在所有节点上安装kubeadm、kubelet和kubectl:

# 添加Kubernetes官方GPG密钥 sudo curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.32/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg # 添加Kubernetes APT仓库 echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.32/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list # 安装组件 sudo apt-get update sudo apt-get install -y kubelet=1.32.* kubeadm=1.32.* kubectl=1.32.* sudo apt-mark hold kubelet kubeadm kubectl

4. 集群初始化

在Master节点上执行初始化命令:

sudo kubeadm init \ --pod-network-cidr=10.244.0.0/16 \ --control-plane-endpoint=$(hostname -f) \ --upload-certs \ --image-repository=registry.aliyuncs.com/google_containers

初始化完成后,按照输出提示配置kubectl:

mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config

5. 网络插件安装

我们选择Flannel作为网络插件:

kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml

验证网络插件安装:

kubectl get pods -n kube-system -l app=flannel

6. Worker节点加入集群

使用Master节点初始化时提供的join命令将Worker节点加入集群:

sudo kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash <hash>

注意:如果忘记了join命令,可以在Master节点上运行kubeadm token create --print-join-command重新生成。

7. 验证集群状态

在Master节点上运行以下命令验证集群状态:

kubectl get nodes -o wide

输出应显示两个节点均为Ready状态:

NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME master01 Ready control-plane 5m v1.32.2 192.168.1.10 <none> Ubuntu 24.04 LTS 6.8.0-31-generic containerd://1.7.0 worker01 Ready <none> 3m v1.32.2 192.168.1.11 <none> Ubuntu 24.04 LTS 6.8.0-31-generic containerd://1.7.0

8. 部署测试应用

验证集群功能是否正常:

kubectl create deployment nginx --image=nginx:latest kubectl expose deployment nginx --port=80 --type=NodePort kubectl get svc nginx

访问测试应用:

curl http://<node-ip>:<node-port>

9. 集群管理技巧

9.1 快速重置节点

如果初始化过程中出现问题,可以使用以下命令重置节点:

sudo kubeadm reset sudo rm -rf /etc/cni/net.d sudo rm -rf $HOME/.kube/config

9.2 常用命令速查表

命令描述
kubectl cluster-info查看集群信息
kubectl get pods -A查看所有命名空间的Pod
kubectl describe node <node-name>查看节点详细信息
kubectl logs <pod-name>查看Pod日志
kubectl exec -it <pod-name> -- /bin/bash进入Pod容器

9.3 性能优化建议

  1. 为kubelet配置资源预留:
sudo vi /var/lib/kubelet/config.yaml

添加或修改以下内容:

systemReserved: cpu: "500m" memory: "500Mi" kubeReserved: cpu: "500m" memory: "500Mi"
  1. 调整containerd资源限制:
sudo vi /etc/containerd/config.toml

[plugins."io.containerd.grpc.v1.cri".containerd]部分添加:

sandbox_cpu = "500m" sandbox_memory = "512Mi"

10. 自动化部署脚本

为了简化部署过程,可以创建一个自动化脚本k8s-init.sh

#!/bin/bash # 系统配置 swapoff -a sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab setenforce 0 sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config # 安装containerd apt-get update apt-get install -y containerd mkdir -p /etc/containerd containerd config default | tee /etc/containerd/config.toml sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml systemctl restart containerd systemctl enable containerd # 安装Kubernetes组件 curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.32/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.32/deb/ /" | tee /etc/apt/sources.list.d/kubernetes.list apt-get update apt-get install -y kubelet=1.32.* kubeadm=1.32.* kubectl=1.32.* apt-mark hold kubelet kubeadm kubectl # 仅Master节点执行 if [[ $1 == "master" ]]; then kubeadm init \ --pod-network-cidr=10.244.0.0/16 \ --control-plane-endpoint=$(hostname -f) \ --upload-certs \ --image-repository=registry.aliyuncs.com/google_containers mkdir -p $HOME/.kube cp -i /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/config kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml fi

使用方式:

  • Master节点:sudo bash k8s-init.sh master
  • Worker节点:sudo bash k8s-init.sh