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 version3. 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 kubectl4. 集群初始化
在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/config5. 网络插件安装
我们选择Flannel作为网络插件:
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml验证网络插件安装:
kubectl get pods -n kube-system -l app=flannel6. 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.08. 部署测试应用
验证集群功能是否正常:
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/config9.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 性能优化建议
- 为kubelet配置资源预留:
sudo vi /var/lib/kubelet/config.yaml添加或修改以下内容:
systemReserved: cpu: "500m" memory: "500Mi" kubeReserved: cpu: "500m" memory: "500Mi"- 调整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