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

作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

图片

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

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

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

命名空间的作用

  1. 资源隔离:命名空间可以将集群中的资源划分为多个虚拟的集群,每个命名空间可以拥有自己的资源,如Pods、Services、Deployments等,从而实现资源隔离,大部分资源都是有命名空间属性(少部分资源是全局的)。

  2. 权限控制:通过RBAC(基于角色的访问控制),可以为不同的命名空间设置不同的访问权限,限制用户的操作范围。参考我们讲过的UserAccountServiceAccount

  3. 组织管理:命名空间可以帮助组织管理资源,不同的团队或项目可以工作在不同的命名空间中,而不会相互干扰。

  4. 资源配额:可以为命名空间设置资源配额(ResourceQuotas),限制命名空间内可以创建的资源数量,避免单个用户或团队占用过多资源,然后我们在配合我们讲过UserAccount,给不同的命名空间指定一个管理员,就可以实现多团队使用同一个集群。

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.创建命名空间

apiVersion: v1
kind: Namespace
metadata:
  name: my-namespace

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

kubectl create ns nsname

2.查看命名空间: ​​​​​​​

#查所有的命名空间
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能够更好地支持多用户环境,确保资源的安全和高效管理。

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

关注微信公众号《运维小路》获取更多内容。

猜你喜欢

转载自blog.csdn.net/dessler/article/details/147051226
今日推荐