天亿互联:从零搭建Kubernetes集群的5个关键步骤与代码实战

作者:天亿互联云计算技术部
随着容器化应用的普及,Kubernetes已成为云原生架构的事实标准。本文将手把手教你使用kubeadm工具,在Ubuntu 20.04环境下搭建一个高可用的Kubernetes 1.28集群。

前置环境准备

你需要至少3台服务器(1台Master,2台Worker),每台建议2核4G以上,操作系统为Ubuntu 20.04。所有节点需配置静态IP并关闭swap。

# 所有节点执行:关闭swap
sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/' /etc/fstab

# 启用内核模块
cat <

步骤一:安装容器运行时(Containerd)

Kubernetes依赖容器运行时,我们选择Containerd,它比Docker更轻量且符合CRI标准。

# 安装containerd
sudo apt-get update
sudo apt-get install -y containerd

# 生成默认配置并启用systemd cgroup驱动
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml

sudo systemctl restart containerd
sudo systemctl enable containerd

步骤二:安装kubeadm、kubelet、kubectl

# 添加Kubernetes官方APT源
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo 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.28/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list

sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

步骤三:初始化Master节点

仅在Master节点执行,注意替换--apiserver-advertise-address为你的Master内网IP,--pod-network-cidr根据网络插件调整(本例使用Calico)。

sudo kubeadm init \
  --apiserver-advertise-address=192.168.1.10 \
  --pod-network-cidr=10.244.0.0/16 \
  --kubernetes-version=v1.28.0

# 配置kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

# 记录join命令(重要!)
kubeadm token create --print-join-command

步骤四:安装网络插件(Calico)

kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.26/manifests/calico.yaml

# 验证所有Pod运行
watch kubectl get pods -n kube-system

步骤五:Worker节点加入集群

在每台Worker节点上执行Master生成的join命令:

sudo kubeadm join 192.168.1.10:6443 --token  \
  --discovery-token-ca-cert-hash sha256:

验证集群状态

kubectl get nodes
# 输出示例:
# NAME        STATUS   ROLES           AGE   VERSION
# master      Ready    control-plane   5m    v1.28.0
# worker1     Ready              2m    v1.28.0
# worker2     Ready              1m    v1.28.0

kubectl run nginx --image=nginx:latest --replicas=3
kubectl expose deployment nginx --port=80 --type=NodePort
curl http://<任意节点IP>:

生产环境优化建议

  • 开启Pod安全策略(PSP)或OPA Gatekeeper
  • 部署Metrics Server实现HPA自动扩缩容
  • 使用Helm管理应用包
  • 配置etcd定期备份
  • 集成天亿互联CDN加速镜像拉取

通过以上步骤,你已经拥有了一个可工作的Kubernetes集群。更多云原生实战内容,请关注天亿互联技术博客。