我的新書AI 職場超神助手:ChatGPT 與生成式 AI 一鍵搞定工作難題的教材投影片已製作完成
歡迎各位有需要的教師和博碩文化索取教材

K8S

  • ,

    如何把docker image推到AKS

    請參考此說明: https://docs.docker.com/cloud/aci-integration/ 首先請登入Azure 會跳出瀏覽器登入Azure的帳號和docker做連接 接著創立aci的context 使用docker context ls可以檢視現在有哪些context 接著這樣就可以把image部屬上AKS了 推送自建的container https://learn.microsoft.com/zh-tw/training/modules/intro-to-containers/7-exercise-deploy-docker-image-to-container-instance 1.建立容器 2. 改名並推送上去

  • ,

    軟件定義存儲(Software Defined Storage,SDS)介紹

    甚麼是SDS 軟件定義存儲(Software Defined Storage,SDS)是一種存儲技術的方法論,它通過軟件層面的控制和管理來處理存儲資源,使得存儲系統更加靈活、可擴展和易於管理。傳統的存儲系統通常使用專用的硬體設備和控制器來管理數據存儲,而軟件定義存儲採用軟件定義的方法,將存儲處理功能抽象出來,從而使得存儲資源可以根據需要進行分配和管理。 SDS的主要特色 SDS的工作原理 借助軟件定義的存儲,應用程序可以動態配置所需的容量、性能和保護的精確組合——不多也不少。SDS 為存儲帶來了服務器虛擬化為計算帶來的簡單性、效率和成本節約。它允許您消除低效的專用硬件,並使用更靈活、透明和自動化的系統。此外,該存儲解決方案可與現有存儲解決方案和雲配合使用。 SDS軟件通過虛擬數據平面對底層存儲進行抽象;這使得虛擬機(和應用程序)成為存儲配置和管理的基本單元。 通過在應用程序和可用資源之間創建靈活的分離,普及的虛擬機 管理程序 可以平衡應用程序所需的所有 IT 資源(計算、內存、存儲和網絡)。 SDS與Persistent Volumes SDS(軟件定義存儲)和Kubernetes中的Persistent Volumes(持久化存儲卷)是相關的概念,它們都涉及到在容器化環境中對存儲資源的管理。 Kubernetes是一個用於容器化應用程序管理和部署的開源平台,而Persistent Volumes(PV)是Kubernetes中用於持久化存儲的抽象層。PV允許將持久化存儲資源(例如Amazon EBS、Google Persistent Disk、NFS、Ceph等)與Kubernetes集群中的Pod相關聯,從而實現容器應用程序的持久化數據存儲。 Kubernetes的Persistent Volumes(PV)提供了對多種存儲技術的抽象,因此你可以使用多種技術來實現PV。以下是一些常見的PV實現技術: SDS則是一種更廣泛的存儲技術,它可以用來管理和處理各種存儲資源,並提供更高級別的抽象和自動化。在Kubernetes中,PV可以使用SDS技術來實現,例如使用Ceph、GlusterFS等SDS解決方案作為Kubernetes Persistent…

  • ,

    在K8S內ksoftirqd耗費大量CPU

    問題描述 我們在K8S內架設串流伺服器,在做loadtest時發現,當流量變高之後,K8S用來管理線程的cadvisor所調用的ksoftirqd會占掉非常大的CPU使用率,並導致整個worker node變得緩慢。 相關的問題說明請見: Debugging network stalls on Kubernetes 形成原因 這是因為當使用 Kubernetes 的 NodePort 來公開一個服務時,它將在每個工作節點上開放一個端口,以便外部可以連接到該端口,並將流量轉發到服務的後端 Pod 上。當流量高峰期間,可能會導致節點的 CPU 負載增加,並導致大量的 IRQ 請求,這是因為每個數據包都會觸發一次 IRQ 請求。 IRQ是甚麼 IRQ…

  • ,

    使用Helm來部署K8S

    Helm介紹 Helm 是一個 Kubernetes 包管理器,它可以幫助您在 Kubernetes 上部署和管理應用程序。Helm 允許您定義、安裝和升級 Kubernetes 應用程序,並且可以管理它們的依賴關係。 Helm 由兩部分組成:Helm CLI 和 Helm Charts。Helm CLI 是一個命令行界面,用於管理 Helm Charts。Helm Charts 是一個包含 Kubernetes 资源描述文件的打包文件,例如 Deployment、Service、Ingress、ConfigMap…

  • , ,

    Prometheus Exporter: json-exporter

    甚麼是JSON Exporter JSON Exporter是一個Prometheus的exporter(指標收集器),它能夠從提供JSON格式的API中收集指標數據,並將這些數據轉換為Prometheus所支持的格式,以便Prometheus進行分析和視覺化。 JSON Exporter的運行方式是通過設置JSON配置文件,其中包括API端點和相關的指標數據,然後使用Prometheus的配置文件將JSON Exporter添加到Prometheus的targets列表中。 JSON Exporter可以收集各種不同類型的指標數據,例如計數器(counters)、量規(gauges)和直方圖(histograms)等,並可以根據需要對數據進行轉換和聚合。 如何設置Exporter 在官方的Writing exporters文件中,有下面這一段 Each exporter should monitor exactly one instance application, preferably sitting right beside it…

  • , ,

    HorizontalPodAutoscalers by customize metric

    設定擴充的行為,sacle down及up的時候所做的行為,這邊的設定是假如維持300秒都穩定相同狀況,則做HPA縮放,最少維持這種狀態60秒,一次增加1個Pod​ 這邊則設定要參考的數值,若是要使用自訂義資料,則describedObject這邊要設定的與我們在Rules裡面設定的一致,target部分則設定每一個pods的目標值為多少​ 下面scaleTargetRef的部分則是設定要做HPA的目標是甚麼,有可能是Services,這邊做HPA的目標則為Pod​ stream_total_clients_by_pod是我們的客製化變數,這個變數是來自於普羅米修斯,要把普羅米修斯的變數給k8s使用,請參見 http://claire-chang.com/2022/12/16/prometheus-rule-for-alert/ 這邊很重要的是可以看到label裡面有name: eventqueue,在Prometheus Rule裡一定也要加上labels: service: eventqueue 這樣這個值才會可以被輸出給普羅米修斯使用 如下圖: 其他更多的設定值請見: https://docs.openshift.com/container-platform/4.9/nodes/pods/nodes-pods-autoscaling.html​

  • ,

    查看普羅米修斯某的POD內所有的值

    Prometheus 指令 使用的指令如下: 解釋如下: 設定ServiceMonitor 在可以看到所有的值之後,就可以確認你的ServiceMonitor是否正確,可以來設定ServiceMonitor讓普羅米修斯監控正確的對象 以下為一個簡單的範例 更多關於ServiceMonitor可用的設定值請見:https://docs.openshift.com/container-platform/4.9/rest_api/monitoring_apis/servicemonitor-monitoring-coreos-com-v1.html

  • ,

    使用kubectl進入某個pod裡的某個container的指令

    使用kubectl進入container 若要使用 kubectl 進入某個 pod 裡的某個 container,您可以使用 kubectl exec 命令。以下是一個範例指令: 在這裡,請將 <pod_name> 替換為您想要進入的 pod 的名稱,將 <container_name> 替換為您想要進入的 container 的名稱。這個指令會使用 /bin/bash shell 進入 container,如果該 container 沒有…

  • 在K8S內node js紀錄log的解決方案

    千萬不要使用PM2 PM2是一個在linux裡面管理nodejs程序的好工具,它可以讓nodejs在死掉時自動控制重啟,並可於重啟次數超過時停止重啟 但是由於在K8S之中,這種管理的機制已經交由K8S去管理了,因此,若再於裡面包一層PM2,很容易出問題 可能發生的問題 pm2 一開始起來時會依你的參數去試著把 resource 給最大化,所以會一下子把 resource 吃滿,這會讓 k8s 覺得 是不是這個 pod 又很忙了,就馬上又起一個 pod 要來試著接手 pm2 會自己重啟 node process : 這會讓 k8s 不知道其實…

  • ,

    在K8S裡為Prometheus增加exporter: 以pushgateway為例

    PUSHGATEWAY介紹 Prometheus Pushgateway 的存在是為了允許臨時和批處理作業將其指標公開給 Prometheus。由於這類工作存在的時間可能不夠長,無法被抓取,因此他們可以將指標推送到 Pushgateway。Pushgateway 然後將這些指標公開給 Prometheus。 何時使用 PUSHGATEWAY 我們只建議在某些有限的情況下使用 Pushgateway。盲目地使用 Pushgateway 而不是 Prometheus 通常的 pull 模型來進行一般指標收集時,有幾個陷阱: 當通過單個 Pushgateway 監控多個實例時,Pushgateway 既成為單點故障又成為潛在的瓶頸。 up 你失去了普羅米修斯通過指標(在每次抓取時生成)的自動實例健康監控。 Pushgateway…


17年資歷女工程師,專精於動畫、影像辨識以及即時串流程式開發。經常組織活動,邀請優秀的女性分享她們的技術專長,並在眾多場合分享自己的技術知識,也活躍於非營利組織,辦理活動來支持特殊兒及其家庭。期待用技術改變世界。

如果你認同我或想支持我的努力,歡迎請我喝一杯咖啡!讓我更有動力分享知識!