星期二, 2月 13, 2024

Kubecost 2.0 安裝 with Helm 小記

 



Kubecost 2.0 安裝 with Helm 小記


OS: openSUSE Leap 15.5

Kubernetes:  1.28.3 in  Azure AKS

Helm: 3.13.2


上次實驗 kubecost 是 2022 年了, 可以參考上一篇筆記


參考官方安裝文件


開始之前先觀察資訊


> helm  version


version.BuildInfo{Version:"v3.13.2", GitCommit:"2a2fb3b98829f1e0be6fb18af2f6599e0f4e8243", GitTreeState:"clean", GoVersion:"go1.20.10"}


> helm  list


NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION


> helm  repo  list


NAME    URL                                      

kubecost https://kubecost.github.io/cost-analyzer/

grafana https://grafana.github.io/helm-charts    

gitlab  https://charts.gitlab.io/      


因為目前用的 Kubernetes Server 為 1.28.3, 原來的 kubectl 版本為 1.26

  • 建議是不要差異超過 1  個版本以上, 所以 1.28 的 server, client 至少就要 1.27

  • 我使用 > gcloud  components update  kubectl 升級我的 kubectl 


> kubectl  version


Client Version: v1.28.5

Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3

Server Version: v1.28.3




Kubecost 這次安裝把上次的 3 個步驟整合在一個指令中


> helm  install  kubecost  cost-analyzer \

--repo  https://kubecost.github.io/cost-analyzer/ \

--namespace  kubecost  --create-namespace \

--set  kubecostToken="c2FrYW5hQGN5Y3Uub3JnLnR3xm343yadf98"


NAME: kubecost

LAST DEPLOYED: Tue Feb 13 15:50:12 2024

NAMESPACE: kubecost

STATUS: deployed

REVISION: 1

NOTES:

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

Kubecost 2.0.2 has been successfully installed.


Welcome to Kubecost 2.0!


Kubecost 2.0 is a major upgrade from previous versions and includes major new features including a brand new API Backend. Please review the following documentation to ensure a smooth transition: https://docs.kubecost.com/install-and-configure/install/kubecostv2


For the full list of enhancements, please see our release notes: https://github.com/kubecost/cost-analyzer-helm-chart/releases/tag/v2.0.0


When pods are Ready, you can enable port-forwarding with the following command:


    kubectl port-forward --namespace kubecost deployment/kubecost-cost-analyzer 9090


Then, navigate to http://localhost:9090 in a web browser.


Please allow 25 minutes for Kubecost to gather metrics. A progress indicator will appear at the top of the UI.


Having installation issues? View our Troubleshooting Guide at http://docs.kubecost.com/troubleshoot-install


  • 這邊如果本來沒有 kubecost  的 namespace, 會一併建立

  • 安裝名稱為 kubecost


再次觀察資訊


> helm  list  -A


NAME      NAMESPACE REVISION UPDATED                                STATUS  CHART              APP VERSION

kubecost  kubecost 1       2024-02-13 15:50:12.958799828 +0800 CST deployed cost-analyzer-2.0.2 2.0.2      

my-release default  1       2023-06-30 14:18:02.033192523 +0800 CST deployed grafana-6.57.4     9.5.5      


  • 這邊記得用 -A 來列出所有的 namespace  的 helm 安裝, 因為有很多套件都會有獨立的 namespace, 如果沒有切換過去, 或是使用 -A 不會顯示


> kubectl  get  deployments


NAME                         READY   UP-TO-DATE   AVAILABLE   AGE

kubecost-cost-analyzer       1/1     1            1           14m

kubecost-forecasting         1/1     1            1           14m

kubecost-grafana             1/1     1            1           14m

kubecost-prometheus-server   1/1     1            1           14m



這樣 kubecost 就安裝完成了, 只要 3 步驟

如同提示那樣, 透過 kubectl port-forward 來觀察 kubecost


> kubectl  port-forward  --namespace  kubecost  deployment/kubecost-cost-analyzer  9090


打開瀏覽器的 http://localhost:9090





點選要觀察的 Cluster

首先會出現 Overview 的介面, 但是一開始不會馬上出現資料, 他需要一段時間


放一段時間畫面大概如下



Monitor 的 Allocation 的部份可以依照你指定的分類來觀察費用

例如 7 天內按照 Namespace 來觀察



或是按照 Pod 來觀察



有不同的分類方式


Assets 則可以用不同的角度來看花費




Savings 則是最有趣也是最重要的區塊




會根據你的使用量, 提出建議, 例如可以調整 Cluster nodes 的大小來進行節費


相關資訊也可以參考官方文件



又向 Kubernetes 前進一步


~ enjoy it



Reference


星期日, 2月 11, 2024

Azure AKS 升級小記


Azure AKS 升級小記


OS: openSUSE Leap 15.5

azure-cli:  2.38.1


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

1.27.7 到今年 7 月, 所以繼續來更新 AKS


AKS 發行的行事曆可以參考



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


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


首先查詢 az 版本

> az  --version


azure-cli                         2.38..1 *


等等要取得可以升級的 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.27.7",

    "name": null,

    "osType": "Linux",

    "upgrades": [

      {

        "isPreview": null,

        "kubernetesVersion": "1.28.3"

      },

      {

        "isPreview": null,

        "kubernetesVersion": "1.28.0"

      }

    ]

  },



恕略


升級叢集

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

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


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


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.28.3               1.28.3                      Succeeded 



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


再次確認可升級的版本


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


{

  "agentPoolProfiles": null,

  "controlPlaneProfile": {

    "kubernetesVersion": "1.28.3",

    "name": null,

    "osType": "Linux",

    "upgrades": null

  },



目前已經無升級版本

升級速度安排就看個人了



先記下來

~ enjoy it


Reference: