Ubuntu From Scratch如何安装Kubernetes
导读:在 Ubuntu 22.04/24.04 上使用 kubeadm 从零搭建单控制平面 Kubernetes 集群 一 环境准备 系统要求:建议使用 Ubuntu 22.04/24.04,至少 2 核 CPU、2GB 内存、40GB 磁盘,...
在 Ubuntu 22.04/24.04 上使用 kubeadm 从零搭建单控制平面 Kubernetes 集群
一 环境准备
- 系统要求:建议使用 Ubuntu 22.04/24.04,至少 2 核 CPU、2GB 内存、40GB 磁盘,节点间网络互通,时间同步(建议启用 NTP/chrony)。
- 基础更新与工具:
- sudo apt update & & sudo apt upgrade -y
- sudo apt install -y curl gnupg apt-transport-https ca-certificates software-properties-common
- 禁用 Swap(Kubernetes 要求):
- sudo swapoff -a
- sudo sed -i ‘/ swap / s/^(.*)$/#\1/g’ /etc/fstab
- 加载内核模块与开启桥接转发(容器网络依赖):
- sudo modprobe overlay
- sudo modprobe br_netfilter
- echo -e “overlay\nbr_netfilter” | sudo tee /etc/modules-load.d/containerd.conf
- cat < < EOF | sudo tee /etc/sysctl.d/kubernetes.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 EOF
- sudo sysctl --system
- 主机名与解析(可选,便于管理):
- sudo hostnamectl set-hostname k8s-master # 主节点
- 如需,编辑 /etc/hosts 添加各节点 IP 与主机名映射
二 安装容器运行时 containerd
- 安装 containerd(Ubuntu 22.04/24.04 仓库版本通常较新,能满足 kubeadm 要求):
- sudo apt install -y containerd
- 生成默认配置并启用 SystemdCgroup:
- sudo mkdir -p /etc/containerd
- containerd config default | sudo tee /etc/containerd/config.toml
- 编辑 /etc/containerd/config.toml,将 [plugins.“io.containerd.grpc.v1.cri”.containerd.runtimes.runc.options] 下的
- SystemdCgroup 设置为 true
- 重启并设为开机自启:
- sudo systemctl restart containerd
- sudo systemctl enable containerd
- 验证运行时:
- sudo ctr version
三 安装 kubeadm kubelet kubectl
- 添加 Kubernetes APT 仓库密钥与源(新版推荐将密钥写入 /etc/apt/keyrings/):
- curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-archive-keyring.gpg
- echo “deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main” | sudo tee /etc/apt/sources.list.d/kubernetes.list
- 安装指定版本(示例为 1.28.x,可按需调整):
- sudo apt update
- sudo apt install -y kubelet=1.28.* kubectl=1.28.* kubeadm=1.28.*
- 防止组件被意外升级(可选):
- sudo apt-mark hold kubelet kubeadm kubectl
- 启用 kubelet(暂不启动,待 kubeadm 初始化后再拉起):
- sudo systemctl enable kubelet
四 初始化控制平面并加入工作节点
- 在主节点初始化(请替换 <
MASTER_IP>
为实际地址;如使用域名或负载均衡,可设置 --control-plane-endpoint):
- 使用 Calico 网络插件时推荐 Pod CIDR 为 192.168.0.0/16:
- sudo kubeadm init
–pod-network-cidr=192.168.0.0/16
–apiserver-advertise-address=< MASTER_IP>
–control-plane-endpoint=< MASTER_IP或VIP>
- sudo kubeadm init
- 初始化成功后按提示配置 kubectl:
- mkdir -p $HOME/.kube
- sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
- sudo chown $(id -u):$(id -g) $HOME/.kube/config
- 部署网络插件(Calico 示例,版本可按需调整):
- kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.27.0/manifests/calico.yaml
- 使用 Calico 网络插件时推荐 Pod CIDR 为 192.168.0.0/16:
- 在工作节点加入集群(使用 kubeadm init 输出中的完整命令):
- sudo kubeadm join <
MASTER_IP>
:6443
–token
–discovery-token-ca-cert-hash sha256:
- sudo kubeadm join <
MASTER_IP>
:6443
- 验证集群状态:
- kubectl get nodes # 所有节点应为 Ready
- kubectl cluster-info
五 常见问题与快速排查
-
Pod 一直处于 Pending:通常未安装或未成功启动 CNI 网络插件,检查 kube-system 命名空间下 calico/flannel 的 Pod 是否 Running,并确认 kubeadm init 的 –pod-network-cidr 与所用网络插件配置一致。
-
kubeadm 初始化镜像拉取慢或失败:可预先拉取所需镜像(示例为 1.28 系列,按实际版本调整)
- kubeadm config images pull --kubernetes-version=v1.28.0
- 若国内访问受限,可使用国内镜像仓库或在 kubeadm 配置中指定镜像仓库镜像。
如需扩展为多控制平面高可用集群,可在完成单控制平面后按官方流程添加控制平面节点与负载均衡。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu From Scratch如何安装Kubernetes
本文地址: https://pptw.com/jishu/773309.html
