這次跟大家分享一個 ConfigMap 相關的小 issue,當透過 configmap 來存放任何 json 格式資料時,某些情況會導致 configmap 內最後存放的資料格式全部跑掉,所有的換行符號都以\n的方式出現於資料中,導致整個 json 變得非常醜陋,這個醜陋會使得想要手動去編輯這個 json 資料非常困難,必須要手動修復後再修改。
最常遇到這個問題的一個情境是,透過 kubectl create configmap xxxx --from-file=xxx.json 的方式將一個已知的 json 轉化成 configmap 的資料並存放。
該 Issue 回報於 2016 然而實際上就算於 k8s v1.19 都還是可以遇到這類型的問題,Issue 列表中有不少人在討論如何解決這個問題,基本上有幾大重點,掌握這些重點就可以避免 json 格式跑版
1. 避免使用 tab,全面使用空白
2. 移除任何 trailing whitespaces
如果有遇到這類型需求的的不彷試試看這些解法
https://github.com/kubernetes/kubernetes/issues/36222
同時也有10000部Youtube影片,追蹤數超過2,910的網紅コバにゃんチャンネル,也在其Youtube影片中提到,...
kubernetes version 在 矽谷牛的耕田筆記 Facebook 的最讚貼文
本篇文章帶來的是 Kubernetes 1.20 的一些整理,到底 Kubernetes 1.20 有什麼改變以及要如何升級舊有的 Kubernetes 到 1.20
官方宣稱該版本有 42 個改進,其中 11 個改進是該內容正式畢業進入 stable 版本, 15 個轉移到 beta 版本而剩下 16 個則是進入 alpha。
1. Volume Snapshot Operations (Stable)
針對容器快照的相關操作正式進入穩定版,要注意的是這個功能必須要使用的 Storage 服務有支援,同時請記得,針對任何的儲存設備,可以使用 CSI 來安裝就使用 CSI。
盡量不要繼續使用 in-tree 的方式去銜接這些設備了,因為所有的維護與修改都轉移到 CSI driver 上
2. Kubectl Debug (Beta)
Kubectl alpha 之前的子指令 debug 已經正式轉移到 beta 版本,未來可以直接使用 kubectl debug 的指令來幫忙一些資源的驗證與處理。
譬如
a. 創建一個 pod 部署到指定的節點上並存取節點上的檔案系統來提供對節點的除錯功能
b. 針對運行 crash 的 pod 除錯
3. Dual IP Stack IPv4/IPv6 (Alpha)
IPv4/IPv6 功能重新實作,未來將可以對單一 Serivce 同時指派 ipv4 + ipv6 的地址,同時也可以針對現存單一 ipv4 的 service 進行轉換
4. Graceful node shutdown (Alpha)
過往刪除 Pod 時都會有所謂的 pod lifecycle 等階段來處理一切狀態,但是當節點被關機時,節點上方運行的 Pod 並不會遵循 Pod lifecycle 來處理。
這個新的功能將會讓 Kubelet 去感知到節點正在關閉,並且能夠針對正在運行的Pod去提供 graceful shutdown 的過程
更多的討論可以參考下列文章或是直接看官方全文,滿多功能都慢慢改變
另外要注意的是,每次改版都要注意 API 是否有改變名稱,非常推薦使用如 kube-no-trouble 這類型的工具去檢查當前部署資源的 APIVersion 是否有即將要被捨棄的,避免 k8s 更新後應用程式都無法部署上去的情況發生
https://faun.pub/whats-new-in-kubernetes-version-1-20-and-how-to-upgrade-to-1-20-x-5ea72f904e7d
kubernetes version 在 矽谷牛的耕田筆記 Facebook 的精選貼文
今天這篇文章要探討的是關於 Kubernetes 內應用程式版本的一些議題。
Kubernetes 提供一個平台供開發者與維運者去安裝各式各樣的應用來滿足各種不同的工作,然而這些應用程式本身都由不同的組織或公司維護,且都有屬於自己的版本發行。
對於維運人員來說,要將這些應用程式安裝到 Kubernetes 內也有眾多選擇,不論是 Helm, Kustomize, Jsonnet 甚至是原生 Yaml,這也意味者一個 Kubernetes 叢集內,可能同時使用多套工具來安裝應用程式
作者的公司遇到的問題就是,我要怎麼知道目前哪些應用程式有新的版本可以更新? 有沒有一個類似 Maven 或是 Scala Steward 之類的工具,可以幫忙檢查所有使用軟體的版本狀態是否有新版需要更新。
作者沒有看到一個適合於 Kubernetes 內的解決方案,但是找到了一個名為 nvchecker (new version chekcer) 的開源專案,並且嘗試使用該開源專案來解決版本更新問題
對於使用 Helm 的應用程式來說,我們可以透過 helm repo 的方式來觀察最新版本,這部分簡單。
但是對於其他的安裝方式,有些可能只能觀察 Github/GitLab 的頁面,或是相關的 Tag 來知道最新的 image 有哪些。
作者於文中示範如何使用 nvcheckr 來檢查不同軟體的最新版本,並且輸出可更新的選項讓管理員人知道有哪些需要處理。
對該議題有興趣的可以點選下列連結觀看全文
https://medium.com/bigdatarepublic/software-versioning-on-kubernetes-806a48480832