Kubernetes – Namespaces

news/2025/3/19 2:50:09/文章来源:https://www.cnblogs.com/wonchaofan/p/18232118

Kubernetes 命名空间是一种让您能够组织资源的机制。它就像集群内的虚拟集群。命名空间将资源与其他命名空间的资源隔离开来。例如,您需要在一个命名空间中为部署/服务使用不同的名称,但您可以在两个不同的命名空间中为部署使用相同的名称。

初始命名空间

  • kube-system: Master、kubectl 等系统进程都部署在此命名空间中;因此建议不要创建或修改该命名空间。
  • kube-public:此命名空间包含可公开访问的数据,例如包含集群信息的configMap 。
  • kube-node-lease:该命名空间是节点的心跳。每个节点都有其关联的租约对象。它决定了节点的可用性。
  • default:这是您默认用于创建资源的命名空间。

虽然您创建的任何资源都将在默认命名空间中创建,但您也可以创建自己的新命名空间并在那里创建资源。

注意:避免创建带有前缀 Kube- 的命名空间,因为它是为 Kubernetes 系统命名空间保留的,您不应尝试修改它们。

 

使用命名空间

kubernetes 中的命名空间是一种在物理集群中创建和组织虚拟集群的方法,我们可以在其中隔离单个集群中的一组资源。命名空间有助于组织集群中的资源,例如pod、服务和卷。可以使用 kubernetes 命名空间来管理应用程序和授权的工作负载。

查看命名空间

查看命名空间时使用的命令有几个,如下所示。

 
 

列出所有定义的命名空间:

在实时情况下,您将发现用于不同应用程序的命名空间数量,要列出集群中存在的所有命名空间,您可以使用以下命令。

kubectl get namespaces

描述命名空间:

使用以下命令查看有关特定命名空间的更多具体信息。

kubectl describe namespace my-namespace

要查看命名空间中存在的资源数量:

您可以使用以下命令查看特定命名空间中存在的所有资源。

kubectl get pods --namespace=my-namespace

标记命名空间:

您可以将标签添加到现有的命名空间,以便在创建资源时进一步提供帮助。

kubectl label namespaces <namespace> <labelKey>=<value>

设置请求的命名空间 

在 kubernetes 中设置命名空间可以通过两种方式完成,一种是命令式方式,另一种是声明式方式,即使用 kubectl 的命令行并编写 yaml 文件。如以下命令和代码所示

命令式或者kubectl的命令行:

kubectl get pods --namespace=my-namespace

此命令将从指定的命名空间中获取 pod。

声明方式或者yaml文件:

apiVersion: v1
kind: Namespace
metadata:name: <NameSpaceName>lables:           # Labels are key value pairs(Metadata)<key>: <value><key>  <value>

设置命名空间首选项

设置命名空间首选项将使AP I 与集群交互的默认命名空间成为可能。设置命名空间首选项后,您可以在该特定命名空间中部署资源,在该命名空间中管理所有资源而不会造成任何混淆。命名空间首选项通常在 Kubernetes API 服务器上配置,可以设置为以下选项之一:

  1. 集群范围的默认命名空间。
  2. 用户的默认命名空间。

要使用命令行工具 kubectl 设置命名空间首选项,可以使用以下命令。这将是 my-namespace 作为默认命名空间。

kubectl config set-context --current --namespace=my-namespace

命名空间和 DNS 

命名空间将隔离需要有限授权的服务,DNS 将以容器的形式公开您部署的应用程序,在某些情况下,DNS 和命名空间将协同工作。Kubernetes 将使用以下命名约定将 DNS 分配给需要公开资源的命名空间。

<service-name>.<namespace-name>.svc.cluster.local

<service-name>:表示与资源关联的服务的名称。;<namespace-name>:资源所在的命名空间的名称。

Kubernetes 命名空间 Yaml

Kubernetes 命名空间 yaml 文件用于在 Kubernetes 中创建命名空间,您可以在其中隔离将要部署在 Kubernetes 集群中的资源。

apiVersion: v1kind: Namespacemetadata:name: <NameSpaceName>lables: # Labels are key value pairs(Metadata)<key>: <value><key> <value>

例子:

通过以下 yaml,命名空间的名称将为“test-ns”,键值对将为“ team: testing team”

apiVersion: v1
kind: Namespace
metadata:name: test-nslabels:team: testingteam

创建新的命名空间

$ kubectl create namespace your-namespace

 

在命名空间中创建组件:

要在命名空间中创建组件,您可以提供 –namespace 标志或在配置文件中指定命名空间。

方法 1:使用 –namespace 标志

$ kubectl apply -f your_config.yaml --namespace=your-namespace

然后您可以使用kubectl get检查命名空间中的资源并使用-n指定命名空间

 

在每个命名空间中创建 Pod

您不需要使用 –namespace 标志来指定命名空间,而只需在配置文件中初始指定命名空间即可。

 然后使用该命令。

$ kubectl apply -f your_config_file.yaml

 

使用 Kubernetes 命名空间的好处

  1. 不同团队的资源隔离:命名空间将隔离将在 Kubernetes 集群中使用的资源。Kubernetes 中的命名空间对于安全性、性能或组织原因非常有用。可以为将在 Kubernetes 集群上工作的不同团队(例如开发团队、测试团队和其他团队)创建命名空间。
  2. RBAC:命名空间可以通过使用基于角色的访问控制来提高部署的资源的安全性。例如,如果使用 RABAC 将资源部署在 dev 命名空间中,我们可以在 Kubernetes 中控制该 dev 命名空间中开发人员团队成员的权限。
  3. 资源组织:在 Kubernetes 集群中,以有组织的方式维护部署在集群中的资源非常重要,这可以通过使用 Kubernetes 命名空间来实现,您可以在其中跟踪和管理已部署的资源。
  4. 提高性能:部署在 Kubernetes 集群中的资源彼此隔离,这将有助于减轻 CPU 和内存等资源的负担。

Kubernetes 命名空间常见问题解答

1. Kubernetes 中的命名空间是什么?

Namespace是kubernetes集群内部的一个虚拟集群。

2. 命名空间的作用是什么?

Namespace会在逻辑上隔离kubernets集群的对象。

 

 

 

 

 

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

opengauss双region流式容灾搭建

opengauss双region流式容灾搭建 云和恩墨-戚钰2023-05-30openGauss本文出处:https://www.modb.pro/db/626197 一、主备双集群部署 架构:主集群:一主一备;灾备集群:一主一备 1. 安装集群 1 主节点:...41 备节点:..***.***45 xml 文件参考:<?xml version="1.0&…

leetcode160 相交链表

题目描述 https://leetcode.cn/problems/intersection-of-two-linked-lists/description/给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。图示两个链表在节点 c1 开始相交: …

联想ThinkServerRD440进入管理界面

1.开机按F1进入BIOS找到【Server Management】-选择【BMC network configuration】设置DHCP,F10保存2.将路由器下的网线连接到服务器的MGMT口3.重启进入BIOS查看获取的地址,在浏览器输入IP4.提示这个错误可以用Edge浏览器的IE模式打开,或者其他浏览器有IE/兼容模式就行默认账…

Kubernetes – 标签和选择器

一个名为Kubernetes的开源容器管理平台可自动执行容器的部署、扩展、降级和负载平衡(也称为容器编排工具)。它由 Google 使用 Golang 创建,因此拥有一个相当大的社区。Google 最终将其捐赠给了 CNCF(云原生计算基金会)。本质上,部署是 pod 上方的一层抽象。它类似于 pod …

OOP第4-6次作业总结

前言: 这三次作业中第四次作业是对前三次作业答题判题程序的迭代,而从第五次作业开始,则是新的家居强电电路模拟程序题目。就难度而言,第四次作业比第五、六次作业难,第五次作业是家居强电电路模拟程序的开头,所以自然简单,而且第六次作业还减少了两道题目,使得第六次作…

​ChatTTS:Win11本地安装和一键运行包!

ChatTTS 是一个专为交互式语音准备的AI语音合成项目,特点是自然,逼真,可把控声音细节,能说能笑能停顿。 音频播放器00:00 00:00 使用上 / 下箭头键来增高或降低音量。 具体内容,已经在另外的文章中介绍过。本文主要是关注两个点。如何在Windows上安装这个项目。分享一个已…

WPF 稳定的全屏化窗口方法

本文来告诉大家在 WPF 中,设置窗口全屏化的一个稳定的设置方法。在设置窗口全屏的时候,经常遇到的问题就是应用程序虽然设置最大化加无边框,但是此方式经常会有任务栏冒出来,或者说窗口没有贴屏幕的边。本文的方法是基于 Win32 的,由 lsj 提供的方法,当前已在 1000 多万台…

Kubernetes – 容器编排简介

在本文中,我们将研究 Kubernetes 中的容器编排。但首先,让我们探索容器兴起的趋势、容器编排的需求,以及它如何为 Kubernetes 占据主导地位和发展创造空间。 技术渗透到我们日常生活的方方面面,对软件、销售和交付基于软件的产品或仅在业务中使用软件的公司和组织产生了巨大…

Linux学习笔记(2)——ls指令

指令:ls -a: 列出所有文件 -l:以长格式显示指定目标信息 -F:在每个文件末尾加上字符说明该文件类型:@符号链接、|表示FIFOS、/表示目录、=表示套接字 -s:在每个文件前面打印出大小 -t:按时间进行文件排序 -A:列出除了“.”和“..”的文件 -R:将目录下所有子目录的文件列…

KeepassXC Keepass2android WebDav 同步数据库

1:方案介绍 KeepassXC 和 Keepass2android 都是用来存储用户密码数据的应用。KeepassXC 在 Win、Mac、Linux 都可以安装;Keepass2android 在 andorid 安这两个软件都支持 .kdbx 数据库,也就是说 KeepassXC 创建的数据库在 Keepass2android 中也能使用,但问题是数据库如何同…

golang在vscode执行测试用例如何显示测试代码覆盖率?只需要添加几个配置

背景 我们在开发完需求后,需要编写测试用例用于保证代码的正确以及后期变更中预防出现问题,那么如何保证我们的覆盖范围在我们预期,以及如何知道我们的测试用例覆盖了哪些代码呢? 如何实现 我们只需要在测试用例执行后,让ide在代码上渲染出哪些被覆盖哪些没有被覆盖即可,…

六月五日 关于计算机网络RIP和OSPF

今天主要是关于计算机网络的,今天的实验课要完成的是RIP和OSPF配置。 RIP协议(Routing Information Protocol,路由信息协议)是最早的动态路由协议,其原理简单,配置容易。它基于距离矢量算法来计算到达目的网络的最佳路径,通过跳数(hop count)作为度量路由之间的距离,…