身為 vSphere 管理員,您可以建立主管命名空間,設定命名空間的 CPU、記憶體和儲存區限制,指派權限,以及將叢集上的命名空間服務作為範本啟用。這樣一來,DevOps 工程師可以自助服務方式建立主管命名空間並在其中部署工作負載。

自助服務命名空間建立和設定工作流程

身為 vSphere 管理員,您可以建立主管命名空間,設定命名空間的 CPU、記憶體和儲存區限制,指派權限,以及將叢集上的命名空間服務作為範本進行佈建或啟用。
圖 1. 自助服務命名空間範本佈建工作流程
""
身為 DevOps 工程師,您可以自助服務方式建立主管命名空間並在其中部署工作負載。可以與其他 DevOps 工程師共用該命名空間,或在不再需要時將其刪除。若要與其他 DevOps 工程師共用命名空間,請連絡 vSphere 管理員。
圖 2. 自助服務命名空間建立工作流程
""

建立和設定自助服務命名空間範本

身為 vSphere 管理員,您可以建立主管命名空間並將其設定為自助服務命名空間範本。然後,DevOps 工程師可以使用 kubectl 命令列建立和刪除主管命名空間。

必要條件

使用 vSphere IaaS control plane 設定叢集。

程序

  1. vSphere Client 中,導覽至 主管
  2. 按一下設定索引標籤,然後選取主管下的一般
  3. 選取命名空間服務
  4. 切換狀態切換開關以啟用此功能。
    此時將顯示 建立命名空間範本頁面。
  5. 組態窗格中,設定命名空間的資源。
    選項 說明
    CPU 要為命名空間保留的 CPU 資源數量。
    記憶體 要為命名空間保留的記憶體數量。
    儲存區 要為命名空間保留的儲存空間總量。
    儲存區原則 要用於需要持續性儲存區的工作負載的儲存區原則。
    網路 網路下拉式功能表中,為命名空間選取網路。
    虛擬機器類別 用於部署獨立虛擬機器的虛擬機類別。
    內容程式庫 具有要用於虛擬機器部署的虛擬機映像的內容程式庫。
  6. 下一步
  7. 權限窗格中,新增 DevOps 工程師和群組,讓他們能夠使用範本來建立命名空間。
    選取身分識別來源和使用者或群組,然後按 下一步
  8. 檢閱並確認窗格中,將會顯示您設定的內容。
    檢閱內容,然後按一下 完成

結果

命名空間範本已設定且處於作用中狀態。身為 vSphere 管理員,您可以編輯範本。DevOps 工程師可以使用範本建立命名空間。

停用自助服務命名空間

身為 vSphere 管理員,您可以在叢集上停用自助服務命名空間。

停用自助服務命名空間範本後,DevOps 工程師無法使用該範本在叢集上建立新命名空間。他們可以刪除已建立的命名空間。

程序

  1. vSphere Client 中,導覽至 主管
  2. 按一下設定索引標籤,然後選取主管下的一般
  3. 命名空間服務窗格中,切換狀態開關以停用範本。
  4. 若要再次啟用範本,請切換狀態開關。
    您可以建立其他自助服務命名空間,也可以使用現有命名空間。

建立自助服務命名空間

身為 DevOps 工程師,您可以建立自助服務命名空間並在其中執行工作負載。建立命名空間後,可以與其他 DevOps 工程師共用該命名空間,或在不再需要時將其刪除。

必要條件

  • 確認 vSphere 管理員是否在叢集上建立並啟用了自助服務命名空間範本。請參閱建立和設定自助服務命名空間範本
  • 確認已將您單獨或作為群組成員新增至自助服務命名空間範本中的權限清單中。
  • 取得 主管 控制平面的 IP 位址。

程序

  1. 使用 kubectl 適用的 vSphere 外掛程式主管 進行驗證。請參閱〈以 vCenter Single Sign-On 使用者身分連線到主管〉
    kubectl vsphere login --server=IP-ADDRESS --vsphere-username USERNAME
  2. 將內容切換為 主管
    kubectl config use-context SUPERVISOR-CLUSTER-IP
  3. 在叢集上建立自助服務命名空間。
    kubectl create namespace NAMESPACE NAME
    例如
    kubectl create namespace test-ns
    備註: 啟用 vSphere IaaS control plane 並升級叢集後,DevOps 工程師即享有擁有者權限。如果僅升級 vCenter Server 而未升級叢集,則 Devops 工程師僅擁有命名空間的編輯權限。
    您建立的命名空間會顯示在叢集中。若要與其他 DevOps 工程師共用命名空間,請連絡 vSphere 管理員。

建立具有註解和標籤的自助服務命名空間

DevOps 工程師可以使用 kubectl 命令列建立具有註解和標籤的自助服務命名空間。

DevOps 工程師可以使用包含使用者定義的註解和標籤的 YAML 資訊清單。

程序

  1. 登入 主管
    kubectl vsphere login --server IP-ADDRESS-SUPERVISOR-CLUSTER --vsphere-username VCENTER-SSO-USERNAME
  2. 建立具有註解和標籤的命名空間 YAML 資訊清單檔案。
    kubectl create -f ns-create.yaml
    例如,建立以下 ns-create.yaml 檔案:
    apiVersion: v1
    kind: Namespace
    metadata:
      name: test-ns-yaml
      labels:
        my-label: "my-label-val-yaml"
      annotations:
        my-ann-yaml: "my-ann-val-yaml"
  3. 套用 YAML 資訊清單。
    kubectl create -f ns-create.yaml

    kubectl apply -f ns-create.yaml
  4. 說明您建立的命名空間以查看變更。
    root@localhost [ /tmp ]# kubectl describe ns test-ns-yaml
    Name:         test-ns-yaml
    Labels:       my-label=my-label-val-yaml
                  vSphereClusterID=domain-c50
    Annotations:  my-ann-yaml: my-ann-val-yaml
                  vmware-system-namespace-owner-count: 1
                  vmware-system-resource-pool: resgroup-171
                  vmware-system-resource-pool-cpu-limit: 0.4770
                  vmware-system-resource-pool-memory-limit: 2000Mi
                  vmware-system-self-service-namespace: true
                  vmware-system-vm-folder: group-v172
    Status:       Active
     
    Resource Quotas
     Name:             test-ns-yaml
     Resource          Used  Hard
     --------          ---   ---
     requests.storage  0     5000Mi
     
     Name:                                                                           test-ns-yaml-storagequota
     Resource                                                                        Used  Hard
     --------                                                                        ---   ---
     namespace-service-storage-profile.storageclass.storage.k8s.io/requests.storage  0     9223372036854775807
     
    No LimitRange resource.

使用 kubectl annotate 和 kubectl label 更新自助服務命名空間

身為 DevOps 工程師,您可以使用 kubectl annotatekubectl label 命令來更新或刪除自助服務命名空間註解和標籤。

必要條件

確認您具有要更新的命名空間的擁有者權限。

程序

  1. 登入 主管
    kubectl vsphere login --server IP-ADDRESS-SUPERVISOR-CLUSTER --vsphere-username VCENTER-SSO-USERNAME
  2. 說明要更新的命名空間。
    root@localhost [ /tmp ]# kubectl describe ns testns
    Name:         testns
    Labels:       my-label=test-label-2
                  vSphereClusterID=domain-c50
    Annotations:  my-ann: test-ann-2
                  vmware-system-namespace-owner-count: 2
                  vmware-system-resource-pool: resgroup-153
                  vmware-system-resource-pool-cpu-limit: 0.4770
                  vmware-system-resource-pool-memory-limit: 2000Mi
                  vmware-system-self-service-namespace: true
                  vmware-system-vm-folder: group-v154
    Status:       Active
     
     
    Resource Quotas
     Name:             testns
     Resource          Used  Hard
     --------          ---   ---
     requests.storage  0     5000Mi
     
     
     Name:                                                                           testns-storagequota
     Resource                                                                        Used  Hard
     --------                                                                        ---   ---
     namespace-service-storage-profile.storageclass.storage.k8s.io/requests.storage  0     9223372036854775807
  3. 使用 kubectl annotate 命令更新註解。
    例如, kubectl annotate --overwrite ns testns my-ann="test-ann-3"
    若要刪除註解,請執行命令 kubectl annotate --overwrite ns testns my-ann-
  4. 使用 kubectl label 命令更新標籤。
    例如, kubectl label --overwrite ns testns my-label="test-label-3"
    若要刪除標籤,請執行命令 kubectl label --overwrite ns testns my-label-
  5. 說明要查看更新的命名空間。
    root@localhost [ /tmp ]# kubectl describe ns testns
    Name:         testns
    Labels:       my-label=test-label-3
                  vSphereClusterID=domain-c50
    Annotations:  my-ann: test-ann-3
                  vmware-system-namespace-owner-count: 2
                  vmware-system-resource-pool: resgroup-153
                  vmware-system-resource-pool-cpu-limit: 0.4770
                  vmware-system-resource-pool-memory-limit: 2000Mi
                  vmware-system-self-service-namespace: true
                  vmware-system-vm-folder: group-v154
    Status:       Active
     
     
    Resource Quotas
     Name:             testns
     Resource          Used  Hard
     --------          ---   ---
     requests.storage  0     5000Mi
     
     
     Name:                                                                           testns-storagequota
     Resource                                                                        Used  Hard
     --------                                                                        ---   ---
     namespace-service-storage-profile.storageclass.storage.k8s.io/requests.storage  0     9223372036854775807
     
     
    No LimitRange resource.

使用 kubectl edit 更新自助服務命名空間

身為 DevOps 工程師,您可以使用 kubectl edit 命令更新自助服務命名空間。

必要條件

確認您具有要更新的命名空間的擁有者權限。

程序

  1. 登入 主管
    kubectl vsphere login --server IP-ADDRESS-SUPERVISOR-CLUSTER --vsphere-username VCENTER-SSO-USERNAME
  2. 說明要更新的命名空間。
    kubectl describe ns testns-1
    Name:         testns
    Labels:       vSphereClusterID=domain-c50
    Annotations:  my-ann: test-ann-2
                  vmware-system-namespace-owner-count: 2
                  vmware-system-resource-pool: resgroup-153
                  vmware-system-resource-pool-cpu-limit: 0.4770
                  vmware-system-resource-pool-memory-limit: 2000Mi
                  vmware-system-self-service-namespace: true
                  vmware-system-vm-folder: group-v154
    Status:       Active
     
     
    Resource Quotas
     Name:             testns-1
     Resource          Used  Hard
     --------          ---   ---
     requests.storage  0     5000Mi
     
     
     Name:                                                                           testns-1-storagequota
     Resource                                                                        Used  Hard
     --------                                                                        ---   ---
     namespace-service-storage-profile.storageclass.storage.k8s.io/requests.storage  0     9223372036854775807
  3. 使用 kubectl edit 命令編輯命名空間。
    例如, kubectl edit ns testns-1
    kubectl edit 命令會在 KUBE_EDITOR 或 EDITOR 環境變數所定義的文字編輯器中開啟命名空間資訊清單。
  4. 更新標籤。
    例如, my-label=test-label
  5. 更新註解。
    例如, my-ann: test-ann
  6. 說明要查看更新的命名空間。
    root@localhost [ /tmp ]# kubectl describe ns testns-1
    Name:         testns-1
    Labels:       my-label=test-label
                  vSphereClusterID=domain-c50
    Annotations:  my-ann: test-ann
                  vmware-system-namespace-owner-count: 1
                  vmware-system-resource-pool: resgroup-173
                  vmware-system-resource-pool-cpu-limit: 0.4770
                  vmware-system-resource-pool-memory-limit: 2000Mi
                  vmware-system-self-service-namespace: true
                  vmware-system-vm-folder: group-v174
    Status:       Active
     
     
    Resource Quotas
     Name:             testns-1
     Resource          Used  Hard
     --------          ---   ---
     requests.storage  0     5000Mi
     
     
     Name:                                                                           testns-1-storagequota
     Resource                                                                        Used  Hard
     --------                                                                        ---   ---
     namespace-service-storage-profile.storageclass.storage.k8s.io/requests.storage  0     9223372036854775807
     
     
    No LimitRange resource.
    

刪除自助服務命名空間

身為 DevOps 工程師,您可以刪除所建立的自助服務命名空間。

必要條件

確認已使用 kubectl 適用的 vSphere 外掛程式 建立自助服務命名空間。

程序

  1. 使用 kubectl 適用的 vSphere 外掛程式主管 進行驗證。請參閱〈以 vCenter Single Sign-On 使用者身分連線到主管〉
  2. 從叢集中刪除自助服務命名空間。
    kubectl delete namespace NAMESPACE NAME
    例如:
    kubectl delete namespace test-ns