如何在Ubuntu上搭建Kubernetes环境
导读:在 Ubuntu 上使用 kubeadm 搭建 Kubernetes 集群 一 环境准备与前置检查 系统要求:建议使用 Ubuntu 20.04/22.04/24.04,每台机器至少 2GB 内存、2 个 CPU 核心、20GB+ 磁盘,...
在 Ubuntu 上使用 kubeadm 搭建 Kubernetes 集群
一 环境准备与前置检查
- 系统要求:建议使用 Ubuntu 20.04/22.04/24.04,每台机器至少 2GB 内存、2 个 CPU 核心、20GB+ 磁盘,并确保节点间 IP 互通、主机名唯一。
- 基础配置:
- 关闭交换分区:
sudo swapoff -a并注释 /etc/fstab 中的 swap 行,避免 kubelet 异常。 - 设置主机名与 hosts:
sudo hostnamectl set-hostname master(主节点),worker1/worker2(工作节点)- 编辑 /etc/hosts:
192.168.1.100 master192.168.1.101 worker1192.168.1.102 worker2
- 防火墙与内核模块:放行 6443/10250/10251/10252 等端口或临时关闭防火墙;按需加载
br_netfilter、overlay模块并开启转发:sudo modprobe br_netfilterecho 1 | sudo tee /proc/sys/net/bridge/bridge-nf-call-iptablesecho 1 | sudo tee /proc/sys/net/ipv4/ip_forward
- 关闭交换分区:
- 容器运行时:安装并启动 Docker,并配置 cgroup driver=systemd(与 kubelet 一致):
sudo apt-get update & & sudo apt-get install -y docker.io- 配置 /etc/docker/daemon.json:
{ "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" } , "storage-driver": "overlay2" }
sudo systemctl enable --now docker
以上准备可显著提升初始化成功率与后续稳定性。
二 安装 kubeadm kubelet kubectl
- 添加 Kubernetes APT 源并安装组件(版本可按需锁定,如 1.30.x):
sudo apt-get update & & sudo apt-get install -y apt-transport-https ca-certificates curlcurl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor | sudo tee /usr/share/keyrings/kubernetes-archive-keyring.gpg > /dev/nullecho "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.listsudo apt-get update & & sudo apt-get install -y kubelet kubeadm kubectlsudo apt-mark hold kubelet kubeadm kubectl(防止被系统升级干扰)
- 启动 kubelet:
sudo systemctl enable --now kubelet
上述步骤为官方推荐做法,适用于 Ubuntu 20.04/22.04/24.04。
三 初始化控制平面与配置 kubectl
- 在主节点初始化(Pod 网段可按网络插件要求调整,常见为 192.168.0.0/16 或 10.244.0.0/16):
sudo kubeadm init --pod-network-cidr=192.168.0.0/16
- 初始化完成后按提示配置 kubectl(普通用户):
mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config
- 安装网络插件(二选一,保持与上面 Pod CIDR 一致):
- Calico:
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml - Flannel:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
- Calico:
- 检查节点状态:
kubectl get nodes(首次可能需要等待网络插件就绪)
以上流程为 kubeadm 的标准初始化与网络接入方式。
四 加入工作节点与验证
- 在工作节点执行主节点初始化输出中的 kubeadm join 命令(包含 token 与 discovery-token-ca-cert-hash),示例:
sudo kubeadm join 192.168.1.100:6443 --token < token> --discovery-token-ca-cert-hash sha256:< hash>
- 如 token 过期,可在主节点重新生成:
sudo kubeadm token create --print-join-command
- 在主节点验证:
kubectl get nodes,所有节点状态应为 Ready。 - 简单功能验证:
kubectl create deployment nginx --image=nginxkubectl expose deployment nginx --port=80 --type=NodePortkubectl get svc nginx(获取 NodePort 后在浏览器访问http://< 任意节点IP> :< NodePort>)
以上为加入节点与基础连通性验证的通用步骤。
五 常见问题与排查要点
- 节点 NotReady:优先检查网络插件是否成功部署、Pod CIDR 是否与初始化参数一致、以及节点间 6443/10250 等端口连通性。
- kubelet 启动失败:确认已关闭 swap、cgroup driver 为 systemd、以及 /var/lib/kubelet 目录权限正确。
- 镜像拉取慢或失败:可配置国内镜像源或使用 imagePullPolicy: IfNotPresent;必要时提前
docker pull所需镜像。 - 加入节点失败:确认 token 未过期、时间同步(建议 NTP)、以及控制平面 6443 端口对节点开放。
- 重置与清理:如需重建,可在节点执行
sudo kubeadm reset -f,并清理 /etc/cni/net.d、/var/lib/kubelet 等残留目录后再试。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何在Ubuntu上搭建Kubernetes环境
本文地址: https://pptw.com/jishu/748907.html
