PVE WatchDog 看門狗 簡介在維運中系統的可觀測性很重要,我們可以透過 watchdog 監測服務是否還活著,watchdog 可以是硬體也可以是軟體,而在 PVE 中兩種(作業系統級與硬體物理級)都有提供,兩種都有提供 自動重啟與定時檢測 的功能 優劣比較 作業系統級優點 不需硬體 Watchdog 裝置即可支援 不需設定即已內建啟用與支援 相容與泛用性最好 缺點 若作業系統死當到連 Softdog...

虛擬化技術認識 SR-IOV 前言在虛擬化平台中,我們作為使用者也會希望不只是 CPU,Disk,Memory 等去虛擬化給虛擬機客機,在 GPU 的部分最基本的是 Passthrough 也就是直通,但她有個致命的缺點,就是他僅能給一台虛擬機客機使用,那 SR-IOV 可以將 GPU 虛擬化並切分資源給多個虛擬機客機 SR-IOV 介紹SR-IOV(Single Root I/O Virtualization) 單根點輸出入虛擬化,是由 Intel 在 2007 年提出的解決方案,而前言提到的 Passthrough 是由 Intel...

PVE VM 不支援 AVX 指令集解決方案 前言前陣子在 PVE 上開了 VM 架設 Docker MongoDB Server,遇到了以下 Log 1234567mongodb | /bin/bash: line 1: mongo: command not foundmongodb |mongodb | WARNING: MongoDB 5.0+ requires a CPU with AVX support, and your current system does not appear to have that!mongodb | see...

PVE VM/CT 備份 前言在維運中機器的備份與還原是必不可少的環節之一,在 PVE 上也提供客機備份與還原的機制,這篇文章會講解有關 PVE 備份相關的知識 備份種類 快照備份 暫停備份 停止備份 快照備份在不停止 VM/CT 的情況下,客機內的程式正常運行,對磁碟進行快照製作備份檔案 暫停備份暫時性的讓客機停下來,進行備份作業,等待備份作業完成後繼續讓客機內的程式運行 停止備份讓客機正常關機後,進行備份作業,會將記憶體內資料完整保留後,再重新啟動客機,是資料最完整的備份方式。 備份壓縮演算法 不壓縮 LZO 壓縮快 GZIP...

K8s DNS K8s DNS其實就跟你所認知的 DNS Server 相同,只不過在 k8s 中 k8s DNS 是用來將 Domain Name 解析成 K8s 上的 Resource 作使用的,而且 K8s DNS 非常彈性,可以運用 DNS + DNS Plugin API 組合成最適合自己的解決方案 K8s DNS 解析過程假設我想要去 Request 一個 K8s Service 同一個 Namespace 1curl non-existent-service 不同的 Namespace 1curl...

K8s 更改 127.0.0.1 成目標IP 查看目前 kubectl config 內容1kubectl config view 找到 clusters 節點下的 cluster 1234- cluster: certificate-authority-data: DATA+OMITTED server: https://127.0.0.1:6443 name: default server 修改成你的目標 IP 保存當前設置內容1kubectl config view --raw > ~/.kube/config 加入至 Config 中1kubectl config...

K8s 服務對外的四種方式 前言剛開始學習 K8s 的時候,你通常會開始寫第一個 Pod 的 YAML 檔案,然而 Pod 裡面的 Service 即便描述了 Port Number 外界還是無法存取 Pod 內的 Service,通常在學習初期會使用 port-forward 的指令來暫時性的將服務對外,那在其他環境中不會用 port-forward,那我們來看看還有哪些方式可以將服務對外出去! HostNetwork與 Docker Network 的 Host mode 相同,直接掛載機器上的網路與 Port 123456789apiVersion: v1kind:...

K8s Helm Chart 是甚麼東西 前言在微服務系統設計中,系統設計隨者時間架構會越來會越大越來越難管理,即便在現今容器化部屬與管理的時代,這樣的問題還是依舊存在,那今天會提到的 Helm 可以一部分的解決這個問題。 Helm ChartHelm 是管理設定檔的工具。Helm 會把 K8s 一個服務中各種元件裡的 yaml 檔統一打包成一個叫做 chart 的集合,然後透過給參數的方式,去同時管理與設定這些 yaml 檔案。 使用一個現有 Helm Chart GitHub 安裝 Helm 下載Release Download 123curl -fsSL -o get_helm.sh...

K8s ConfigMap 設置 前言在 K8s 當中我們去 Deploy 一個 Deployment,其中的 Container 或是 K8s 上的環境我們可能會希望能夠透過一些設置來進行調整,那這時候開發人員就可以透過設計 ConfigMap 與你需要得 K8s Resource 進行綁定並且給予環境變數。 設置 ConfigMap 透過 yml123456apiVersion: v1kind: ConfigMapmetadata: name: django-config # Configmap 名稱data: DEBUG : True # 各種你需要的參數 設置 ConfigMap...

K8s Ingress VS LoadBalancer 前言在學習將 K8s Service 對外的時候,會了解到 Ingress 與 LoadBalancer 設定與概念很類似,常常讓人分不清,本篇會讓大家了解 Ingress 與 LoadBalancer 的差異 LoadBalancer假設使用 Cluster IP 的話 Service 就只能在 K8s 內部使用,因此如果想要對外存取就需要透過 LoadBalancer 協助,LoadBalancer Resource Type 的 Resource 會跟去請求一個對外 IP Ingress與 LoadBalancer 相似,不同於...