云服务器K8s API使用:Pod创建到服务暴露全流程
文章分类:技术文档 /
创建时间:2025-07-10
在云服务器上部署容器化应用时,Kubernetes(K8s)的API是管理和编排容器的核心工具。从创建Pod到暴露服务,这套流程是容器化部署的基础。本文将带你一步步实操,掌握从Pod创建到服务暴露的全流程。
为什么要掌握这套流程?
想象你在云服务器上开了一家“应用商店”——Pod是货架上的商品陈列单元(可能放单个商品或一组相关商品),Service则是门口的招牌,让外部用户能找到你的“商店”。掌握Pod创建到服务暴露,就像学会了“摆货+挂招牌”的全套开店技能,是容器化部署的基本功。
第一步:创建Pod
Pod是K8s中最小的可部署单元,可理解为“容器的车厢”——一个Pod能装1个或多个紧密协作的容器(比如应用容器+日志收集容器)。要创建Pod,需先在云服务器上配置好K8s环境(主节点和工作节点正常通信、kubectl工具已安装)。
通过K8s API创建Pod,本质是向API服务器发送HTTP POST请求,请求体为Pod的YAML/JSON定义。以Nginx应用为例,YAML文件(命名为pod-demo.yaml)内容如下:
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod # Pod名称(需全局唯一)
spec:
containers:
- name: nginx-container # 容器名称
image: nginx:1.25 # 使用1.25版本的Nginx镜像
ports:
- containerPort: 80 # 容器暴露的端口
保存文件后,执行`kubectl create -f pod-demo.yaml`即可调用K8s API完成创建。若想直接用curl调用API(需提前获取API服务器地址和认证信息),命令类似:
curl -X POST -H "Content-Type: application/yaml" --data-binary @pod-demo.yaml https:///api/v1/namespaces/default/pods
第二步:验证Pod状态
创建完成后,用`kubectl get pods`查看状态。正常情况下,几秒后Pod会进入“Running”状态;若显示“Pending”,可能是镜像拉取超时(检查镜像名是否正确)或资源不足(云服务器CPU/内存不够);若显示“Error”,需通过`kubectl describe pod nginx-pod`查看事件日志排查问题(如容器启动命令错误)。
第三步:暴露服务(Service)
Pod的IP是动态分配的(Pod重启会变),外部直接访问不可靠。这时需要用Service“绑定”Pod,提供稳定的访问入口。Service通过标签(label)选择要代理的Pod,支持四种类型,这里以最常用的LoadBalancer(依赖云服务器提供的负载均衡器)为例。
创建Service的YAML文件(命名为service-demo.yaml):
apiVersion: v1
kind: Service
metadata:
name: nginx-service # Service名称
spec:
selector:
app: nginx # 匹配Pod的标签(需和Pod定义中的metadata.labels一致)
ports:
- protocol: TCP
port: 80 # Service暴露的端口(外部访问用)
targetPort: 80 # 转发到Pod的端口(需和Pod容器端口一致)
type: LoadBalancer # 使用云服务器的负载均衡器暴露服务
注意:Pod定义中需添加`metadata.labels`字段,与Service的selector匹配。例如在Pod的metadata里补充:
labels:
app: nginx
保存后执行`kubectl create -f service-demo.yaml`,等待云服务器分配外部IP(可通过`kubectl get svc nginx-service`查看EXTERNAL-IP列)。
第四步:测试服务访问
当Service的EXTERNAL-IP显示具体IP(非
掌握这套流程后,你可以在云服务器上快速部署各类容器化应用——从单Pod的小工具,到多Pod协作的微服务,K8s API都能帮你高效管理。下次部署时,不妨试试直接调用API操作,感受云服务器与K8s的协同魅力。