K8s集群部署VPS服务器入门搭建指南
在容器化部署普及的当下,通过Kubernetes(K8s)集群高效部署VPS服务器成为技术新趋势。本文详细拆解从环境准备到服务暴露的全流程,助你快速搭建入门级部署环境。
环境准备:避坑指南与配置参考
某初创团队曾因节点配置不足,导致K8s集群频繁崩溃,最终调整为每节点4核8G配置后稳定性显著提升——这是实际项目中常见的教训。搭建前需重点准备:
- 物理机/虚拟机:至少3台节点(1主2从),主节点建议4核8G+50G存储,工作节点2核4G+30G存储即可满足入门需求;
- 操作系统:优先选择Ubuntu 20.04 LTS或CentOS 7,这类长期支持版本兼容性更稳定;
- 网络环境:确保节点间内网互通(ping测试延迟<1ms),关闭防火墙或开放6443(API Server)、2379(etcd)等关键端口;
- 容器运行时:必须安装Docker(建议20.10+版本),可通过"sudo apt install docker.io"快速完成,安装后执行"systemctl enable docker"设置开机自启。
K8s集群搭建:关键步骤与注意事项
完成环境检查后,正式进入集群搭建阶段。
1. 主节点初始化
使用kubeadm工具执行初始化命令:
kubeadm init --pod-network-cidr=10.244.0.0/16
若提示网络冲突(如节点已有10.244.0.0段IP),可调整为备选CIDR(如10.240.0.0/16或192.168.0.0/16)。初始化成功会输出类似"kubeadm join 192.168.1.10:6443 --token abcdef..."的节点加入命令,需用文本文件妥善保存。
2. 配置kubectl管理工具
执行以下命令关联集群配置:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
验证是否成功:运行"kubectl get nodes"应显示主节点状态为"Ready"。
3. 安装网络插件
K8s需通过网络插件实现Pod通信,推荐Flannel(轻量稳定):
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
安装后约2分钟,执行"kubectl get pods -n kube-system"检查flannel相关Pod状态,确保均为"Running"。
4. 工作节点加入
在从节点执行之前保存的join命令(示例):
kubeadm join 192.168.1.10:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef
完成后主节点执行"kubectl get nodes",应显示所有节点状态为"Ready"。
VPS服务器部署:从镜像构建到服务暴露
集群就绪后,开始部署VPS服务器核心组件。
1. 构建Docker镜像
编写Dockerfile定义VPS环境(以SSH服务为例):
FROM ubuntu:20.04
RUN apt-get update && apt-get install -y openssh-server
RUN mkdir /var/run/sshd
RUN echo 'root:YourPassword123' | chpasswd # 建议替换为强密码
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
执行构建命令(当前目录运行):
docker build -t vps-server:v1 .
*提示:生产环境建议使用Alpine基础镜像替代Ubuntu,可将镜像体积从200MB压缩至50MB以内,提升部署速度。*
2. 创建K8s Deployment
编写vps-deployment.yaml文件:
apiVersion: apps/v1
kind: Deployment
metadata:
name: vps-server
spec:
replicas: 2 # 初始部署2个副本保证高可用
selector:
matchLabels:
app: vps
template:
metadata:
labels:
app: vps
spec:
containers:
- name: vps-container
image: vps-server:v1
ports:
- containerPort: 22
执行部署命令:
kubectl apply -f vps-deployment.yaml
3. 暴露外部访问服务
创建Service实现外网访问:
apiVersion: v1
kind: Service
metadata:
name: vps-service
spec:
selector:
app: vps
ports:
- protocol: TCP
port: 22 # 服务端口
targetPort: 22 # 容器端口
type: NodePort # 自动分配节点端口
执行命令后,通过"kubectl get service"查看分配的NodePort(如30022),即可使用"节点IP:30022"通过SSH连接VPS服务器。
完成基础环境搭建后,可逐步尝试扩展副本数测试负载能力,或结合Prometheus搭建监控体系,让VPS服务器在K8s集群中运行得更稳定高效。实际应用中需定期更新Docker镜像(修复系统漏洞)、调整资源配额(避免节点过载),这些细节优化将显著提升部署方案的可靠性。