刪除 VPC 及其相關聯資源

在 IBM Cloud® Virtual Private Cloud 主控台中,必須先刪除 IBM Cloud 的所有公用閘道、子網路和連接的資源,然後才能刪除 VPC。

使用 IBM Cloud 主控台刪除 VPC

若要使用主控台刪除 VPC,請執行下列動作:

  1. 尋找 VPC 中的所有子網路。 按一下導覽窗格中的 VPC,然後選取 VPC。

  2. 在 VPC 詳細資料頁面上,移至此 VPC 中的子網路清單,然後選取子網路以檢視其詳細資料。

  3. 刪除連接到子網路的所有資源。 在導覽窗格中,按一下連接的資源。 選取每個連接的實體、負載平衡器和 VPN 閘道,進入其詳細資訊頁面。 從動作功能表 動作圖示,選擇刪除。 必須先停止連接的實例,然後才能將其刪除。

    雖然資源的狀態會立即變更為 deleting,但完成刪除作業可能需要最長 30 分鐘時間。 直到控制台中不再顯示所有連接的資源後,才能刪除子網路。

  4. 刪除所有已附加的資源後,請返回子網的詳細資訊頁面,並點擊刪除圖示。

  5. 刪除所有子網後,請返回 VPC 的詳細資訊頁面,並點擊刪除圖示。 這將刪除 VPC 及其所有公用閘道。

使用 IBM Cloud CLI 刪除 VPC

以下範例說明如何依照建議的順序,從您的「IBM Cloud® Virtual Private Cloud」中刪除各項 VPC 資源。

下列關鍵事實必須記住關於刪除的重要資訊:

  • 在 VPC 是空的之前,無法刪除 VPC。
  • 必須先順利刪除母項資源包含的所有資源,然後才能刪除母項資源。
  • 如果資源處於擱置刪除狀態,則在清單查詢中檢視時,該資源會顯示 deleting 狀態。
  • 大多數刪除請求都是_非同步的_,這意味著當資源尚未完全刪除時,在清單查詢中可能會顯示其正在刪除的狀態。
  • 嘗試刪除母項資源之前,必須輪詢以確保子項資源不再顯示在清單視圖中。

資源的狀態從 deleting 變更為 failed 後,可以重試刪除該資源。 如果無法刪除處於 failed 狀態的資源,請與支援中心聯絡

步驟 1:找出您要刪除的 VPC 中的所有子網

VPC 的每個子網路都必須先刪除,才能刪除 VPC。 請執行以下指令,並查看「ID」的值,以取得您要刪除的 VPC 的 ID:

ibmcloud is vpcs

將 VPC ID 儲存在變數中,以便稍後可以使用,例如:

vpc="0738-3524fef5-da35-4622-bf9a-31614964649d"

若要取得帳戶中所有子網路的清單,請執行下列指令:

ibmcloud is subnets

查看 VPC 值以確定需要刪除的子網路。 將子網路 ID 儲存在變數中,以便稍後可以使用,例如:

subnet="0738-d31ce469-9b0f-44e1-87ce-0fc77d8b0e53"

如果要刪除的 VPC 有多個子網路,請重複這些步驟以刪除每個子網路。

步驟 2:刪除 VPC 中的每個子網路

刪除子網路中的所有 VPN 閘道(如果有的話)

若要列出帳戶中所有 VPN 閘道,請執行下列指令:

ibmcloud is vpn-gateways

對於您想要刪除的子網中每個 VPN 閘道,請執行以下指令,其中 $vpnid 為該 VPN 閘道的 ID。

ibmcloud is vpn-gateway-delete $vpnid

VPN 閘道器的狀態會立即變更為「deleting」,但它仍會出現在清單查詢結果中。 刪除 VPN 閘道可能需要最多 30 分鐘。 在等待 VPN 閘道被刪除的同時,您可以要求並行刪除其他子網資源。 然而,在 VPN 閘道以及該子網中的所有其他資源不再出現在清單查詢結果中之前,無法刪除該子網。

刪除子網路中的所有負載平衡器(如果有的話)

若要列出帳戶中所有負載平衡器,請執行下列指令:

ibmcloud is load-balancers

對於您要刪除的子網中每個負載平衡器,請執行以下指令,其中 $lbid 為該負載平衡器的 ID。

ibmcloud is load-balancer-delete $lbid

負載平衡器的狀態會立即變更為「deleting」,但仍會顯示在清單查詢結果中。 刪除負載平衡器可能需要最多 30 分鐘。 在等待負載平衡器刪除的同時,您可以要求並行刪除其他子網資源。 然而,在負載平衡器以及該子網中的所有其他資源不再出現在清單查詢結果中之前,無法刪除該子網。

刪除子網路中的所有網路介面(如果有的話)

實例可以有多個網路介面,那些網路介面可以屬於 VPC 的多個子網路。 子網路中的任何網路介面都必須先刪除,才能夠刪除子網路。

刪除子網路中之網路介面的唯一方法是刪除實例。

若要列出實例的所有網路介面,請執行下列指令:

ibmcloud is instance-network-interfaces $vsi

若要列出帳戶中所有實例,請執行下列指令:

ibmcloud is instances

如果要刪除 VPC 中的所有實例,您可以對 VPC 中的每個實例執行下列指令,其中 $vsi 是要刪除的實例的 ID。 刪除實例時,其他子網路中的所有網路介面(如果有的話)會自動刪除。

實例必須先停止才能加以刪除。 若要停止實例,請執行 ibmcloud is instance-stop 指令。

ibmcloud is instance-delete $vsi

實例的狀態會立即變更為 deleting,但該實例仍會顯示在清單查詢結果中。 刪除實例可能需要最多 30 分鐘。

等待刪除實例時,可以要求平行刪除其他子網路資源。 但是,要到子網路中的實例和其他所有資源不再顯示在清單查詢結果中之後,才能刪除子網路。

如果在嘗試刪除的子網路中存在次要網路介面,則您必須刪除實例。 在不刪除實例的情況下,無法從實例刪除網路介面。

刪除子網路

已刪除子網路內的所有資源後(這意味著清單查詢結果中不會傳回這些資源),請執行下列指令來刪除子網路:

ibmcloud is subnet-delete $subnet

子網路的狀態會立即變更為 deleting,但可能需要幾分鐘時間才能刪除子網路,隨後該子網路不會再顯示在清單查詢結果中。

步驟 3:刪除 VPC 中的所有公用閘道(如果有的話)

若要列出帳戶中所有公用閘道,請執行下列指令:

ibmcloud is public-gateways

針對 VPC 中您想要刪除的每個公用閘道,請執行下列指令來刪除公用閘道,其中 $gateway 是公用閘道 ID。

ibmcloud is public-gateway-delete $gateway

步驟 4:刪除 VPC

刪除 VPC 中的所有子網路和公用閘道之後,請執行下列指令來刪除 VPC,其中 $vpc 是您正在刪除之 VPC 的 ID。

ibmcloud is vpc-delete $vpc

VPC 的狀態會立即變更為 deleting,但可能需要幾分鐘時間才能刪除 VPC,隨後該 VPC 不會再顯示在清單查詢結果中。

使用 REST API 刪除 VPC

下列步驟是程序中的主要部分:

  1. 找出您要刪除的 VPC 中的所有子網。
  2. 刪除 VPC 中的每個子網路,這意味著:
    • 刪除子網路中的所有 VPN 閘道。
    • 刪除子網路中的所有負載平衡器。
    • 刪除子網路中實例的所有網路介面。
    • 刪除子網路。
  3. 刪除 VPC 中的所有公用閘道。
  4. 刪除 VPC。

下列各區段提供一些範例 API 呼叫,可以執行這些呼叫來刪除 VPC。

步驟 1:找出您要刪除的 VPC 中的所有子網

VPC 的每個子網路都必須先刪除,才能刪除 VPC。 請執行以下指令,並查看「id」的值,以取得您要刪除的 VPC 的 ID:

curl -X GET "$vpc_api_endpoint/v1/vpcs?version=$version&generation=2" \
     -H "Authorization:$iam_token"

在 curl 指令後方加上 | json_pp| jq,即可取得易於閱讀的 JSON 字串。jq 是一款採用 MIT 授權的 第三方工具。 某些作業系統預設並未內建 jq。 使用前請先安裝 jq ,或改用其他 JSON 解析器。 json_pp 指令是一種 JSON 前處理器,通常預設安裝於大多數 Linux 發行版中。

將 VPC ID 儲存在變數中,以便稍後可以使用,例如:

vpc="0738-3524fef5-da35-4622-bf9a-31614964649d"

若要取得帳戶中所有子網路的清單,請執行下列指令:

curl -X GET "$vpc_api_endpoint/v1/subnets?version=$version&generation=2" \
     -H "Authorization:$iam_token"

查看 vpc 值以確定需要刪除的子網路。 將子網路 ID 儲存在變數中,以供稍後使用,例如:

subnet="0738-d31ce469-9b0f-44e1-87ce-0fc77d8b0e53"

如果要刪除的 VPC 有多個子網路,請重複這些步驟以刪除每個子網路。

步驟 2:刪除 VPC 中的每個子網路

刪除子網路中的所有 VPN 閘道(如果有的話)

若要列出帳戶中所有 VPN 閘道,請執行下列指令:

curl -X GET "$vpc_api_endpoint/v1/vpn_gateways?version=$version&generation=2" \
     -H "Authorization:$iam_token"

針對您要刪除之子網路中的每一個 VPN 閘道執行下列指令,其中 $vpnid 是 VPN 閘道的 ID。

curl -X DELETE "$vpc_api_endpoint/v1/vpn_gateways/$vpnid?version=$version&generation=2" \
     -H "Authorization:$iam_token"

VPN 閘道的狀態會立即變更為 deleting,但在您執行清單查詢時仍會傳回它。 刪除 VPN 閘道可能需要最多 30 分鐘。 在等待 VPN 閘道被刪除的同時,您可以要求並行刪除其他子網資源。 然而,在 VPN 閘道以及該子網中的所有其他資源不再出現在清單查詢結果中之前,該子網無法被刪除。

刪除子網路中的所有負載平衡器(如果有的話)

若要列出帳戶中所有負載平衡器,請執行下列指令:

curl -X GET "$vpc_api_endpoint/v1/load_balancers?version=$version&generation=2" \
     -H "Authorization:$iam_token"

針對您要刪除之子網路中的每一個負載平衡器執行下列指令,其中 $lbid 是負載平衡器的 ID。

curl -X DELETE "$vpc_api_endpoint/v1/load_balancers/$lbid?version=$version&generation=2" \
     -H "Authorization:$iam_token"

負載平衡器的狀態會立即變更為 deleting,但在您執行清單查詢時仍會傳回它。 刪除負載平衡器可能需要最多 30 分鐘。 在等待負載平衡器刪除的同時,您可以要求並行刪除其他子網資源。 然而,在負載平衡器以及該子網中的所有其他資源不再出現在清單查詢結果中之前,無法刪除該子網。

刪除子網路中的所有網路介面(如果有的話)

實例可以有多個網路介面,那些網路介面可以屬於 VPC 的多個子網路。 刪除子網路之前,必須先刪除該子網路中的任何網路介面。 刪除子網路中之網路介面的唯一方法是刪除實例。

若要列出實例的所有網路介面,請執行下列指令:

curl -X GET "$vpc_api_endpoint/v1/instances/$vsi/network_interfaces?version=$version&generation=2" \
     -H "Authorization:$iam_token"

如果在您嘗試刪除的子網路中有次要網路介面存在,則您需要刪除實例。 在不刪除實例的情況下,無法從實例刪除網路介面。

若要列出帳戶中所有實例,請執行下列指令:

curl -X GET "$vpc_api_endpoint/v1/instances?version=$version&generation=2" \
     -H "Authorization:$iam_token"

如果要刪除 VPC 中的所有實例,您可以對 VPC 中的每個實例執行下列指令,其中 $vsi 是要刪除的實例的 ID。 刪除實例時,其他子網路中的所有網路介面(如果有的話)會自動刪除。

實例必須先停止才能加以刪除。 如需相關資訊,請參閱 建立實例動作,以使用 type 要求及 stop 動作。

curl -X DELETE "$vpc_api_endpoint/v1/instances/$vsi?version=$version&generation=2" \
     -H "Authorization:$iam_token"

該實例的狀態會立即變更為「deleting」,但仍可能會出現在清單查詢的結果中。 刪除實例可能需要最多 30 分鐘。 等待刪除實例時,可以要求平行刪除其他子網路資源。 然而,在該實例及子網中所有其他資源不再出現在清單查詢結果中之前,無法刪除該子網。

刪除子網路

已刪除子網路內的所有資源,並且執行清單查詢時不再傳回這些資源後,請執行下列指令來刪除子網路:

curl -X DELETE "$vpc_api_endpoint/v1/subnets/$subnet?version=$version&generation=2" \
     -H "Authorization:$iam_token"

子網路的狀態會立即變更為 deleting,但可能需要幾分鐘時間才能刪除子網路,隨後該子網路不會再在清單查詢結果中傳回。

步驟 3:刪除 VPC 中的所有公用閘道(如果有的話)

若要列出帳戶中所有公用閘道,請執行下列指令:

curl -X GET "$vpc_api_endpoint/v1/public_gateways?version=$version&generation=2" \
     -H "Authorization:$iam_token"

針對 VPC 中您想要刪除的每個公用閘道,請執行下列指令來刪除公用閘道,其中 $gateway 是公用閘道 ID。

curl -X DELETE "$vpc_api_endpoint/v1/public_gateways/$gateway?version=$version&generation=2" \
     -H "Authorization:$iam_token"

步驟 4:刪除 VPC

刪除 VPC 中的所有子網路和公用閘道之後,請執行下列指令來刪除 VPC,其中 $vpc 是您正在刪除之 VPC 的 ID。

curl -X DELETE "$vpc_api_endpoint/v1/vpcs/$vpc?version=$version&generation=2" \
     -H "Authorization:$iam_token"

VPC 的狀態會立即變更為 deleting,但可能需要幾分鐘時間才能刪除 VPC,隨後該 VPC 不會再顯示在清單查詢結果中。