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-quotanamespace: 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-serviceaccountnamespace: my-namespace
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:name: my-rolenamespace: 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-rolebindingnamespace: my-namespace
roleRef:apiGroup: rbac.authorization.k8s.iokind: Rolename: my-role
subjects:- kind: ServiceAccountname: my-serviceaccountnamespace: my-namespace

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

1、获取指定命名空间(my-namespace)中的所有ServiceAccount(SA)的列表kubectl get sa -n my-namespace2、获取指定命名空间(my-namespace)中的角色(role)对象的信息kubectl get role -n my-namespace3、获取指定命名空间中的角色(Role)的详细信息,包括角色名称、命名空间、创建时间、标签、规则等。kubectl describe role -n  my-namespace  my-role4、获取指定命名空间中的所有角色绑定(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.hqwc.cn/news/314867.html

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

相关文章

Windows下使用wireshark抓取usb数据

参考&#xff1a;使用Wireshark获取USB数据&#xff08;https://blog.csdn.net/2301_76293276/article/details/133791136&#xff09; 文章目录 安装wireshark运行wireshark筛选所需连接设备数据 安装wireshark 直接官网下载wireshark&#xff08;https://www.wireshark.org…

稳部落 – 新浪微博备份导出工具

稳部落 稳部落是新浪微博备份导出工具&#xff0c;可以帮助用户非常方便的导出备份新浪微博的数据&#xff0c;让我们可以永久保存这些微博数据。它支持新浪微博、微博私信、微博评论的导出&#xff0c;并可以备份包含图片、视频的完整微博内容。用户只需登录微博账号&#xf…

[密码学]ECC加密

椭圆曲线加密 Ellipse Curve Cryptography 椭圆曲线上的离散对数问题 Ellipse Curve Discrete logarithm Problem 椭圆曲线 注意积分公式的分母&#xff0c;椭圆曲线由此得名。这种曲线和椭圆一点不像。 离散对数&#xff1a; yg^x mod p,对于给定的g,x,p求y很容易&#…

2024年Mac专用投屏工具AirServer 7 .27 for Mac中文版

AirServer 7 .27 for Mac中文免费激活版是一款Mac专用投屏工具&#xff0c;能够通过本地网络将音频、照片、视频以及支持AirPlay功能的第三方App&#xff0c;从 iOS 设备无线传送到 Mac 电脑的屏幕上&#xff0c;把Mac变成一个AirPlay终端的实用工具。 目前最新的AirServer 7.2…

【算法】枪打出头鸟(js)

牛客链接&#xff1a;https://www.nowcoder.com/practice/1504075c856248748ca444c8c093d638?tpId196&&tqId37268&rp1&ru/ta/job-code-total&qru/ta/job-code-total/question-ranking 本人题解&#xff1a; /*** 代码中的类名、方法名、参数名已经指定&a…

【解决】电脑上的WIFI图标不见了咋整?

相信不少同学都遇到过这种情况&#xff1a;电脑上的wifi图标莫名不见了&#xff0c;甚至有时候还是在使用的中途突然断网消失的。 遇到这种情况一般有两种解决方案&#xff1a; 1. 在开机状态下长按电源键30秒以上 这种办法应该是给主板放电&#xff0c;一般应用在wifi6上面。…

【Java开发岗面试】八股文—Java虚拟机(JVM)

声明&#xff1a; 背景&#xff1a;本人为24届双非硕校招生&#xff0c;已经完整经历了一次秋招&#xff0c;拿到了三个offer。本专题旨在分享自己的一些Java开发岗面试经验&#xff08;主要是校招&#xff09;&#xff0c;包括我自己总结的八股文、算法、项目介绍、HR面和面试…

vue中的内置指令v-model的作用和常见使用方法以及自定义组件上的用法

一、v-model是什么 v-model是Vue框架的一种内置的API指令&#xff0c;本质是一种语法糖写法&#xff0c;它负责监听用户的输入事件以更新数据&#xff0c;并对一些极端场景进行一些特殊处理。在Vue中&#xff0c;v-model是用于在表单元素和组件之间创建双向数据绑定的指令。它…

算法训练营Day34(贪心算法)

1005.K次取反后最大化的数组和 1005. K 次取反后最大化的数组和 - 力扣&#xff08;LeetCode&#xff09; 秒了 class Solution {public int largestSumAfterKNegations(int[] nums, int k) {Arrays.sort(nums);// -4 -3 -2 -1 5//-2 -2 0 2 5int last -1;for(int i 0;i<…

zk 3.6.1启动

1. 下载绿色版本(发现直接从github上下载下来不行&#xff0c;官网也没找到在哪里下载) 2.zoo.cfg配置文件 3.点击 可见&#xff0c;java开发的软件天生跨平台。 --------------- 1.接着研究从github下载下来的release包&#xff0c;我猜想可能是没有编译&#xff0c;毕竟jar包…

SpringBoot整合多数据源,并支持动态新增与切换

SpringBoot整合多数据源&#xff0c;并支持动态新增与切换 一、概述 在项目的开发过程中&#xff0c;遇到了需要从数据库中动态查询新的数据源信息并切换到该数据源做相应的查询操作&#xff0c;这样就产生了动态切换数据源的场景。为了能够灵活地指定具体的数据库&#xff0…

鸿鹄电子招投标系统:源码级别解析电子招投标的精髓

招投标管理系统是一个集门户管理、立项管理、采购项目管理、采购公告管理、考核管理、报表管理、评审管理、企业管理、采购管理和系统管理于一体的综合性应用平台。它适用于招标代理、政府采购、企业采购和工程交易等业务的企业&#xff0c;旨在提高项目管理的效率和质量。该系…