当前位置: 首页 > news >正文

Kubernetes第五天学习指南:集群交互与 Namespace

欢迎来到 Kubernetes 学习的关键一步!今天,我们将亲手在集群上运行第一个应用(Nginx),并学会使用kubectl这个强大的命令行工具与集群进行交互。同时,我们会深入理解Namespace(命名空间)这个概念,它是你在 K8s 中进行资源隔离和组织的基石。

一、与集群交互的核心命令:kubectl

kubectl是 K8s 的“瑞士军刀”,所有对集群的操作几乎都通过它来完成。以下是你今天必须掌握的五个核心命令。

命令作用常用选项/示例
kubectl get列出资源kubectl get pods
kubectl get nodes
kubectl get all
kubectl describe显示资源的详细信息kubectl describe pod <pod-name>
kubectl logs查看 Pod 中容器的日志kubectl logs <pod-name>
kubectl logs -f <pod-name>(实时跟踪)
kubectl exec在 Pod 的容器内执行命令kubectl exec -it <pod-name> -- /bin/bash
kubectl delete删除资源kubectl delete pod <pod-name>

💡 提示:你可以在任何命令后加上-o wide获取更多信息(如 Pod 的 IP 和所在节点),或加上-o yaml查看资源的完整 YAML 配置。


二、实战:在集群上运行第一个 Nginx Pod

Pod 是 K8s 中最小的部署单元,你可以把它想象成一个或多个容器的“胶囊”。现在,我们通过命令行直接创建一个运行 Nginx 的 Pod。

1. 使用run命令创建 Pod

# 创建一个名为 my-nginx 的 Pod,使用 nginx:alpine 镜像 kubectl run my-nginx --image=nginx:alpine --port=80
  • 输出pod/my-nginx created

2. 查看 Pod 状态

刚创建的 Pod 状态为ContainerCreating,几秒后会变为Running

kubectl get pods

输出示例

NAME READY STATUS RESTARTS AGE my-nginx 1/1 Running 0 45s
  • READY 1/1:表示 Pod 内 1 个容器已准备就绪。

3. 使用describe查看 Pod 的“体检报告”

当 Pod 出现问题时,describe是最佳诊断工具。

kubectl describe pod my-nginx

这条命令会输出大量信息,包括:

  • 基本信息:Pod 名称、Namespace、节点 IP。

  • 事件 (Events):这是最关键的诊断区,记录了 Pod 从调度、拉取镜像到启动的全过程,以及任何错误(如镜像拉取失败)。

4. 使用exec进入 Pod 内部

你可以像操作普通 Linux 容器一样,进入 Pod 内部进行调试。

# 进入 Pod 的 /bin/sh(Alpine 镜像默认 shell) kubectl exec -it my-nginx -- /bin/sh

进入后,可以执行ls /usr/share/nginx/html查看网页文件,或curl localhost测试服务。输入exit退出。

5. 使用logs查看 Nginx 访问日志

即使不进入 Pod,你也可以查看其日志。

# 查看日志 kubectl logs my-nginx # 实时跟踪日志(类似 tail -f) kubectl logs -f my-nginx

打开一个新终端,再通过“端口转发”访问服务,就能看到日志输出。

6. 端口转发:本地访问 Pod 服务

Pod 默认有集群内部 IP,外部无法直接访问。我们可以使用端口转发临时打通一个通道。

# 将本地的 8080 端口转发到 Pod 的 80 端口 kubectl port-forward pod/my-nginx 8080:80

现在,打开浏览器访问http://localhost:8080,就能看到 Nginx 的欢迎页了!

7. 清理资源

# 删除 Pod kubectl delete pod my-nginx

三、核心概念:Namespace (命名空间)

当你的团队或应用变得复杂时,Namespace就变得至关重要。它提供了一种逻辑上(非物理上)的隔离机制,就像在同一个操作系统中划分出不同的文件夹。

为什么需要 Namespace?

  1. 资源隔离:将不同环境(如devtestprod)或不同团队的项目放在不同的命名空间中,避免资源命名冲突和相互干扰。

  2. 权限控制:结合 RBAC,可以精确控制用户对特定命名空间的访问权限。

  3. 资源配额:可以为不同的命名空间设置 CPU、内存等资源配额,防止某个应用耗尽整个集群的资源。

K8s 默认的 Namespace

集群创建后,默认会有几个命名空间:

  • default:如果你不指定,所有资源默认都创建在这里。

  • kube-system:存放 Kubernetes 系统组件(如 CoreDNS、kube-proxy),建议不要在这里操作。

  • kube-public:一个特殊的命名空间,其资源可以被所有人(包括未认证用户)读取。

  • kube-node-lease:用于存储节点心跳信息。

实战:使用 Namespace 隔离资源

1. 创建 Namespace
# 方式一:直接命令创建 kubectl create namespace dev # 方式二:通过 YAML 创建(更规范,可保存配置) cat <<EOF | kubectl apply -f - apiVersion: v1 kind: Namespace metadata: name: test EOF

验证:kubectl get namespaces(或kubectl get ns

2. 在指定 Namespace 中创建资源
# 方法一:使用 --namespace 参数(缩写 -n) kubectl run nginx-dev --image=nginx --namespace=dev # 方法二:查看 Pod 时,加上 -n 参数 kubectl get pods -n dev

💡 设置默认 Namespace:为了避免每次输入-n,可以通过工具kubens(kubectx 套件的一部分) 或直接修改 kubeconfig 来切换默认上下文。

3. 查看不同命名空间的资源
# 查看所有命名空间的 Pod kubectl get pods --all-namespaces # 或者 kubectl get pods -A
4. 删除 Namespace
# 删除命名空间(这会同时删除该命名空间内的所有资源) kubectl delete namespace dev

⚠️ 警告:删除操作不可逆,请务必谨慎!

四、综合实战:多命名空间部署演练

下面,我们通过一个完整的场景来巩固所学知识。

场景:在defaulttest命名空间中分别运行 Nginx

1. 创建test命名空间
kubectl create namespace test
2. 创建两个 Nginx Pod
# 在 default 命名空间创建 kubectl run nginx-default --image=nginx:alpine # 在 test 命名空间创建 kubectl run nginx-test --image=nginx:alpine -n test
3. 查看和管理 Pod
# 查看 default 命名空间的 Pod kubectl get pods # 查看 test 命名空间的 Pod kubectl get pods -n test # 查看所有命名空间的 Pod kubectl get pods -A | grep nginx
4. 体验“逻辑隔离”
# 尝试在 default 空间中查看 test 的 Pod,会提示“no resources found” kubectl get pods | grep nginx-test # 不会输出内容 # 正确的查看方式 kubectl get pods -n test | grep nginx-test

这就体现了 Namespace 的资源隔离特性:在不同 Namespace 中,即使资源名称相同(如两个 Pod 都叫nginx),它们也是相互独立、互不干扰的。

5. 清理环境
kubectl delete pod nginx-default kubectl delete pod nginx-test -n test # 或直接删除整个命名空间(会删除其中的所有资源) kubectl delete namespace test

五、总结:今日核心收获

掌握核心命令get,describe,logs,exec,delete是日常运维的“五虎将”。
理解资源模型:Pod 是最小部署单元,今天是你与它第一次亲密接触。
Namespace 管理能力:学会了创建、切换、查看和删除 Namespace,理解了它对于资源组织和隔离的价值。

📋 今日学习检查清单

  • 我能在集群上成功运行一个 Nginx Pod。

  • 我能熟练使用kubectl get pods,describe,logs,exec命令。

  • 我理解了 Namespace 的作用,并能创建和切换 Namespace。

  • 我能够区分不同 Namespace 下的同名资源。

http://www.gsyq.cn/news/1577025.html

相关文章:

  • Dify接入GLM-4.7的协议适配实践
  • AI时代架构师的重定义:从画图者到系统导演
  • 揭秘 3C 认证背后强制消防指标,采购对标不踩坑
  • (2026最新)唐山防水补漏正规公司甄选推荐:漏水检测维修-暗管漏水精准定位检测漏水点-卫生间/厨房/屋顶/阳台/渗漏水维修-本地人必选的正规测漏公司 - 即刻修防水
  • 基于NLP的本地新闻与移民社区需求智能匹配系统设计与实现
  • 029、自定义命令开发:创建、参数化、共享与团队复用的最佳实践
  • 极智词元企业级RAG系统优化实践:从60分到95分的进阶之路
  • 2026年钟楼区渗水维修企业哪家好,窗户漏水维修/阳台漏水维修/墙面渗水维修/屋顶漏水维修,渗水维修企业哪家好 - 品牌推荐师
  • 软考高项论文总卡 45 分?学长拆解阅卷 5 大得分点,照着写不踩坑
  • 同态加密神经网络推理优化:从算法轻量化到GPU加速的高并发实践
  • 2026年腾讯云 618 活动介绍及 Hermes Agent/OpenClaw配置Token Plan搭建新手友好
  • ArkUI 轮播图,选项卡,视频,图片组件全解 1
  • 2026年当下,山东屋顶通风气楼生产商的选择逻辑与深度解析 - 品牌鉴赏官2026
  • Object.is() 与比较操作符 == 和 === 的区别是什么?
  • MambaKick:基于HAR嵌入与状态空间模型的点球射门方向早期预测
  • NVIDIA NIM部署指南:OpenAI兼容API调用与本地大模型集成
  • Node.js终极Modbus通信解决方案:node-modbus-serial深度解析
  • AI编程工具选型指南:匹配开发心智模型的实战决策框架
  • DeepSeek V4企业级接入:语义协议、三级计费与三层适配框架
  • 工贸企业全链路数字化横评:四类CRM解决方案五大核心维度对比
  • Skill制作的本质:语音交互的认知带宽与神经习惯设计
  • (2026最新)南通防水补漏正规公司甄选推荐:漏水检测维修-暗管漏水精准定位检测漏水点-卫生间/厨房/屋顶/阳台/渗漏水维修-本地人必选的正规测漏公司 - 即刻修防水
  • 每日 Agent 核心知识Day1:基础定义与核心特征(入门认知)
  • (2026最新)南昌防水补漏正规公司甄选推荐:漏水检测维修-暗管漏水精准定位检测漏水点-卫生间/厨房/屋顶/阳台/渗漏水维修-本地人必选的正规测漏公司 - 即刻修防水
  • 2026年新发布热门烧结板批发厂家盘点:哪家靠谱值得选? - 品牌鉴赏官2026
  • 减性混合模型(SMM)的近似推断:采样法与变分推断实践指南
  • 无需训练跨模态检索:mEOL实现SVG与图像智能搜索
  • 450+终端配色方案:从视觉疲劳到高效愉悦的蜕变之旅
  • Prompt组装架构:从提示词到可维护AI工程模块
  • 搭建完整的Agent系统:Function Calling与工具调用实战