云服务器K8s集群部署微服务全流程指南
文章分类:更新公告 /
创建时间:2025-08-18
用云服务器搭建K8s集群部署微服务,就像用智能仓库管理系统高效调度货物——这篇指南将带你一步步完成从环境准备到服务上线的全流程操作,同时融入安全实践,帮你避开常见部署陷阱。

前期准备:搭好“仓库”和“管理员”
首先需要一台或多台云服务器作为基础“仓库”。这些服务器需选择支持K8s的操作系统,常见如CentOS、Ubuntu等Linux发行版。特别提醒:云服务器的网络配置需开放K8s组件通信所需端口(如6443、2379等),可通过云平台安全组策略精准放行,避免不必要的端口暴露风险。
接下来是安装Docker(容器化平台)。Docker像“货物包装盒”,能将微服务及其依赖环境打包,方便运输部署。以Ubuntu为例,执行命令安装:
sudo apt-get update && sudo apt-get install -y docker.io
安装后需注意权限管理:创建docker用户组并将操作用户加入,避免直接以root权限操作Docker守护进程,降低容器逃逸风险(参考《信息安全技术 网络安全等级保护基本要求》2.0版)。
然后安装K8s核心组件:kubeadm(集群初始化工具)、kubelet(节点代理)、kubectl(集群操作客户端)。可通过K8s官方源安装,例如在Ubuntu中添加仓库并安装:
sudo apt-get install -y kubeadm kubelet kubectl
需定期更新组件版本,官方通常会在新版本中修复安全漏洞,例如CVE-2023-27165等已知集群权限问题。
创建K8s集群:启动“智能管理员”
在主节点执行`kubeadm init`初始化控制平面,命令会生成类似`kubeadm join 192.168.1.100:6443 --token abcdef.1234567890abcdef --discovery-token-ca-cert-hash sha256:xxx`的加入命令,需妥善保存(包含集群认证信息,泄露可能导致节点被非法加入)。
初始化完成后配置kubectl:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
注意`~/.kube/config`文件的权限仅保留给管理员用户(如`chmod 600`),防止未授权访问集群。
最后将工作节点加入集群:在工作节点执行之前保存的`kubeadm join`命令,等待节点状态变为`Ready`(可通过`kubectl get nodes`查看)。
部署微服务:打包“货物”并安排上架
第一步是编写Dockerfile定义镜像构建规则。以Python微服务为例,推荐使用Alpine基础镜像减少攻击面:
FROM python:3.11-alpine # 最小化基础镜像
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt # 清理缓存
COPY . .
CMD ["python", "app.py"]
构建并推送镜像:执行`docker build -t my-microservice:v1 .`构建镜像,再用`docker push my-microservice:v1`推送到镜像仓库(建议使用私有仓库,支持镜像签名验证,防止篡改)。
接下来编写K8s部署文件(YAML格式),需包含副本数、资源限制等关键配置:
apiVersion: apps/v1
kind: Deployment
metadata:
name: microservice-deployment
spec:
replicas: 3 # 3副本保证高可用
selector:
matchLabels:
app: microservice
template:
metadata:
labels:
app: microservice
spec:
containers:
- name: microservice
image: my-microservice:v1
resources:
requests: # 资源请求(保证基础运行)
cpu: "100m"
memory: "128Mi"
limits: # 资源限制(防止资源耗尽)
cpu: "500m"
memory: "512Mi"
最后执行`kubectl apply -f deployment.yaml`完成部署。
服务暴露与访问:打开“仓库大门”
通过创建Service暴露服务,常见类型有:
- ClusterIP(集群内部访问,默认类型)
- NodePort(通过节点端口外部访问,端口范围30000-32767)
- LoadBalancer(结合云平台负载均衡器,自动分配公网IP)
以NodePort为例,编写Service文件:
apiVersion: v1
kind: Service
metadata:
name: microservice-service
spec:
type: NodePort
selector:
app: microservice
ports:
- protocol: TCP
port: 80 # 服务内部端口
targetPort: 5000 # 容器暴露端口
nodePort: 30001 # 节点对外端口
执行`kubectl apply -f service.yaml`后,通过`云服务器公网IP:30001`即可访问服务。测试时可用`curl http://公网IP:30001`验证响应是否正常。
完成这些步骤,你不仅能高效完成微服务部署,还能通过安全配置(如权限管理、资源限制、端口控制)确保集群稳定运行。实际操作中遇到日志报错或节点异常,可通过`kubectl describe pod`或`kubectl logs`查看详细信息,也可参考K8s官方文档获取解决方案。
上一篇: CentOS 7云服务器Yum源加载异常排查全流程
下一篇: 外贸独立站:香港VPS软件部署避坑指南