前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Kubernetes(k8s)-命名空间(Namespace)介绍

Kubernetes(k8s)-命名空间(Namespace)介绍

作者头像
运维小路
发布于 2025-02-27 13:21:00
发布于 2025-02-27 13:21:00
49000
代码可运行
举报
文章被收录于专栏:运维小路运维小路
运行总次数:0
代码可运行

我们上一章介绍了Docker基本情况,目前在规模较大的容器集群基本都是Kubernetes,但是Kubernetes涉及的东西和概念确实是太多了,而且随着版本迭代功能在还增加,笔者有些功能也确实没用过,所以只能按照我自己的理解来讲解。

我们在前面讲解Kubernetes很多的资源的操作的时候,都提到了命名空间(Namespace),那这个命名空间(Namespace)到底是个什么样的概念还有什么用处呢?

Kubernetes(简称K8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。在Kubernetes中,命名空间(Namespace)是用于实现多租户环境的一种资源隔离机制。以下是关于Kubernetes命名空间的一些详细介绍:

命名空间的作用

  1. 资源隔离:命名空间可以将集群中的资源划分为多个虚拟的集群,每个命名空间可以拥有自己的资源,如Pods、Services、Deployments等,从而实现资源隔离,大部分资源都是有命名空间属性(少部分资源是全局的)。
  2. 权限控制:通过RBAC(基于角色的访问控制),可以为不同的命名空间设置不同的访问权限,限制用户的操作范围。参考我们讲过的UserAccountServiceAccount
  3. 组织管理:命名空间可以帮助组织管理资源,不同的团队或项目可以工作在不同的命名空间中,而不会相互干扰。
  4. 资源配额:可以为命名空间设置资源配额(ResourceQuotas),限制命名空间内可以创建的资源数量,避免单个用户或团队占用过多资源,然后我们在配合我们讲过UserAccount,给不同的命名空间指定一个管理员,就可以实现多团队使用同一个集群。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apiVersion: v1
kind: ResourceQuota
metadata:
  name: example-resource-quota
  namespace: your-namespace-name # 替换为你的命名空间名称
spec:
  hard:
    requests.cpu: "2" # 该命名空间中所有容器请求的CPU总和不能超过2核
    requests.memory: 4Gi # 该命名空间中所有容器请求的内存总和不能超过4GB
    limits.cpu: "4" # 该命名空间中所有容器的CPU上限不能超过4核
    limits.memory: 8Gi # 该命名空间中所有容器的内存上限不能超过8GB
    persistentvolumeclaims: "5" # 最多可以有5个持久卷声明
    configmaps: "10" # 最多可以有10个配置映射

命名空间的特性

1.非隔离性:命名空间提供的是逻辑隔离,而不是网络或存储隔离。默认情况下,命名空间之间网络是互通的,除非使用网络策略(Network Policies)进行隔离。

2.层次性:命名空间之间没有层次关系,它们是平级的。

3.可配置性:可以通过YAML文件定义命名空间,以及相关的资源配额、访问控制等。

命名空间的操作

1.创建命名空间

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apiVersion: v1
kind: Namespace
metadata:
  name: my-namespace

使用kubectl create -f <filename>.yaml命令创建。也可以直接使用命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl create ns nsname

2.查看命名空间

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#查所有的命名空间
kubectl get ns

3.删除命名空间: 使用kubectl delete namespace <namespace-name>命令删除。

4.切换命名空间: 使用kubectl config set-context --current --namespace=<namespace-name>命令切换当前上下文的默认命名空间,可以把命名空间从默认的defaulet切换到指定的命名空间。

系统默认命名空间

Kubernetes集群启动时会自动创建几个默认的命名空间:

  • default :默认情况下,未指定命名空间的对象会被创建在这个命名空间中。 我们平时查询资源的时候,不加任何参数就是查询当前默认的命名空间,如果要查其他命名空间下资源则加上 -n "命名空间名字"。
  • kube-system:用于Kubernetes系统级别的资源,如系统组件的Pods。
  • kube-public:这个命名空间是自动创建的,所有用户都可以读取,通常用于公共资源。

注意事项

  • 命名空间一旦创建,名称不可更改。
  • 删除命名空间会级联删除其包含的所有资源

通过使用命名空间,Kubernetes能够更好地支持多用户环境,确保资源的安全和高效管理。

历史推荐内容Docker-docker基本信息,基本命令,dockerfile,原理,仓库,存储网络日志,番外篇云计算&虚拟化-包括服务器购买,虚拟化介绍,虚拟磁盘,虚拟网络,创建虚拟机,安装虚拟机,dashboard,xml解释,克隆,快照,初始化,esxi介绍。Linux进阶-包括硬件,日常运维,基础软件,日志,进阶命令,防火墙,shell编程,内核,linux系统及初始化Linux基础-包括文件的增删改查,磁盘管理,网络配置,用户配置,权限配置

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-02-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维小路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验