星期六, 11月 23, 2024

Azure AKS 升級小記



Azure AKS 升級小記


Azure Cloud Shell


有在 Azure 上面執行 AKS 來進行 Kubernetes 的練習

1.28  到明年 1 月, 所以繼續來更新 AKS


AKS 發行的行事曆可以參考


  • 之前支援的方式是支援前 3 個GA 版本, 目前  Azure 從 1.19 開始就遵循 12 個月的版本支援原則, 也就是至少一年升級一次 :)

  • 另外也可以考慮 LTS 版本


升級的部份, 主要參考官方文件


首先查詢 az 版本

$ az  --version


azure-cli                         2.65.0 *


等等要取得可以升級的 AKS Kubernetes 版本需要 Resource Group 與 AKS 名稱


如果要列出 Resource Group 可以使用 az group 指令


$ az  group  list --output  table


Name                                  Location      Status

------------------------------------  ------------  ---------

k8s-lab-2022                                    eastus         Succeeded

MC_k8s-lab-2022_sakana-20230617_eastus  eastus         Succeeded




如果要列出某個 Resource Group 下面的資源可以使用 az resource list 指令


> az  resource  list  --resource-group  k8s-lab-2022 --output  table


Name                                             ResourceGroup    Location    Type                                        Status

-----------------------------------------------  ---------------  ----------  ------------------------------------------  --------

sakana-20230617                                  k8s-lab-2022     eastus      Microsoft.ContainerService/managedClusters

CPU Usage Percentage - sakana-20230617           k8s-lab-2022     global      microsoft.insights/metricalerts

Memory Working Set Percentage - sakana-20230617  k8s-lab-2022     global      microsoft.insights/metricalerts




接下來就是取得可用的叢集版本


> az  aks  get-upgrades  --resource-group  k8s-lab-2022  --name  sakana-20230617


{

  "agentPoolProfiles": null,

  "controlPlaneProfile": {

    "kubernetesVersion": "1.28.3",

    "name": null,

    "osType": "Linux",

    "upgrades": [

      {

        "isPreview": null,

        "kubernetesVersion": "1.29.10"

      },

      {

        "isPreview": null,

        "kubernetesVersion": "1.28.0"

      }

    ]

  },



恕略


升級叢集

  • 一次只能升級一個次要版本。 例如,您可以從 1.23.x 升級至 1.24.x,但無法直接從 1.23.x 升級至 1.25.x。

  • 以我這個例子就是只能先升級到 1.29.x


> az  aks  upgrade  --resource-group  k8s-lab-2022  --name  sakana-20230617 --kubernetes-version  1.29.10


Kubernetes may be unavailable during cluster upgrades.

 Are you sure you want to perform this operation? (y/N): y

Since control-plane-only argument is not specified, this will upgrade the control plane AND all nodepools to version 1.28.3. Continue? (y/N): y


  • 我的實驗 cluster 是單一 node, 所以升級的時候節點是先建後拆, 所以交換的時候可能會有短暫服務 connection timeout


執行完畢之後, 驗證升級


> az  aks  show  --resource-group  k8s-lab-2022  --name  sakana-20230617 --output  table


Name                     Location    ResourceGroup    KubernetesVersion    CurrentKubernetesVersion    ProvisioningState    Fqdn

-----------------------  ----------  ---------------  -------------------  --------------------------  -------------------  ------------------------------------------------------------

sakana-20230617  eastus      k8s-lab-2022     1.29.10               1.20.10                      Succeeded 



  • 依照輸出的訊息可以知道已經升級成功


再次確認可升級的版本


$ az  aks  get-upgrades  --resource-group  k8s-lab-2022  --name  sakana-20230617


看了一下決定升級到 1.30.6


$ az  aks  upgrade  --resource-group  k8s-lab-2022  --name  sakana-20230617 --kubernetes-version  1.30.6


升級速度安排就看個人了



先記下來

~ enjoy it


Reference:


星期四, 10月 10, 2024

GCP Cloud Shell Editor 與 C 編譯小記

GCP Cloud Shell Editor 與 C 編譯小記



今天來寫使用 GCP 的 Cloud Shell Editor 小記


先來寫一下為何會寫這篇的情境

  • 想要有一個快速的 IDE 環境可以使用

    • 公司使用 Windows WSL (openSUSE Leap 15.5) vscode

    • 家裡使用 Macbook Air 15 with M3

    • 因為是不同的 OS 與不同的架構 (Intel and ARM)

  • Cloud Shell 支援 Gemini Code Assist 以及預設裝了開發套件

  • 參加 C 語言的小課程, 希望有個方便的環境開發


先來談談 GCP 的 Cloud Shell

有使用 GCP 的朋友, 非常強烈推薦大力使用目前免費的服務

之前有在網路上看到國外的網友於 2022 年計算 cloud shell 這個免費服務的價值


快速整理一下 現在的規格

  • OS: Ubuntu 24.04 

    • $cat  /etc/*release

  • 4 vCPU - Intel Xeon 2.20 GHz

    • $ cat /proc/cpuinfo | grep CPU

  • 16 G MEM

    • $ free -m

  • 120 GB Persistent-balanced HD for system + 5 GB persistent for home

    • $ lsblk | grep disk

    • $ curl -Ss "http://metadata.google.internal/computeMetadata/v1/instance/disks?recursive=true&alt=text" -H "Metadata-Flavor:  Google" | grep type


每週可以使用 50 小時

觀察方式, 點選 Session information 圖示 -- > Usage Quota


如果用 GCP 計算機計算費用

一個月是 NT$ 1,457.37


剛剛提到有 C 語言小課程, 檢查一下目前的套件狀況


$ gcc  --version


gcc (Ubuntu 13.2.0-23ubuntu4) 13.2.0

Copyright (C) 2023 Free Software Foundation, Inc.

This is free software; see the source for copying conditions.  There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


$ g++  --version


g++ (Ubuntu 13.2.0-23ubuntu4) 13.2.0

Copyright (C) 2023 Free Software Foundation, Inc.

This is free software; see the source for copying conditions.  There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


$ gdb  --version


GNU gdb (Ubuntu 15.0.50.20240403-0ubuntu1) 15.0.50.20240403-git

Copyright (C) 2024 Free Software Foundation, Inc.

License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software: you are free to change and redistribute it.

There is NO WARRANTY, to the extent permitted by law.


如果要編譯 C , Cloud Shell Editor 是使用 Code OSS, 也是可以裝 Extension 的

點選左方的 Extension 圖示, 搜尋 C/C++

我安裝了 C/C++ Runner, C/C++ Config, C/C++ Extension Pack



接下來可以進行測試

建立一個 test.c 的空白檔案

這個時候會看到提示 按 cmd + i 可以問 Gemini Code Assist



在檔案內輸入 // print "hello world" to the console 然後按 Ctrl + Enter 請 Gemini Code Assist 產生程式碼

這個時候就會產生範例程式碼

點選 右上角的 Run 圖示 -- > C/C++ Runner: Run File



如果 Debug File 出現錯誤



開啟 launch.json


將裡面的 type 從 cppdbg 改為 lldb


{

  "version": "0.2.0",

  "configurations": [

    {

      "name": "C/C++ Runner: Debug Session",

      "type": "lldb",

      "request": "launch",

      "args": [],

      "stopAtEntry": false,

      "externalConsole": false,

      "cwd": "/home/sakanamax/lab_c",

      "program": "/home/sakanamax/lab_c/build/Debug/outDebug",

      "MIMode": "gdb",

      "miDebuggerPath": "gdb",

      "setupCommands": [

        {

          "description": "Enable pretty-printing for gdb",

          "text": "-enable-pretty-printing",

          "ignoreFailures": true

        }

      ]

    }

  ]

}


應該就可以執行了


另外也可以同步請 Gemini Code Assist 協助, 例如 加上註解




又前進一步


~ enjoy it


References