项目

创建项目

项目资源只能在管理集群上创建,请参考下文了解如何在管理集群中的项目下创建命名空间

创建一个基本项目

  1. kubectl create -f - <<EOF
  2. apiVersion: management.cattle.io/v3
  3. kind: Project
  4. metadata:
  5. generateName: p-
  6. namespace: c-m-abcde
  7. spec:
  8. clusterName: c-m-abcde
  9. displayName: myproject
  10. EOF

使用 metadata.generateName 来确保一个唯一的项目 ID,但是需要注意 kubectl apply 不能与 metadata.generateName 一起使用,因此必须使用 kubectl create 来替代。

metadata.namespacespec.clusterName 设置为项目所属的集群 ID。

如果你通过集群成员账户创建项目,则必须包含注释 field.cattle.io/creatorId,并将注释值设置为集群成员账号的用户 ID。

  1. kubectl create -f - <<EOF
  2. apiVersion: management.cattle.io/v3
  3. kind: Project
  4. metadata:
  5. annotations:
  6. field.cattle.io/creatorId:
  7. user-id
  8. generateName: p-
  9. namespace: c-m-abcde
  10. spec:
  11. clusterName: c-m-abcde
  12. displayName: myproject
  13. EOF

设置 field.cattle.io/creatorId 字段允许集群成员账户通过 get 命令查看项目资源,并可以在 Rancher UI 中查看项目。集群所有者和管理员账号不需要设置此注释。

创建一个具有 Resource Quota 的项目

请查看 Kubernetes Resource Quota

  1. kubectl create -f - <<EOF
  2. apiVersion: management.cattle.io/v3
  3. kind: Project
  4. metadata:
  5. generateName: p-
  6. namespace: c-m-abcde
  7. spec:
  8. clusterName: c-m-abcde
  9. displayName: myproject
  10. resourceQuota:
  11. limit:
  12. limitsCpu: 1000m
  13. namespaceDefaultResourceQuota:
  14. limit:
  15. limitsCpu: 50m
  16. EOF

创建一个具有 Container Limit Ranges 的项目

请查看 Kubernetes Limit Ranges

  1. kubectl create -f - <<EOF
  2. apiVersion: management.cattle.io/v3
  3. kind: Project
  4. metadata:
  5. generateName: p-
  6. namespace: c-m-abcde
  7. spec:
  8. clusterName: c-m-abcde
  9. displayName: myproject
  10. containerDefaultResourceLimit:
  11. limitsCpu: 100m
  12. limitsMemory: 100Mi
  13. requestsCpu: 50m
  14. requestsMemory: 50Mi

在项目中创建命名空间

项目资源保存在管理集群中,即使该项目使用于托管集群也是如此。项目下的命名空间保存在托管集群中。

在管理集群上查找你正在管理的集群的项目 ID,因为它是使用 metadata.generateName 生成的:

  1. kubectl --namespace c-m-abcde get projects

在托管集群上,使用项目注释创建命名空间:

  1. kubectl apply -f - <<EOF
  2. apiVersion: v1
  3. kind: Namespace
  4. metadata:
  5. name: mynamespace
  6. annotations:
  7. field.cattle.io/projectId: c-m-abcde:p-vwxyz
  8. EOF

注意格式:<cluster ID>:<project ID>

删除项目

在集群命名空间中查找要删除的项目:

  1. kubectl --namespace c-m-abcde get projects

删除集群命名空间下的项目:

  1. kubectl --namespace c-m-abcde delete project p-vwxyz

请注意此命令不会删除以前属于该项目的命名空间和资源。