Ubuntu如何安装Kubernetes集群
导读:Ubuntu上使用 kubeadm 安装 Kubernetes 集群 一 环境准备与前置检查 准备至少 2 核 CPU、2GB 内存、30GB 磁盘 的机器若干(建议 1 个 Master + 2 个 Worker),节点间网络互通,可访...
Ubuntu上使用 kubeadm 安装 Kubernetes 集群
一 环境准备与前置检查
- 准备至少 2 核 CPU、2GB 内存、30GB 磁盘 的机器若干(建议 1 个 Master + 2 个 Worker),节点间网络互通,可访问外网拉取镜像,并禁用 Swap。
- 关闭 Swap(临时与永久):
- 临时:
swapoff -a & & sysctl -w vm.swappiness=0 - 永久:
sed -ri '/^[^#]*swap/s@^@#@' /etc/fstab
- 临时:
- 唯一性校验:确保各节点 MAC 地址 与 product_uuid 唯一(虚拟机克隆后易重复,会导致节点异常)。
- 加载内核模块与开启桥接转发:
cat > /etc/modules-load.d/k8s.conf < < EOF br_netfilter bridge EOFcat > /etc/sysctl.d/k8s.conf < < EOF net.bridge.bridge-nf-call-ip6tables=1 net.bridge.bridge-nf-call-iptables=1 net.ipv4.ip_forward=1 EOF- 执行:
sysctl --system
- 主机名与 hosts(示例):
hostnamectl set-hostname mastercat > > /etc/hosts < < EOF 192.168.31.61 master 192.168.31.62 node1 192.168.31.63 node2 EOF
- Ubuntu 防火墙与 AppArmor:
systemctl disable --now ufwsystemctl disable --now apparmor
- 时间同步(建议):
timedatectl set-ntp true或安装 ntp/chrony 同步时间。
二 安装容器运行时 Containerd
- 安装与启用:
apt-get update & & apt-get install -y containerdsystemctl enable --now containerd
- 配置 cgroup 驱动为 systemd(Kubelet 默认期望 systemd,否则 kubeadm init 可能失败):
- 生成默认配置:
containerd config default | tee /etc/containerd/config.toml - 编辑
/etc/containerd/config.toml,将[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]下的SystemdCgroup设为 true - 重启:
systemctl restart containerd
- 生成默认配置:
- 说明:本方案采用 Containerd 作为 CRI,不依赖 Docker 引擎。
三 安装 kubeadm kubelet kubectl
- 添加 Kubernetes APT 仓库(示例为 v1.24,可按需替换为其他版本,如 v1.29):
apt-get update & & apt-get install -y apt-transport-https ca-certificates curl gpgmkdir -p -m 755 /etc/apt/keyringscurl -fsSL https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.24/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpgecho "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.24/deb/ /" | tee /etc/apt/sources.list.d/kubernetes.list
- 安装并锁定版本(三组件版本保持一致):
apt-get updateapt-get install -y kubelet=1.24.17-1.1 kubeadm=1.24.17-1.1 kubectl=1.24.17-1.1apt-mark hold kubelet kubeadm kubectl
- 版本策略提示:控制平面与 kubelet 允许相差一个次要版本,但 kubelet 版本不可高于 API Server。
四 初始化 Master 与加入 Worker
- 初始化 Master(请按你的 Pod 网络插件规划 CIDR,示例使用 Flannel 的 10.244.0.0/16):
kubeadm init --kubernetes-version=v1.24.17 --pod-network-cidr=10.244.0.0/16 --image-repository registry.aliyuncs.com/google_containers
- 配置 kubectl:
mkdir -p $HOME/.kubecp -i /etc/kubernetes/admin.conf $HOME/.kube/configchown $(id -u):$(id -g) $HOME/.kube/config
- 安装网络插件(Flannel):
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
- 加入 Worker(使用 kubeadm init 输出中的 join 命令;若 token 过期,可在 Master 上执行
kubeadm token create --print-join-command重新生成):- 示例:
kubeadm join < MasterIP> :6443 --token < token> --discovery-token-ca-cert-hash sha256:< hash>
- 示例:
- 验证:
kubectl get nodes应看到所有节点状态为 Ready。
五 常见问题与快速排查
- 节点 NotReady:
- 检查 containerd/kubelet 是否运行:
systemctl status containerd kubelet - 确认已安装 CNI 网络插件(如 Flannel),并核对
--pod-network-cidr与插件配置一致 - 检查节点间 网络连通性 与 时间同步
- 检查 containerd/kubelet 是否运行:
- 镜像拉取失败:
- 使用国内镜像仓库(如
--image-repository registry.aliyuncs.com/google_containers)或提前在各节点拉取所需镜像
- 使用国内镜像仓库(如
- 端口与防火墙:
- 确保 6443/10250/10251/10252 等端口未被占用且放通(云上需配置安全组)
- kubeadm join 失败(token 过期):
- 在 Master 重新生成:
kubeadm token create --print-join-command
- 在 Master 重新生成:
- 节点唯一性:
- 再次核对 MAC 地址 与 product_uuid 唯一性,避免克隆导致的冲突
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu如何安装Kubernetes集群
本文地址: https://pptw.com/jishu/771217.html
