AI写作智能体 自主规划任务,支持联网查询和网页读取,多模态高效创作各类分析报告、商业计划、营销方案、教学内容等。 广告
由于标签和 Pod 是多对多的关系,使用标签可以将众多的 Pod 进行分组,这些组中的 Pod 有交叉重复的可能;使用命名空间就可以将对象分隔成完全独立且不重叠的组。Kubernetes 的命名空间为对象名称提供了一个作用域。对象名称只需要在一个命名空间内保持唯一,不同的命名空间可以包含同名的对象。 查看集群中所有的命名空间: ~~~bash $ kubectl get namespaces NAME STATUS AGE default Active 8d kube-node-lease Active 8d kube-public Active 8d kube-system Active 8d ~~~ 我们在前面的操作中没有指定命名空间,那么就一直都是在 default 这个命名空间下进行的 Pod 创建等操作。 可以查看一下其他命名空间中的 Pod: ~~~bash $ kubectl get pod -n kube-system NAME READY STATUS RESTARTS AGE coredns-76dc8f6bf5-rdp2j 1/1 Running 0 14m etcd-kube-master 1/1 Running 6 13m kube-apiserver-kube-master 1/1 Running 6 14m kube-controller-manager-kube-master 1/1 Running 6 13m kube-proxy-6kj44 1/1 Running 0 14m kube-proxy-n5bbk 1/1 Running 0 14m kube-proxy-ptd2d 1/1 Running 0 14m kube-scheduler-kube-master 1/1 Running 6 14m kubernetes-dashboard-5ff478f859-2mkkh 1/1 Running 0 14m ~~~ 可以看到 kube-system 命名空间下的 Pod 都是和 Kubernetes 系统相关的。 现在来尝试新建一个命名空间,在`/home/shiyanlou`目录下新建`test1-namespace.yaml`文件并向其中写入如下代码: ~~~yaml apiVersion: v1 kind: Namespace metadata: name: test1-namespace ~~~ 然后执行创建: ~~~yaml $ kubectl create -f test1-namespace.yaml namespace/test1-namespace created ~~~ 当然也可以使用命令直接创建新的命名空间: ~~~bash $ kubectl create namespace test2-namespace namespace/test2-namespace created ~~~ 如果想要在新的命名空间中创建 Pod,有两种方式: * 在 yaml 文件的 metadata 字段中添加`namespace: test1-namespace`属性 * 创建 Pod 时在命令中使用参数`-n`指定命名空间 比如我们使用前面的`nginx-manual.yaml`文件在 test1-namespace 命名空间中新建 Pod: ~~~bash $ kubectl create -f nginx-manual.yaml -n test1-namespace pod/nginx-manual created ~~~ 这样我们就有两个同名的 Pod 分别运行在两个不同的命名空间内。