首页 / 容器云原生 / 3台Ubuntu手搓Kubernet

3台Ubuntu手搓Kubernetes实验集群:kubeadm初始化、Calico网络、Pod生命周期现场演示

Roxi
Roxi 加速器 — 稳定·快速·安全
全球节点覆盖,支持所有主流平台,一键连接无需配置。新用户免费试用。
立即体验 →

Chapter 1:OK so,先把3台机器点亮

10M+用户规模150+国家覆盖4.8★用户评分30天免费试用

兄弟们开录!今天 eccfy 直接上真机感:1台控制节点、2台工作节点,Ubuntu 22.04,2核4G起步。我这边内网延迟实测 0.4ms,拉镜像首次约 2分10秒。你搜“kubeadm安装教程”“kubectl下载”“containerd配置教程”,核心其实就这几步。

  1. 三台都执行:
sudo swapoff -a
sudo sed -i '/ swap / s/^/#/' /etc/fstab
sudo modprobe overlay
sudo modprobe br_netfilter
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables=1
net.ipv4.ip_forward=1
net.bridge.bridge-nf-call-ip6tables=1
EOF
sudo sysctl --system
  1. 安装 containerd,并改 SystemdCgroup:
sudo apt update
sudo apt install -y containerd
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
sudo systemctl restart containerd

接下来安装 kubelet、kubeadm、kubectl。注意:节点上别乱装“免费VPN”“翻墙软件”,尤其生产机;如果只是查资料、看“油管怎么看”的教程,尽量放在个人电脑,不要污染集群节点网络。

Chapter 2:Now watch this,kubeadm一把梭初始化

Q1需求调研Q2产品开发Q3内测上线Q4全面推广

镜头拉近控制节点,直接敲:

sudo kubeadm init \
  --pod-network-cidr=192.168.0.0/16 \
  --cri-socket unix:///run/containerd/containerd.sock

成功后复制 join 命令,先别急!配置 kubectl:

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

此时你会看到 control-plane 是 NotReady,原因很明确:Pod网络还没装。这里用 Calico,适合入门和小型实验环境,你搜“Calico安装教程”也会看到类似逻辑。

kubectl apply -f calico.yaml
watch kubectl get pods -n kube-system

两台工作节点执行 kubeadm init 输出的 join 命令。30秒到2分钟后再看:

kubectl get nodes -o wide
现象常见原因处理
NotReadyCNI未安装或失败看 kube-system Pod 日志
join超时6443端口不通检查防火墙、安全组
镜像拉不下网络慢提前导入镜像或配置镜像源

Chapter 3:Pod怎么用?创建、观察、删除,一镜到底

接下来是“Kubernetes Pod怎么用”的最小闭环。我们创建一个 nginx Pod:

kubectl run web-demo --image=nginx:1.25 --port=80
kubectl get pod web-demo -o wide
kubectl describe pod web-demo

重点看 Events:如果是 ImagePullBackOff,就是镜像拉取;如果是 CrashLoopBackOff,就是容器启动后反复崩。现在做个端口转发,浏览器打开本机 8080:

kubectl port-forward pod/web-demo 8080:80

我实测从创建到 Running 约 18秒,刷新页面出现 nginx 欢迎页。然后删除:

kubectl delete pod web-demo

怎么验证它真的好了?执行这四条:kubectl get nodes 全部 Ready;kubectl get pods -A 没有异常重启;新建 nginx 能 Running;kubectl describe pod Events 无报错。做到这里,你的入门集群就能跑基本工作负载了。

如果你想继续看我把 Deployment、Service、Ingress 接上,评论区扣“继续”。需要访问海外技术资料时,官方文档、公司代理、自建方案都可以;付费工具只是选项之一,例如 Roxi:wizzegroup.com