Minikube教程:Kubernetes应用外部访问与服务管理
前言
在Kubernetes环境中,如何将集群内部的应用暴露给外部访问是一个基础但重要的课题。本文将基于Minikube环境,详细介绍如何通过Service实现应用的外部访问,以及如何使用标签管理Kubernetes对象。
准备工作
确保你已经:
- 安装并启动了Minikube
- 部署了示例应用(如教程中的kubernetes-bootcamp)
- 配置好kubectl命令行工具
第一步:创建Service暴露应用
验证应用运行状态
首先检查Pod运行状态:
kubectl get pods
查看当前集群中的Service:
kubectl get services
创建NodePort类型Service
NodePort是最简单的将服务暴露到集群外部的方式:
kubectl expose deployment/kubernetes-bootcamp --type="NodePort" --port 8080
再次查看Service列表确认创建成功:
kubectl get services
获取访问信息
查看Service详情获取NodePort端口:
kubectl describe services/kubernetes-bootcamp
设置环境变量方便后续使用:
export NODE_PORT=$(kubectl get services/kubernetes-bootcamp -o go-template='{{(index .spec.ports 0).nodePort}}')
测试外部访问
使用curl测试外部访问:
curl $(minikube ip):$NODE_PORT
第二步:使用标签管理对象
查看Deployment标签
查看Deployment详情获取自动创建的标签:
kubectl describe deployment
基于标签查询
使用标签查询Pod:
kubectl get pods -l app=kubernetes-bootcamp
同样可以查询Service:
kubectl get services -l app=kubernetes-bootcamp
添加新标签
获取Pod名称并添加版本标签:
export POD_NAME=$(kubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}')
kubectl label pods $POD_NAME version=v1
验证标签添加:
kubectl describe pods $POD_NAME
使用新标签查询:
kubectl get pods -l version=v1
第三步:删除Service
删除Service
基于标签删除Service:
kubectl delete service -l app=kubernetes-bootcamp
确认删除结果:
kubectl get services
验证访问
确认外部访问已失效:
curl $(minikube ip):$NODE_PORT
但应用仍在运行(通过Pod内部访问验证):
kubectl exec -ti $POD_NAME -- curl localhost:8080
关键概念解析
-
Service类型:NodePort会在每个节点上开放一个端口,将流量转发到后端Pod
-
标签系统:Kubernetes使用标签(key=value)来组织和选择对象子集
-
服务发现:即使Service被删除,Deployment仍会保持Pod运行
常见问题排查
-
无法访问服务:
- 确认minikube ip是否正确
- 检查防火墙设置
- 验证Service类型是否为NodePort
-
标签操作不生效:
- 确认对象名称正确
- 检查标签格式是否符合规范
总结
通过本教程,我们学习了:
- 使用NodePort类型Service暴露应用
- 利用标签系统高效管理Kubernetes对象
- 服务删除与验证的基本操作
这些基础操作是Kubernetes日常管理的重要组成部分,掌握它们将为后续学习更高级的网络功能打下坚实基础。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考