Minikube教程:Kubernetes应用外部访问与服务管理

Minikube教程:Kubernetes应用外部访问与服务管理

minikube Minikube是一个为开发Kubernetes集群设计的轻量级工具,可以在本地运行单节点的Kubernetes集群。 - 功能:Kubernetes集群开发环境;本地集群运行;快速部署。 - 特点:轻量级;易于使用;快速启动;支持多种Kubernetes版本。 minikube 项目地址: https://gitcode.com/gh_mirrors/mi/minikube

前言

在Kubernetes环境中,如何将集群内部的应用暴露给外部访问是一个基础但重要的课题。本文将基于Minikube环境,详细介绍如何通过Service实现应用的外部访问,以及如何使用标签管理Kubernetes对象。

准备工作

确保你已经:

  1. 安装并启动了Minikube
  2. 部署了示例应用(如教程中的kubernetes-bootcamp)
  3. 配置好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

关键概念解析

  1. Service类型:NodePort会在每个节点上开放一个端口,将流量转发到后端Pod

  2. 标签系统:Kubernetes使用标签(key=value)来组织和选择对象子集

  3. 服务发现:即使Service被删除,Deployment仍会保持Pod运行

常见问题排查

  1. 无法访问服务

    • 确认minikube ip是否正确
    • 检查防火墙设置
    • 验证Service类型是否为NodePort
  2. 标签操作不生效

    • 确认对象名称正确
    • 检查标签格式是否符合规范

总结

通过本教程,我们学习了:

  • 使用NodePort类型Service暴露应用
  • 利用标签系统高效管理Kubernetes对象
  • 服务删除与验证的基本操作

这些基础操作是Kubernetes日常管理的重要组成部分,掌握它们将为后续学习更高级的网络功能打下坚实基础。

minikube Minikube是一个为开发Kubernetes集群设计的轻量级工具,可以在本地运行单节点的Kubernetes集群。 - 功能:Kubernetes集群开发环境;本地集群运行;快速部署。 - 特点:轻量级;易于使用;快速启动;支持多种Kubernetes版本。 minikube 项目地址: https://gitcode.com/gh_mirrors/mi/minikube

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宣利权Counsellor

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值