news 2026/6/23 2:56:04

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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 下的同名资源。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/23 2:52:31

2026年,这家好用的peek模具制造企业究竟有何独特魅力?

在制造业蓬勃发展的今天&#xff0c;PEEK&#xff08;聚醚醚酮&#xff09;材料凭借其卓越的性能&#xff0c;在航空航天、电子、医疗等众多领域得到了广泛应用。而联璟新材料作为一家专注于PEEK模具制造的企业&#xff0c;在2026年展现出了独特的魅力。下面&#xff0c;我们将…

作者头像 李华
网站建设 2026/6/23 2:51:48

Agent Loop本质:四步状态驱动的可执行决策流水线

1. 别再被“智能体”三个字唬住&#xff1a;Agent 的本质是一套可执行的决策流水线 很多人一听到“Agent”&#xff0c;脑子里立刻浮现出科幻电影里那个能自主思考、自由行动的AI助手。结果一上手写代码&#xff0c;发现连让模型调用一个天气API都卡在“说得出&#xff0c;做不…

作者头像 李华
网站建设 2026/6/23 2:36:16

OpenClaw本地部署指南:Node.js环境与技能编排实战

1. OpenClaw不是“另一个LLM前端”&#xff0c;它是本地AI工作流的物理锚点OpenClaw这个词最近在技术圈里冒得有点猛&#xff0c;但很多人点开GitHub仓库第一眼就懵了&#xff1a;没文档、没Quick Start、连个像样的README都像是草稿。更尴尬的是&#xff0c;搜“OpenClaw安装教…

作者头像 李华
网站建设 2026/6/23 2:21:03

DeepV框架:模型无关的RAG技术在Verilog代码生成中的应用

1. DeepV框架架构解析1.1 模型无关的RAG设计理念DeepV框架最核心的创新在于其模型无关的架构设计。与传统的微调方法不同&#xff0c;DeepV采用检索增强生成&#xff08;RAG&#xff09;技术&#xff0c;将大型语言模型&#xff08;LLM&#xff09;与高质量Verilog知识库&#…

作者头像 李华
网站建设 2026/6/23 2:19:28

MPC模型预测控制在机器人液体搬运紧急制动中的应用与防溢出控制

1. 项目概述&#xff1a;当机器人遇上“一杯水”的难题在工业自动化领域&#xff0c;机器人搬运固体物料早已是家常便饭&#xff0c;从汽车零部件到电子产品组装&#xff0c;精度和速度都达到了令人惊叹的水平。然而&#xff0c;一旦搬运的对象从刚性的“铁疙瘩”变成了晃动的“…

作者头像 李华
网站建设 2026/6/23 2:18:59

构建MCP生态下AI应用安全防线:CASCADE三层防御架构解析与实践

1. 项目概述&#xff1a;为什么我们需要CASCADE这样的防御架构&#xff1f;最近在折腾大语言模型应用安全时&#xff0c;发现一个挺头疼的问题&#xff1a;模型本身能力越强&#xff0c;给它开的“后门”就越多。这里的“后门”不是指漏洞&#xff0c;而是指我们为了让AI能干更…

作者头像 李华