天亿互联:从零搭建Kubernetes集群的5个关键步骤与代码实战
天亿互联:从零搭建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集群。更多云原生实战内容,请关注天亿互联技术博客。