7 Kubernetes基本概念之命名空间

在前一篇中,我们探讨了如何使用 Kubeadm 安装 Kubernetes。设置好集群后,接下来我们将进入 Kubernetes 的基本概念之一——命名空间(Namespace)。

什么是命名空间?

在 Kubernetes 中,命名空间 是一种用来将集群内部的资源进行划分和隔离的机制。它允许在同一集群中支持多个独立的环境,例如开发、测试和生产。这种划分不仅降低了资源的冲突风险,还提高了管理的灵活性。

命名空间的特性

  1. 资源隔离:命名空间为不同团队或项目提供了隔离环境。同名的资源可以在不同的命名空间中共存。
  2. 访问控制:您可以基于命名空间对访问进行细粒度的控制,运用 RBAC(Role-Based Access Control) 策略进行权限管理。
  3. 资源配额:可以为不同命名空间配置资源配额,限制每个命名空间所能使用的资源量,避免资源被某一项目独占。

默认命名空间

Kubernetes 集群默认提供了四个命名空间:

  • default:默认命名空间,用户未指定命名空间时,所有资源将创建在此处。
  • kube-system:用于存放 Kubernetes 自身的系统组件,例如 kube-dns
  • kube-public:所有用户都可以访问的命名空间,通常用于公开的信息。
  • kube-node-lease:用于维护每个节点的租约信息,帮助Kubernetes更好地管控节点。

创建和使用命名空间

创建命名空间

要在 Kubernetes 中创建一个命名空间,您可以使用以下命令:

1
kubectl create namespace my-namespace

运行完此命令后,您就创建了一个名为 my-namespace 的命名空间。

切换命名空间

如果您想在不同的命名空间中执行命令,可以使用 -n--namespace 标志,例如:

1
kubectl get pods -n my-namespace

这样命令将会列出 my-namespace 命名空间中运行的所有 Pod。

默认命名空间设置

如果您希望在特定命名空间中一直工作,可以使用以下命令设置当前上下文的命名空间:

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

之后,您执行的所有 kubectl 命令将默认在 my-namespace 命名空间下运行。

示例:在命名空间中创建 Pod

以下是如何在 my-namespace 中创建一个简单的 Nginx Pod 的例子:

1
2
3
4
5
6
7
8
9
apiVersion: v1
kind: Pod
metadata:
name: my-nginx
namespace: my-namespace
spec:
containers:
- name: nginx
image: nginx:latest

您可以将上面的 YAML 文件保存为 nginx-pod.yaml,并使用以下命令创建 Pod:

1
kubectl apply -f nginx-pod.yaml

完成后,您可以通过以下命令检查 Pod 是否正常运行:

1
kubectl get pods -n my-namespace

通过命名空间进行资源管理

命名空间在资源管理上提供了极大的便利,尤其是在大型团队或项目中。通过命名空间,您可以实现针对资源的清晰划分和访问控制。

  • 资源配额:为了防止某个命名空间耗尽所有资源,您可以设置配额,例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
apiVersion: v1
kind: ResourceQuota
metadata:
name: my-quota
namespace: my-namespace
spec:
limits:
requests:
cpu: "500m"
memory: "512Mi"
requests:
cpu: "300m"
memory: "256Mi"
  • RBAC 配置:可以定义角色和角色绑定来控制谁可以在特定命名空间中执行操作,确保安全性。

总结

命名空间是 Kubernetes 中一个强大的概念,提供了资源的隔离、管理和组织。通过合理使用命名空间,您可以有效地管理大型 Kubernetes 集群中的多个项目和团队。在下一篇中,我们将讨论 标签(Labels)选择器(Selectors) 的重要性及其在 Kubernetes 中的应用。

7 Kubernetes基本概念之命名空间

https://zglg.work/kubernetes-zero/7/

作者

IT教程网(郭震)

发布于

2024-08-15

更新于

2024-08-16

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论