k8s的名称空间

1. 什么是名称空间?

通过工作中的这段时间,复习一下k8s的名称空间,在 K8s 中,名称空间是用于隔离集群资源的机制。Kubernetes 集群中的一些资源支持名称空间,而一些资源不支持名称空间。那些支持名称空间的资源被称为局部资源,而不支持名称空间的资源则是全局资源

如何判定资源是否支持名称空间?

可以使用以下命令列出所有资源及其是否支持名称空间:

kubectl api-resources

该命令会列出所有资源及其相关信息,其中 NAMESPACED 列显示资源是否支持名称空间(true 为支持,false 为不支持)。

2. 响应式管理名称空间

2.1 创建名称空间

要创建一个新的名称空间,可以使用 kubectl create ns 命令:

kubectl create ns oldboyedu

2.2 查看名称空间

查看所有名称空间:

kubectl get ns

查看指定名称空间的详情:

kubectl get ns oldboyedu
kubectl get ns oldboyedu --show-labels

2.3 修改名称空间

虽然 Kubernetes 不支持直接修改名称空间的名字,但可以通过修改名称空间的标签来更新其信息。例如:

kubectl label namespaces oldboyedu school=oldboyedu
kubectl label ns oldboyedu class=linux92

2.4 在名称空间中使用 Pod

在创建 Pod 时,可以通过 namespace 字段指定名称空间:

apiVersion: v1
kind: Pod
metadata:
  name: xiuxian-v1
  namespace: oldboyedu
spec:
  nodeName: worker232
  containers:
  - image: registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1
    name: xiuxian

应用配置后,Pod 会被创建到 oldboyedu 名称空间。

2.5 使用 -A 选项查看所有名称空间的资源

使用 -A 选项可以查看集群中所有名称空间的资源:

kubectl get pods -A

2.6 删除名称空间

删除一个名称空间将会删除该名称空间中的所有资源。删除命令如下:

kubectl delete ns oldboyedu

3. 声明式管理名称空间

3.1 获取资源的 YAML 文件

可以通过 kubectl get ns <namespace> -o yaml 命令导出名称空间的 YAML 配置文件:

kubectl get ns default -o yaml

3.2 根据提供的 YAML 文件创建名称空间

可以使用一个 YAML 文件来声明式地创建名称空间,例如:

apiVersion: v1
kind: Namespace
metadata:
  labels:
    school: oldboyedu
    class: linux92
  name: oldboyedu

应用该配置文件以创建名称空间:

kubectl apply -f 05-ns-oldboyedu.yaml

3.3 使用名称空间配置 Wordpress

在为 WordPress 配置资源时,可以通过指定 namespace 字段来将资源创建到指定名称空间中。例如,在 oldboyedu 名称空间中创建 MySQL 和 WordPress 的资源。

  1. MySQL 配置
apiVersion: v1
kind: ReplicationController
metadata:
  name: rc-mysql
  namespace: oldboyedu
spec:
  replicas: 1
  selector:
    apps: mysql80
  template:
    metadata:
      labels:
        apps: mysql80
    spec:
      containers:
      - image: harbor.oldboyedu.com/oldboyedu-db/mysql:8.3.0-oracle
        name: db
  1. WordPress 配置
apiVersion: v1
kind: ReplicationController
metadata:
  name: rc-wordpress
  namespace: oldboyedu
spec:
  replicas: 3
  selector:
    apps: wp
  template:
    metadata:
      labels:
        apps: wp
    spec:
      containers:
      - image: harbor.oldboyedu.com/oldboyedu-web/wordpress
        name: wp

通过将 namespace 字段设置为 oldboyedu,所有资源都会被创建在该名称空间中。


posted on 2025-01-18 19:26  Leo-Yide  阅读(54)  评论(0)    收藏  举报