Kubernetes(K8s)入门部署:用两台香港VPS搭建生产级容器编排集群
Kubernetes(K8s)是目前最主流的容器编排平台,可以自动化管理容器的部署、扩缩容、自愈和负载均衡。本文基于两台香港VPS,带你完成一个最小可用的K8s生产集群的搭建。
一、K8s核心架构简介
- Master节点(控制平面):运行API Server、Scheduler、Controller Manager、etcd,负责整个集群的管理和调度
- Worker节点:运行实际的业务容器(Pod),受Master调度和管理
- Pod:K8s最小调度单元,一个Pod包含一个或多个容器
- Service:为Pod提供稳定的访问入口,屏蔽Pod IP变化
- Ingress:HTTP层的负载均衡器,将外部流量路由到不同的Service
二、服务器配置要求
| 角色 | 最低配置 | 推荐配置 | 数量 |
|---|---|---|---|
| Master节点 | 2核2G | 4核4G | 1台 |
| Worker节点 | 2核2G | 4核8G | 1台起 |
两台服务器需要在同一内网(或能通过内网IP互通),IDC.Net支持同账号下多台服务器通过内网通信,避免跨公网传输集群内部流量。
三、所有节点通用准备
# 在所有节点(Master和Worker)执行以下操作
# 1. 关闭Swap(K8s要求)
swapoff -a
sed -i '/ swap / s/^/#/' /etc/fstab
# 2. 设置主机名(每台不同)
# Master节点:
hostnamectl set-hostname k8s-master
# Worker节点:
hostnamectl set-hostname k8s-worker1
# 3. 配置hosts(使用内网IP)
cat >> /etc/hosts << EOF 192.168.1.10 k8s-master 192.168.1.20 k8s-worker1 EOF # 4. 加载必要内核模块 cat > /etc/modules-load.d/k8s.conf << EOF overlay br_netfilter EOF modprobe overlay && modprobe br_netfilter # 5. 配置内核参数 cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
sysctl --system四、安装容器运行时(containerd)
# 在所有节点安装containerd
apt update
apt install -y containerd
# 生成默认配置
mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml
# 修改Cgroup驱动为systemd
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
# 重启containerd
systemctl restart containerd
systemctl enable containerd五、安装kubeadm、kubelet、kubectl
# 在所有节点执行
apt install -y apt-transport-https ca-certificates curl gpg
# 添加K8s软件源
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | \
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.29/deb/ /' \
> /etc/apt/sources.list.d/kubernetes.list
apt update
apt install -y kubelet kubeadm kubectl
apt-mark hold kubelet kubeadm kubectl # 锁定版本防止自动升级
systemctl enable kubelet六、初始化Master节点
# 仅在Master节点执行
kubeadm init \
--apiserver-advertise-address=Master节点内网IP \
--pod-network-cidr=10.244.0.0/16 \
--kubernetes-version=v1.29.0
# 初始化成功后,配置kubectl
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
# 验证集群状态
kubectl get nodes七、安装网络插件(Flannel)
# 在Master节点安装Flannel网络插件
kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
# 等待Flannel Pod就绪
kubectl get pods -n kube-flannel -w
# 确认Master节点状态变为Ready
kubectl get nodes八、Worker节点加入集群
# 复制kubeadm init输出的join命令,在Worker节点执行
# 格式类似:
kubeadm join Master内网IP:6443 \
--token xxxxx.xxxxxxxxxxxxxxxx \
--discovery-token-ca-cert-hash sha256:xxxxxxxxxx
# 在Master节点验证Worker已加入
kubectl get nodes
# 输出:
# NAME STATUS ROLES AGE VERSION
# k8s-master Ready control-plane 10m v1.29.0
# k8s-worker1 Ready 2m v1.29.0九、部署第一个应用
<code"># 创建Nginx部署 kubectl create deployment nginx --image=nginx:alpine --replicas=2 # 暴露为NodePort服务(外部可访问) kubectl expose deployment nginx --port=80 --type=NodePort # 查看分配的端口 kubectl get svc nginx # 输出中NodePort列显示的端口(如 80:31234/TCP) # 通过 http://Worker节点公网IP:31234 访问Nginx
十、安装Ingress控制器
<code"># 安装Nginx Ingress Controller
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.9.4/deploy/static/provider/baremetal/deploy.yaml
# 创建Ingress规则(将域名路由到服务)
cat > ingress.yaml << EOF
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
ingressClassName: nginx
rules:
- host: app.yourdomain.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nginx
port:
number: 80
EOF
kubectl apply -f ingress.yaml十一、常用管理命令速查
<code"># 查看所有Pod状态 kubectl get pods -A # 查看Pod日志 kubectl logs -f Pod名称 # 进入Pod内部 kubectl exec -it Pod名称 -- /bin/sh # 扩缩容 kubectl scale deployment nginx --replicas=5 # 滚动更新 kubectl set image deployment/nginx nginx=nginx:1.25 # 查看集群资源使用 kubectl top nodes kubectl top pods
十二、总结
两台香港VPS搭建的最小K8s集群可以支撑中小规模的微服务应用,完整部署过程约1~2小时。对于更高可用性需求,可以扩展为3个Master节点的HA集群。IDC.Net的香港VPS支持同账号多台服务器内网互通,是搭建K8s集群的理想基础设施,4核8G配置的Worker节点可以运行10~20个中小型Pod。
版权声明:
作者:后浪云
链接:https://idc.net/help/442748/
文章版权归作者所有,未经允许请勿转载。
THE END
