Kubernetes(k8s):Namespace详解

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💖点点关注,收藏不迷路💖

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vulnhub Loly: 1

靶机地址: https://www.vulnhub.com/entry/loly-1,538/ Kali IP&#xff1a;172.16.12.129 1.主机发现 Nmap -sP 172.16.12.0/24 2.端口扫描 nmap -P 172.16.12.130 3.访问 4.目录扫描 dirb http://172.16.12.130/ 扫描到/wordpress 5.爆破wordpress用户名和密码 wpscan…

【Bootstrap学习 day6】

Bootstrap5图像 圆角图片 通过.rounded类实现 <img src"avatar.png" alt"头像" style"width:200px" class"rounded">圆形 通过.rounded-circle类实现 <img src"avatar.png" alt"头像" style"wid…

Matlab技巧[绘画逻辑分析仪产生的数据]

绘画逻辑分析仪产生的数据 逻分上抓到了ADC数字信号,一共是10Bit,12MHZ的波形: 这里用并口协议已经解析出数据: 导出csv表格数据(这个数据为补码,所以要做数据转换): 现在要把这个数据绘制成波形,用Python和表格直接绘制速度太慢了,转了一圈发现MATLAB很好用,操作方法如下:…

【Bootstrap学习 day7】

Bootstrap按钮 按钮样式 使用.btn相关类实现 <button type"button" class"btn">基本按钮</button> <button type"button" class"btn btn-primary">主要按钮</button> <button type"button" cl…

2024年天津中德应用技术大学专升本专业考试准考证下载及考场安排

天津中德应用技术大学2024高职升本科专业考试准考证下载及考生通知 2023年1月2日&#xff0c;天津中德应用技术大学招生网公布了2024年高职升本科专业课考试 准考证下载及考生须知通知公布了2024年中德专升本专业课的准考证下载时间、方式以及注意事项也代表着2024年专业课考…

Java静态代理和动态代理(JDK)的简单实现

1. 静态代理 静态代理模拟角色分析&#xff1a; 抽象角色 : 一般使用接口或者抽象类来实现真实角色 : 被代理的角色代理角色 : 代理真实角色 ; 代理真实角色后 , 一般会做一些附属的操作客户: 使用代理角色来进行一些操作 代码模拟&#xff1a; Rent.java——>抽象角色 …

Wireshark 提示和技巧 | Time 时间分析那些事

前言 众所周知&#xff0c;Wireshark 中有很多关于 Time 的字段&#xff0c;譬如 Frame 中的 frame.time、frame.time_delta、frame.time_delta_displayed &#xff0c;TCP 中的 tcp.time_delta、tcp.time_relative &#xff0c;HTTP 中的 http.time&#xff0c;DNS 中的 dns.…

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

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

东信免驱系列身份证阅读器串口通讯协议解析示例,适用于单片机、ARM等系统开发集成使用

完整的一次读卡流程包括&#xff1a; 身份证寻卡 > 身份证选卡 > 身份证读卡&#xff0c;三个步骤 缺一不可&#xff08;见通讯协议&#xff09;。 寻卡&#xff1a;EA EB EC ED 04 00 B0 B4 BB 返回&#xff1a;EA EB EC ED 05 00 00 B0 B5 BB 选卡&#xff1a;EA …

抖音引流跳转到微信加好友?免费教你创建一个链接!

在抖音想要跳转到微信&#xff0c;现在常规的做法就是通过微信小程序的Url Scheme跳转到微信并打开小程序指定的页面&#xff0c;这个已经有非常成熟的方案。 为了降低大家的门槛&#xff0c;可以使用开源的【引流宝】快速创建一个链接&#xff0c;这个链接生成的二维码&#…

fmincon函数的决策变量可以是二维矩阵,但不建议是高维矩阵

1&#xff09;二维矩阵代码 clear all clc% 定义目标函数 fun (x) sum(sum(x.^2));% 初始矩阵 x0 2 rand(2, 2);% 定义空的线性不等式约束 A []; b [];% 定义空的线性等式约束 Aeq []; beq [];% 定义变量的上下界 lb ones(2,2); ub [];% 使用 fmincon 求解 options …

yolov5旋转目标检测-遥感图像检测-无人机旋转目标检测-附代码和原理

综述 为了解决旋转目标检测问题&#xff0c;研究者们提出了多种方法和算法。以下是一些常见的旋转目标检测方法&#xff1a; 基于滑动窗口的方法&#xff1a;在图像上以不同的尺度和角度滑动窗口&#xff0c;通过分类器判断窗口中是否存在目标。这种方法简单直观&#xff0c;…

谷达冠楠:抖音小店到底要多久可以做起来

随着移动互联网的发展&#xff0c;短视频平台已经成为了人们日常生活中不可或缺的一部分。抖音作为国内最具影响力的短视频平台之一&#xff0c;吸引了大量的用户和商家。近年来&#xff0c;抖音小店逐渐成为了一种新型的电商模式&#xff0c;让许多创业者和商家看到了新的商机…

【华为机试】2023年真题B卷(python)-计算疫情扩散时间

一、题目 题目描述&#xff1a; 请根据给定的地图计算&#xff0c;多少天以后&#xff0c;全部区域都会被感染。 如果初始地图上所有区域全部都被感染&#xff0c;或者没有被感染区域&#xff0c;返回-1 二、输入输出 输入描述: 一行N*N个数字&#xff08;只包含0,1&#xff0c…

一文看懂Prometheus告警原理及过程

目录 1. 自定义告警规则 2. 告警规则编写 3. prometheus配置 4. 告警过程 5. 告警解除 5.1 对startsAt和endsAt的处理 5.2 Prometheus告警解除后持续多久重复推送告警解除通知&#xff1f;&#xff1f; 1. 自定义告警规则 基于规则告警是指利用已经采集的监控数据&…

【小沐学NLP】Python实现K-Means聚类算法(nltk、sklearn)

文章目录 1、简介1.1 机器学习1.2 K 均值聚类1.2.1 聚类定义1.2.2 K-Means定义1.2.3 K-Means优缺点1.2.4 K-Means算法步骤 2、测试2.1 K-Means&#xff08;Python&#xff09;2.2 K-Means&#xff08;Sklearn&#xff09;2.2.1 例子1&#xff1a;数组分类2.2.2 例子2&#xff1…

考研用什么光源比较好?五款好用台灯推荐

人眼对光是非常敏感的&#xff0c;特别是儿童青少年眼睛还在发育的状态来说&#xff0c;光线是至关重要的&#xff0c;于是这次测评就不能马虎&#xff0c;必须要本着专业严谨的态度进行测评&#xff0c;这次测评呢就花了不少钱买下了现在市面上热度很高、或是较有名气的专业款…

我的CSDN 512天创作者纪念日总结:高效、高现

文章目录 512天创作者纪念日&#xff1a;2023年的12月31日CSDN的512天消息提醒第一篇文章&#xff0c;最后一篇文章总计847篇文章&#xff0c;每月发文分布512天&#xff0c;各专栏文章统计512天&#xff0c;互动总成绩 512天创作者纪念日&#xff1a;2023年的12月31日 2023年…

一、医学影像云平台(AI赋能基层的最佳实践)

医学影像云平台&#xff0c;是一个目前影像业务中&#xff0c;各省市级领导比较重视的业务板块。因为&#xff0c;影像平台不但可以直接给原来没有PACS系统的1,2级医院提供PACS服务&#xff0c;还可以提供院间之间的业务&#xff0c;例如发送远程诊断&#xff0c;远程会诊业务&…

【Vue2+3入门到实战】(9)Vue基础之组件的三大组成部分(结构/样式/逻辑) 详细示例

目录 一、学习目标1.组件的三大组成部分&#xff08;结构/样式/逻辑&#xff09; 二、scoped解决样式冲突**1.默认情况**&#xff1a;2.代码演示3.scoped原理4.总结 三、data必须是一个函数1、data为什么要写成函数2.代码演示3.总结 一、学习目标 1.组件的三大组成部分&#x…