[爆卦]template用法是什麼?優點缺點精華區懶人包

雖然這篇template用法鄉民發文沒有被收入到精華區:在template用法這個話題中,我們另外找到其它相關的精選爆讚文章

在 template用法產品中有3篇Facebook貼文,粉絲數超過2,850的網紅矽谷牛的耕田筆記,也在其Facebook貼文中提到, ref: https://blog.argoproj.io/argo-workflows-2021-survey-results-d6fa890030ee 這篇是由 Argo 官方所發表的統計文章,該文章主要是探討 Argo Workflows 的使用,總共有效的問券有 60 份 你是誰 1. 3...

  • template用法 在 矽谷牛的耕田筆記 Facebook 的最佳貼文

    2021-08-22 08:00:09
    有 24 人按讚

    ref: https://blog.argoproj.io/argo-workflows-2021-survey-results-d6fa890030ee
    這篇是由 Argo 官方所發表的統計文章,該文章主要是探討 Argo Workflows 的使用,總共有效的問券有 60 份

    你是誰
    1. 32% DevOps Engineer
    2. 26% Software Engineer
    3. 15% Architect
    4. 9% Data Engineer

    使用案例(前六大項)
    1. Infrastructure Automation
    2. Data Processing
    3. CI/CD
    4. Batch Processing
    5. Machine Learning
    6. ETL

    由於問券內容中大部分都是 DevOps 相關職缺,所以答案會偏向 Infrastructure, CI/CD 也是不太意外。

    最受歡迎的功能(按照名次排序)
    1. Workflow Template
    2. CronWorkflows
    3. API
    4. Prometheus Metrics
    5. Workflow Archive
    6. Golang/Java/Python Clients
    7. SSO
    8. WebHooks
    9. Workflow Reports
    10. Node Offloading
    11. Memoization
    12. Semaphores/Mutexes

    Argo 官方對於這個評比是有點經驗,本以為會更多人使用(6)與(12),不過這些功能實際上的釋出也是相對新。

    規模
    1. 大部分的使用者一天會運行 10~100 個左右的 workflows
    2. 有三個使用者每天會運行 1000 個以上的 workflows
    3. 大部分使用者每個 workflow 運行的 pod 數量範圍為 10~100
    4. 有兩個使用者每個 workflow 運行的 pod 數量超過 10,000

    導入生產環境的困境
    1. 有七個人表示習慣使用 Python,所以使用 YAML 語法相對困難
    2. 有三個人表示需要去熟悉 Cloud-native/Container 的相關用法與概念

    為什麼使用 Argo Workflows
    1. 28 個人表示因為其是 Cloud Native/Kubernetes 相關專案
    2. 有六個人表示 Argo Workflow 是目前最好用的 workflow 專案
    3. 有五個人表示輕量與容易上手
    4. 有五個人表示與 Argo CD 可以輕鬆整合無煩惱

    對 Argo Workflow 有興趣的人可以參考這個專案,其還可以組合出符合 DGA 拓墣的關係圖,讓你的 job 組合變化多端

  • template用法 在 矽谷牛的耕田筆記 Facebook 的最讚貼文

    2021-06-08 08:00:07
    有 45 人按讚

    本文延續前一篇文章,作者探討十五種 Kubernetes 不該使用的部署與維運模式,總共三篇,每篇五種。

    Misusing Health probes
    Kubernetes 內有設定三種不同的 Probe,分別是 Readiness, Liveness 以及 Startup,前兩者 Probe 比較常被提到而且會不停的執行,而 Startup 則是會被運行一次的 Probe。
    作者認為所有開發者都要去研究這三種的差異並且小心使用。
    文章中列舉一些常見的錯誤用法
    1. 用相同的 endpoint 同時處理 liveness 以及 readiness
    2. 繼續沿用過往針對 VM 所設計的 health endpoint,應該要針對容器環境重新設計
    3. Health 的檢查過於複雜,導致需要花費一個不可預測的時間
    ..


    Not using the Helm package manager
    作者認為目前 Kubernetes 生態系中只有一個 Package Manager,也就是 Helm,就像是常見的 apt/rpm 等套件般去管理不同的應用程式。
    然而 Helm 卻很容易被誤解並拿去跟其他工具比較,譬如 Kustomize, Jsonnet.. 等。
    從本質上來看 Helm, Helm 本身有 Package 的管理能力,同時也透過 Template 的方式來產生適合於不同環境的 YAML 檔案。 而上述其他的比較解決方案基本上都只能完成後者,透過如 overlay (kustomize) 等不同的方式來產生不同的 YAML,但是本身卻沒有去管理這些安裝好的應用程式。

    如何產生 YAML 這些是部署前的流程,而上述的那些工具對於檔案部署到 Kubernetes 後就無能為力了,譬如想要刪除任何安裝到 Kubernetes 資源的應用程式,必須要找到原始的 YAML 檔案。而 Helm 則不一樣,本身會於 Cluster 內去記錄這些這些資訊,讓你可以透過 helm 的指令去刪除這些安裝好的應用程式。

    作者認為除非團隊很明確的瞭解與設計其工作流程,確保 Helm 帶來的部署與管理流程不需要,否則推薦任何團隊都可以採用 Helm,特別是之前因為 Helm2 Tiller 而厭惡的人必須要來試試看 Helm3

    Not having a strategy for secrets
    如同先前探討的 Configuration 不應該直接嵌入 Contaienr Image 一樣,Secret 這類型的物件也一樣,作者看到團隊常有下列錯誤
    1. 使用各種不同的方式來管理 Secret 物件
    2. 沒有區分好運行期需要的 Secret 與建制時期需要的 Secret
    3. 過於複雜的處理方式導致本地測試與開發過於困難

    相反的,團隊應該要
    1. 選擇一個策略
    2. 所有團隊使用該策略來處理 Secret
    3. 所有的 Secret 應該都要用相同的方式處理
    4. 這樣的機制使得 secret 的管理與追蹤更為容易

    Attempting to solve all problems with Kubernetes
    永遠不要認為 Kubernetes 能夠解決所有問題,團隊必須要理解到 Kubernetes 帶來的優點與缺點,團隊本身的部署與工作流程是否適合使用 Kubernetes。
    也不要想說要把所有服務都搬到 Kubernetes 內,譬如 databases, caching 等,這些本來就存在的解決方案依然可以使用本來的方式繼續部署,不要一相情願地覺得這些東西放到 Kubernetes 內就一定會更好。

    詳細原文可以參考下列連結。

    https://medium.com/containers-101/kubernetes-deployment-antipatterns-part-3-dfbdd2fd3292

  • template用法 在 矽谷牛的耕田筆記 Facebook 的最佳貼文

    2020-12-11 09:00:05
    有 38 人按讚

    Kuberentes 支援的運算資源種類繁多,諸如 Pod, Job, ReplicaSet, DaemonSet, Deployment 以及 StatefulSet.
    其中 StatefulSet 則是特別針對 stateful 應用程式所設計的,實際使用上會有些許小地方與 Deployment 用法不同,譬如
    1. Storage 使用的是 Template 的概念,希望每個 StatefulSet Pod 可以綁定固定的 PV
    2. 名稱採取流水號設計,相對於 Deployment -> ReplicaSet -> Pod 兩層亂數來說, StatefulSet 的名稱更加顯眼
    3. StatefulSet 的 Pod 有網路存取唯一性,搭配 Headless Service,就可以使用固定一組的 DNS 名稱來存取固定 Pod(預設情況下,Pod 重啟 IP 就會不同,要做到固定一致需要不少修改)

    今天這篇文章算是一個入門教學文,主要是跟大家探討什麼是 StatefulSet,以及於 Kubernetes 內該如何使用,使用上有什麼要注意的,以下幫大家節錄部分資訊

    1. StatefulSet 的設計是安全優先,所以預設情況下刪除 StatefulSet 不會連帶刪除使用的 Volume
    2. 使用 StatefulSet 的時候,要記得處理當 Pod 被停止,被刪除時,相關資料的寫入與同步
    3. 預設情況下, StatefulSet 的創建與移除都是一個一個來,創建時由 0-N-1, 移除則反過來。
    4. 對於多節點的 StatefulSet 來說,這些應用程式可能都會需要一些初始化的操作,甚至 leader-election 等相關算法。這意味者 Container(s) Running 不等於 Pod 以及準備好了。
    5. 針對上述概念,使用者一定要仔細的去設定 liveness 以及 readiness,來確保
    6. PostStart/PreStop 的用法與時機也要考慮進去,特別是 PreStop 用得好還可以減少使用端封包無故重送
    7. 研究 disruption budgets 的用法,來確保你的 StatefulSet 運行得更安心
    8. 針對特定的儲存空間使用權限問題,可以考慮使用 fsGroup 來修改,而不用自己寫一堆 shellScript 來做。當然要注意儲存空間檔案過多內容過大的情況,預設的 fsGroup 行為可以會導致你的 Pod 花太多時間來啟動

    原文: https://itnext.io/stateful-applications-in-kubernetes-808a60bc109

    想學習更多關於 Kubernetes 的實戰經驗與基礎設計,可參閱我的線上課程: https://technologynoteniu.github.io/awesome-notes/linux/network/