Kubernetes(k8s):Namespace详解

这篇具有很好参考价值的文章主要介绍了Kubernetes(k8s):Namespace详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。



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

Kubernetes(k8s):Namespace详解,容器化与编排技术深度解析,kubernetes,容器,云原生,Namespace

在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

Kubernetes(k8s):Namespace详解,容器化与编排技术深度解析,kubernetes,容器,云原生,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

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

Kubernetes(k8s):Namespace详解,容器化与编排技术深度解析,kubernetes,容器,云原生,Namespace

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

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

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

kubectl describe sa default | grep Namespace

Kubernetes(k8s):Namespace详解,容器化与编排技术深度解析,kubernetes,容器,云原生,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中独立进行部署和管理。
Kubernetes(k8s):Namespace详解,容器化与编排技术深度解析,kubernetes,容器,云原生,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中。

Kubernetes(k8s):Namespace详解,容器化与编排技术深度解析,kubernetes,容器,云原生,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中的资源使用量将受到限制。
Kubernetes(k8s):Namespace详解,容器化与编排技术深度解析,kubernetes,容器,云原生,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


Kubernetes(k8s):Namespace详解,容器化与编排技术深度解析,kubernetes,容器,云原生,Namespace
Kubernetes(k8s):Namespace详解,容器化与编排技术深度解析,kubernetes,容器,云原生,Namespace

Kubernetes(k8s):Namespace详解,容器化与编排技术深度解析,kubernetes,容器,云原生,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功能。如果有任何问题或建议,欢迎留言讨论。文章来源地址https://www.toymoban.com/news/detail-776557.html


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

到了这里,关于Kubernetes(k8s):Namespace详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • K8S容器编排基本使用

    物理单机 – 虚拟机(VMware)-- IAAS(基础设施即服务 比如够买jsp主机模式)-- OPENSTACK(多个机器分片使用思想)-- docker(容器化) – K8S(云原生自动化部署自动化编排) kubernetes k和s之间有8个字母所以命名为K8S,用于自动部署、扩展、统一管理容器化应用集群,支持云平台

    2024年01月22日
    浏览(37)
  • 容器编排学习(一)k8s集群管理

    就在Docker容器技术被炒得热火朝天之时,大家发现,如果想要将Docker应用于具体的业务实现,是存在困难的一一编排、管理和调度等各个方面,都不容易。于是,人们迫切需要一套管理系统,对Docker及容器进行更高级更灵活的管理就在这个时候,kubernetes出现了 kubernetes的名字

    2024年02月09日
    浏览(36)
  • Kubernetes技术--k8s核心技术yaml资源编排

    (1).引入        我们可以使用kubectl实现单行指令的操作,但是这样做的坏处是不复用,所以为了更好的实现对一系列资源的编排工作。kuberntes中使用一种叫做 资源清单文件(yaml)来实现对资源管理和资源对象编排部署 。 (2).概述     yaml是一 种标记语言 。为了强调这种语言以

    2024年02月10日
    浏览(35)
  • Kubernetes(K8s)常用命令大全:熟练编排更完美

    🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐 🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬

    2024年02月16日
    浏览(36)
  • k8s的Namespace详解

    简介 在一个K8s集群中可以拥有多个命名空间,它们在逻辑上彼此隔离 namespaces是对一组资源和对象的抽象集合,比如可以将系统内部的对象划分为不同的项目组或用户组 K8s在集群启动之后,会默认创建几个namespace 默认namespace default:所有未指定Namespace的对象都会被分配在de

    2024年02月14日
    浏览(30)
  • 抛弃对外依赖,OpenEular(欧拉)操作系统为企业搭建独立的K8S集群环境! 容器编排平台丨Kubernetes 丨自主可控的云计算系统丨容器化技术丨 新一代云计算基础设施丨分布式应用部署和管理

    需要提前准备好OpenEular操作系统虚拟机3台,本文使用模板机创建。 如今,随着云计算、大数据、人工智能等技术的快速发展,越来越多的企业开始使用容器化技术来提高开发和交付速度。而Kubernetes则成为了最受欢迎的容器编排平台之一。然而,许多企业往往将Kubernetes部署在

    2024年02月11日
    浏览(59)
  • k8s学习笔记(四):命名空间(namespace)详解

    Kubernetes中的Namespace是一种用于在 集群内部组织和隔离资源 的机制。一个Namespace可以看作是一个 虚拟的集群 ,它将物理集群划分为多个逻辑部分,每个部分都有自己的一组资源(如Pod、Service、ConfigMap等)。 Namespace 适合用于 隔离不同用户创建的资源 用于给集群中的 任何对

    2024年02月12日
    浏览(28)
  • k8s资源管理命令与Namespace使用详解

    目录 一、前言 二、k8s概述 三、k8s常用操作管理命令 3.1 kubectl 命令用法

    2023年04月16日
    浏览(44)
  • 云原生之容器编排实践-在K8S集群中使用Registry2搭建私有镜像仓库

    基于前面搭建的3节点 Kubernetes 集群,今天我们使用 Registry2 搭建私有镜像仓库,这在镜像安全性以及离线环境下运维等方面具有重要意义。 Note: 由于是测试环境,以下创建了一个 local-storage 的 StorageClass ,并使用本地磁盘的方式创建使用 PV ,实际建议使用 NFS 。 共用到了三台

    2024年02月19日
    浏览(36)
  • K8s项目实战笔记获阿里技术大咖力荐,深入浅出解读容器编排原理与应用

    一、前言 Kubernetes,简称K8s,宛如一位技艺高超的舞台导演,优雅地指挥着容器集群的华丽表演。它不仅仅是一个开源的容器集群管理系统,更是自动化部署、智能扩缩容与维护等功能的集大成者。作为领军的容器编排工具,Kubernetes展现了基于容器技术的分布式架构的无尽魅

    2024年03月10日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包