Kubernetes(k8s):Namespace详解

news2025/1/10 23:02:56

Kubernetes(k8s):Namespace详解

  • 一、Namespace简介
    • 1.1 什么是Namespace
    • 1.2 Namespace的作用
    • 1.3 命名空间的分类
  • 二、创建和管理Namespace
    • 2.1 创建Namespace
    • 2.2 管理Namespace
  • 三、Namespace的实战应用
    • 3.1 部署多个项目
    • 3.2 环境隔离
    • 3.3 资源配额控制
    • 3.4 访问控制
  • 四、Namespace的最佳实践
    • 4.1 命名规范
    • 4.2 资源限制
    • 4.3 监控和日志
    • 4.4 清理和维护


💖The Begin💖点点关注,收藏不迷路💖

在这里插入图片描述

在Kubernetes(K8s)中,Namespace是一种用于在集群中创建多个虚拟集群的方式。它将集群资源进行逻辑分组,使得不同的团队或项目可以独立地使用资源,避免资源冲突和混乱。本篇博客将详细介绍Kubernetes的Namespace概念、用法和实战应用场景。

一、Namespace简介

1.1 什么是Namespace

Namespace是Kubernetes中的一种资源对象,用于将集群中的资源进行逻辑分组和隔离。它可以看作是一个虚拟的集群,拥有自己的资源配额、网络和存储等。不同的Namespace之间是完全隔离的,各自拥有自己的资源和配置,(默认不隔离网络)。

1.2 Namespace的作用

Namespace的主要作用是将集群资源进行分组,使得不同团队或项目可以在同一个Kubernetes集群上独立使用资源,避免资源冲突和混乱。它提供了一种逻辑隔离的方式,有助于管理和监控不同项目的资源使用情况。

1.3 命名空间的分类

Kubernetes中的Namespace可以分为三种类型:

1、默认命名空间(default):

集群中的默认命名空间,用于存放没有指定Namespace的资源对象。

2、系统命名空间:

用于存放Kubernetes自带的系统组件,如kube-system、kube-public等。

3、用户自定义命名空间:

用户可以创建自己的Namespace,用于部署和管理自己的应用程序。


##获取当前Kubernetes集群中的所有命名空间的信息

[root@k8s-01 ~]# kubectl get ns
NAME                   STATUS   AGE
default                Active   21h
kube-node-lease        Active   21h
kube-public            Active   21h
kube-system            Active   21h
kubernetes-dashboard   Active   20h
[root@k8s-01 ~]#
输出信息显示了当前集群中存在的命名空间。每个命名空间都有一个状态和一个年龄。

以下是输出信息的解释:
default:默认的命名空间,用于存放没有指定命名空间的资源。
kube-node-lease:用于存放节点租约信息的命名空间。
kube-public:用于存放公共资源的命名空间,任何人都可以访问。
kube-system:用于存放集群的核心组件和控制器的命名空间。
kubernetes-dashboard:用于存放Kubernetes仪表板的命名空间。
my-namespace:自定义的命名空间,用户创建的命名空间。

二、创建和管理Namespace

2.1 创建Namespace

在Kubernetes中创建一个Namespace非常简单,可以通过kubectl命令行工具或者YAML文件进行创建。

使用kubectl命令创建Namespace的语法如下:

kubectl create namespace <namespace-name>
或者
kubectl create ns <namespace-name>

例如,创建一个名为”my-namespace”的Namespace:

kubectl create namespace my-namespace
或者
kubectl create ns my-namespace

在这里插入图片描述

使用YAML文件创建Namespace的示例:

touch my-namespace.yaml文件。再使用命令kubectl apply -f my-namespace.yaml,创建Namespace。

apiVersion: v1
kind: Namespace
metadata:
  name: my-namespace

通过kubectl命令创建Namespace的方式更为常用,因为它更直观且方便管理。

2.2 管理Namespace

管理Namespace主要涉及到查看、切换和删除Namespace。

查看所有Namespace的命令如下:

kubectl get namespaces

查看指定命名空间的详细信息,可以使用以下命令:

kubectl get namespace <namespace-name>

例如,要查看名为”my-namespace”的命名空间的详细信息,可以运行以下命令:

kubectl get namespace my-namespace

此命令将显示有关该命名空间的详细信息,包括名称、状态、创建时间等。

如果要查看命名空间中的所有资源(如Pod、Deployment等),可以使用以下命令:

kubectl get all -n  <namespace-name>

例如,要查看命名空间”my-namespace”中的所有资源,可以运行以下命令:

kubectl get all -n my-namespace

此命令将显示命名空间中的所有资源的详细信息,包括资源类型、名称、状态等。

在这里插入图片描述

切换到指定Namespace的命令如下:

kubectl config set-context --current --namespace=<namespace-name>

查看当前使用的 namespace 命令如下:

kubectl describe sa default | grep Namespace

在这里插入图片描述

删除指定Namespace的命令如下:

kubectl delete namespace <namespace-name>

需要注意的是,删除Namespace会将其下的所有资源对象一并删除,请谨慎操作。

三、Namespace的实战应用

3.1 部署多个项目

Namespace可以用于在同一个Kubernetes集群上部署多个项目,实现资源的复用和共享。不同的项目可以在各自的Namespace中进行部署,相互之间不会产生冲突。

例如,我们可以创建两个Namespace,分别用于部署”project-A”和”project-B”:

apiVersion: v1
kind: Namespace
metadata:
  name: project-a
---
apiVersion: v1
kind: Namespace
metadata:
  name: project-b

这样,”project-A”和”project-B”就可以在各自的Namespace中独立进行部署和管理。
在这里插入图片描述

3.2 环境隔离

Namespace还可以实现不同环境之间的隔离,例如开发、测试和生产环境。通过为每个环境创建独立的Namespace,可以确保不同环境之间的资源和配置相互隔离,避免因为环境问题导致的不可预期的故障。

例如,可以创建三个Namespace分别用于开发、测试和生产环境:

apiVersion: v1
kind: Namespace
metadata:
  name: dev
---
apiVersion: v1
kind: Namespace
metadata:
  name: test
---
apiVersion: v1
kind: Namespace
metadata:
  name: prod

这样,开发团队可以在dev Namespace中进行开发和测试,测试团队可以在test Namespace中进行测试,而生产环境则部署在prod Namespace中。

在这里插入图片描述

3.3 资源配额控制

Namespace还可以用于控制资源的配额和使用情况。通过设置资源配额,可以限制每个Namespace中的资源使用量,避免资源被某个团队或项目独占,确保公平和合理的资源分配。

例如,可以为每个Namespace设置资源配额,限制CPU和内存的使用量:

apiVersion: v1
kind: ResourceQuota
metadata:
  name: my-quota
  namespace: my-namespace
spec:
  hard:
    requests.cpu: "1"
    requests.memory: "1Gi"
    limits.cpu: "2"
    limits.memory: "2Gi"

这样,my-namespace Namespace中的资源使用量将受到限制。
在这里插入图片描述

3.4 访问控制

Namespace还可以用于实现访问控制,限制不同团队或项目对资源的访问权限。通过RBAC(Role-Based Access Control)机制,可以为每个Namespace分配不同的角色和权限,实现细粒度的访问控制。

例如,可以为每个Namespace创建不同的ServiceAccount,并根据需要为其分配不同的角色和权限。

apiVersion: v1
kind: ServiceAccount
metadata:
  name: my-serviceaccount
  namespace: my-namespace
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: my-role
  namespace: my-namespace
rules:
  - apiGroups: [""]
    resources: ["pods"]
    verbs: ["get", "list", "create", "delete"]
    #verbs: ["get", "list", "watch", "create", "update", "patch", "delete"] # 可读写
    #verbs: ["get", "watch", "list"] # 只读权限
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: my-rolebinding
  namespace: my-namespace
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: my-role
subjects:
  - kind: ServiceAccount
    name: my-serviceaccount
    namespace: my-namespace

这样,my-serviceaccount就拥有了在my-namespace Namespace中对pods资源进行get、list、create和delete操作的权限。

1、获取指定命名空间(my-namespace)中的所有ServiceAccount(SA)的列表

kubectl get sa -n my-namespace

2、获取指定命名空间(my-namespace)中的角色(role)对象的信息

kubectl get role -n my-namespace

3、获取指定命名空间中的角色(Role)的详细信息,包括角色名称、命名空间、创建时间、标签、规则等。

kubectl describe role -n  my-namespace  my-role

4、获取指定命名空间中的所有角色绑定(rolebinding)的命令

kubectl get rolebinding -n my-namespace


在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

四、Namespace的最佳实践

4.1 命名规范

为了方便管理和维护,建议为Namespace使用一致的命名规范。可以根据团队、项目或环境等进行命名,例如team-a、project-b或dev等。

4.2 资源限制

在创建Namespace时,可以根据实际需求设置资源限制。合理的资源限制可以避免资源被独占,确保公平和合理的资源分配。

4.3 监控和日志

对于每个Namespace,建议设置监控和日志系统,及时了解资源使用情况和应用程序运行状态。可以使用Prometheus、Grafana等工具进行监控,ELK等工具进行日志收集和分析。

4.4 清理和维护

定期清理不再使用的Namespace和资源对象,避免资源浪费和集群混乱。可以设置自动清理策略,例如使用TTL Controller进行自动删除过期的Namespace。

总结:希望本篇博客能够帮助读者更好地理解和应用Kubernetes的Namespace功能。如果有任何问题或建议,欢迎留言讨论。


💖The End💖点点关注,收藏不迷路💖

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1350018.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JMeter 简单使用

JMeter 简介 Apache JMeter 是一款流行的性能测试工具&#xff0c;可以用来模拟用户行为并对系统进行压力测试。 安装 官方网站&#xff1a;http://jmeter.apache.org/ 在window下解压后&#xff0c; 运行 “bin/jmeter.bat” Jmeter 支持中文&#xff0c; 启动 Jmeter 后&…

SpringCloud微服务 【实用篇】| Dockerfile自定义镜像、DockerCompose

目录 一&#xff1a;Dockerfile自定义镜像 1. 镜像结构 2. Dockerfile语法 3. 构建Java项目 二&#xff1a; Docker-Compose 1. 初识DockerCompose 2. 部署微服务集群 前些天突然发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;…

【软件工程】设计概念

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; 软件工程 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 软件工程中的设计概念 概念&#xff1a; 结语 我的其他博客 前言 在数字时代的浪潮中&#xff0c;软件工程设计成为塑造创新…

PCBA电阻失效分析

一、案例背景 PCBA电阻使用一段时间后发生功能失效不良&#xff0c;据此情况&#xff0c;对失效电阻进行分析&#xff0c;明确失效原因。 二、分析过程 1、针对排阻的分析 数据通讯的主要连接点&#xff1a; 电阻测试结果&#xff1a; 测试结果&#xff1a;RP2、RP5 排阻第 3 …

基于YOLOv8的目标跟踪技术

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文摘要&#xff1a;介绍了YOLOv8自带的目标跟踪技术以及评价指标&#xff0c;并教会你如何在YOLOv8使用 1.YOLOv8自带两种跟踪方法 ultralytics/cfg/trackers/文件夹下 1.1 ByteTrack介绍 https://arxiv.org/pdf/2110.06864.pdf 摘…

【C++学习】:命名空间、输入输出和缺省参数全面解析

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; C入门到进阶 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言一. 命名空间1.1 为什么需要命名空间&#xff1f;1.2 命名空间的定义1.3 命名空间特性1…

基于JAVA的创意工坊双创管理系统 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 管理员端2.2 Web 端2.3 移动端 三、系统展示四、核心代码4.1 查询项目4.2 移动端新增团队4.3 查询讲座4.4 讲座收藏4.5 小程序登录 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的创意工坊双创管理…

「MySQL运维常见问题及解决方法」

「MySQL运维常见问题及解决方法」 一、查看MySQL数据库安装路径1.1、方式一 --SHOW VARIABLES LIKE basedir;1.2、方式二 --ps -ef | grep mysql 二、MySQL设置连接数与最大并发数2.1、永久生效--修改my.cnf文件2.2、临时生效--通过命令设置的全局变量 三、其他相关参数设置四、…

YOLOv5独家原创改进:提出一种新的Shape IoU,更加关注边界框本身的形状和尺度,对小目标检测也很友好 | 2023.12.29收录

💡💡💡本文改进:一种新的Shape IoU方法,该方法可以通过关注边界框本身的形状和尺度来计算损失,解决边界盒的形状和规模等固有属性对边界盒回归的影响。 💡💡💡对小目标检测涨点明显,在VisDrone2019、PASCAL VOC均有涨点 收录 YOLOv5原创自研 https://blog.cs…

Linux+nginx-前端部署的详细步骤

直奔主题 学废以下内容&#xff0c;前端也可以自己做部署啦~ Linux&#xff1a;大多数服务器都是使用Linux作为操作系统&#xff1a;稳定、安全、开源。finalShell工具&#xff1a;finalShell是一个方便管理远程服务器的工具&#xff0c;提供了可视化的操作配置界面。在和远程…

调用api接口异常的原因及解决方法

在进行接口调用时&#xff0c;调用有时会遇到各种异常情况&#xff0c;接口解决例如连接超时、异常因及返回值错误等。调用的原这些异常情况可能会导致程序无法正常运行&#xff0c;接口解决因此需要及时解决。异常因及本文将介绍。 一、接口解决连接超时 连接超时是异常因及…

mybatis-flex笔记

MyBatis-Flex 的增删改功能 - MyBatis-Flex 官方网站https://mybatis-flex.com/zh/base/add-delete-update.html https://gitee.com/hntianshu/mybatis-flex-test.githttp://xn--ces6a538pmb2a 一 新增数据 不忽略 null 值。 就是允许有null 忽略null 就是不允许有null BaseM…

图像文件怎么才能转换为Excel

将图像文件转换为Excel需要通过OCR&#xff08;Optical Character Recognition&#xff0c;光学字符识别&#xff09;技术&#xff0c;先将图片中的文字识别出来&#xff0c;再将识别出的文字导入到Excel中。这可以使用一些在线或离线的OCR工具&#xff0c;例如ABBYY FineReade…

JAVA B/S架构智慧工地源码,PC后台管理端、APP移动端

智慧工地系统充分利用计算机技术、互联网、物联网、云计算、大数据等新一代信息技术&#xff0c;以PC端&#xff0c;移动端&#xff0c;设备端三位一体的管控方式为企业现场工程管理提供了先进的技术手段。让劳务、设备、物料、安全、环境、能源、资料、计划、质量、视频监控等…

【Linux操作系统】探秘Linux奥秘:Linux开发工具的解密与实战

&#x1f308;个人主页&#xff1a;Sarapines Programmer&#x1f525; 系列专栏&#xff1a;《操作系统实验室》&#x1f516;诗赋清音&#xff1a;柳垂轻絮拂人衣&#xff0c;心随风舞梦飞。 山川湖海皆可涉&#xff0c;勇者征途逐星辉。 目录 &#x1fa90;1 初识Linux OS &…

ES6之Promise的链式调用

✨ 专栏介绍 在现代Web开发中&#xff0c;JavaScript已经成为了不可或缺的一部分。它不仅可以为网页增加交互性和动态性&#xff0c;还可以在后端开发中使用Node.js构建高效的服务器端应用程序。作为一种灵活且易学的脚本语言&#xff0c;JavaScript具有广泛的应用场景&#x…

微信商户号证书和密钥设置详细教程

1.先进入微信商户平台扫码登录微信商户号 微信商户平台 2.进入账户中心-API安全 3.申请API证书 3.1申请证书时按指引下载这个工具&#xff0c;这个工具里面包含你的证书信息 3.2 按指引安装该证书&#xff0c;安装完成以后证书会下载到你电脑的本地文件目录 4. 设置APIV2密…

建立网络矩阵:选择迅腾文化提供定制集成化服务、专业团队支持与拓展销售渠道

建立网络矩阵&#xff1a;选择迅腾文化提供定制集成化服务、专业团队支持与拓展销售渠道 在当今高度互联的数字时代&#xff0c;网络矩阵已成为企业常态化运营工具。网络矩阵不仅仅是一个单一的网站&#xff0c;而是由多个相互关联的数字资产组成的整体结构&#xff0c;包括官…

能答出这些问题,你就学会了模拟电路

自古以来&#xff0c;模拟电路和数字电路是电子工程师的学习重点&#xff0c;尤其是模拟电路&#xff0c;随着时代高速发展&#xff0c;越来越多高速高频设备使用模拟电路&#xff0c;在这种趋势下&#xff0c;很多电子人纷纷学习模电&#xff0c;但如何知道自己已经学成&#…

linux sh 脚本文件换行错误

windows 写好的脚本到服务运行不起来&#xff0c;显示换行问题 因为 windwos 的换行和 linux 的换行风格不同 解决办法&#xff1a;在使用的文本编辑器中&#xff0c;修改格式为 unix 格式 以 notepad 为例&#xff0c;在编辑 -> 文档格式转换中设置格式为 Unix