国外VPS+K8s集群部署微服务全流程指南
文章分类:更新公告 /
创建时间:2025-10-14
在数字化转型加速的今天,微服务架构凭借灵活拆分、独立部署的特性,成为企业构建高可用应用的主流选择。而Kubernetes(简称K8s)作为容器编排领域的事实标准,能高效管理容器化应用的部署与扩缩容。若想以较低成本搭建弹性架构,在国外VPS上部署K8s集群是值得尝试的方案。本文将完整呈现从环境准备到微服务上线的全流程操作。
第一步:基础环境准备
首先需要准备1台主节点(Master)和至少1台工作节点(Worker)的国外VPS。硬件配置建议主节点2核4G、工作节点4核8G起步,存储选择40GB以上的SSD,确保有足够资源支撑K8s组件和容器运行。操作系统推荐Ubuntu 20.04或CentOS 7,这两个发行版对K8s兼容性较好。
接下来安装Docker——K8s依赖的容器运行时。以Ubuntu系统为例,执行以下命令:
sudo apt-get update
sudo apt-get install -y docker.io
安装完成后启动Docker并设置开机自启:
sudo systemctl start docker
sudo systemctl enable docker
第二步:安装K8s核心组件
K8s集群由kubeadm(集群初始化工具)、kubelet(节点代理)、kubectl(命令行客户端)三大组件构成。所有节点需先添加K8s官方软件源,再安装组件:
sudo apt-get update && sudo apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | 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 # 锁定版本防止自动升级
主节点初始化与配置
在主节点执行初始化命令,这里指定Pod网络段为10.244.0.0/16(Flannel插件需要):
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
初始化成功后会输出类似"kubeadm join"的命令(后续用于工作节点加入),同时需配置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命令(示例):
sudo kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef
完成后在主节点执行`kubectl get nodes`,应显示所有节点状态为"Ready"。
第三步:部署网络插件
K8s本身不提供Pod间通信能力,需安装网络插件。这里选择配置简单的Flannel,在主节点执行:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
等待几分钟后,通过`kubectl get pods -n kube-system`检查flannel相关Pod是否全部运行。
第四步:部署微服务应用
假设已将微服务打包为Docker镜像并推送至Docker Hub(如username/microservice:v1),接下来创建Deployment管理应用实例:
apiVersion: apps/v1
kind: Deployment
metadata:
name: microservice-deploy
spec:
replicas: 3 # 部署3个副本
selector:
matchLabels:
app: microservice
template:
metadata:
labels:
app: microservice
spec:
containers:
- name: app-container
image: username/microservice:v1
ports:
- containerPort: 8080 # 容器暴露端口
保存为deployment.yaml后执行`kubectl apply -f deployment.yaml`创建Deployment。
为了让外部访问微服务,需创建Service暴露应用。这里使用LoadBalancer类型(部分云厂商支持自动分配公网IP):
apiVersion: v1
kind: Service
metadata:
name: microservice-svc
spec:
selector:
app: microservice
ports:
- protocol: TCP
port: 80 # 服务暴露端口
targetPort: 8080 # 转发至容器端口
type: LoadBalancer
保存为service.yaml后执行`kubectl apply -f service.yaml`。
第五步:验证与访问
通过以下命令检查部署状态:
kubectl get deployments # 查看Deployment副本数是否为3
kubectl get services # 查看Service外部IP(EXTERNAL-IP)
若Service的EXTERNAL-IP显示具体地址,即可通过`http://EXTERNAL-IP`访问微服务。若显示`
通过以上步骤,即可在国外VPS上完成K8s集群搭建与微服务部署。实际应用中可根据业务需求调整副本数、添加存储卷或配置Ingress实现更复杂的路由规则,进一步提升架构的弹性与可靠性。