本篇文章是個經驗分享系列文,作者探討 Kubernetes 內 15 種不被建議的部署策略與模式。
作者之前曾經撰寫過 Contianer 架構底下的部署模式探討,而本系列文(三篇)則是著重於如何將這些 containers 透過 Kubernetes 給部署到生產環境,總共會探討十五種不推薦的模式,接下來的三篇文章將會介紹各五種不好的模式。
Using containers with the latest tag in Kubernetes deployments
任何 container 的 image 都不應該使用 latest,因為 latest 本身沒有任何意義,這會使得維運人員沒有辦法掌握到底當前部署的版本是什麼,更嚴重的情況適當 latest 搭配 PullPolicy:Always 時會產生更為嚴重的問題。因為 Always 的策略導致每次 Pod 部署時都會重新抓取 image,所以一個 deployment 中,多個使用 latest tag 的 Pod 但是其實使用的 image hash 是不同的。
作者認為比較好的做法有
1. 所有 container image 都是不可修改的,一旦建立就禁止覆蓋,有任何改動就進版
2. 部署用的 image tag 使用有意義的版本名稱
補充: 實際上 pull image 也可以使用 sha256,譬如 "docker pull hwchiu/kubectl-tools@sha256:acfb56059e6d60bf4a57946663d16dda89e12bfb1f8d7556f277e2818680e4c8"
Baking the configuration inside container images
任何 contaienr image 建置的時候應該都要往通用的方向去設計,而不是參雜各種設定在裡面。著名的 12-factor app 裡面也有提到類似個概念,建置好的 image 應該要可以 build once, run everywhere,動態的方式傳入不同的設定檔案,而不是把任何跟環境有關的資訊都寫死
舉例來說,如果 image 內包含了下列設定(舉例,包含不限於)
1. 任何 IP 地址
2. 任何帳號密碼
3. 任何寫死的 URL
作者認為比較好的做法有
1. 透過動態載入的方式來設定運行時的設定,譬如Kubernetes configmaps, Hashicorp Consul, Apache Zookeeper 等
2. 根據不同程式語言與框架甚至可以做到不需要重啟容器就可以載入新的設定
Coupling applications with Kubernetes features/services for no reason
作者認為除了很明確專門針對 Kubernetes 使用,或是用來控制 Kubernetes 的應用程式外,大部分的 應用程式包裝成 Container 時就不應該假設只能運行在 Kubernetes 內。作者列舉了幾個常見的使用範例,譬如
1. 從 K8s label/annotation 取得資訊
2. 查詢當前 Pod 運行的資訊
3. 呼叫其他 Kubernetes 服務(舉例,假設環境已經存在 Vault,因此直接呼叫 vault API 來取得資訊)
作者認為這類型的綁定都會使得該應用程式無法於沒有 Kubernetes 的環境運行,譬如就沒有辦法使用 Docker-compose 來進行本地開發與測試,這樣就沒有辦法滿足 12-factor 中的精神。
對於大部分的應用程式測試,除非其中有任何依賴性的服務是跟外部 Kubernetes 綁定,否則這些測試應該都要可以用 docker-compose 來叫起整個服務進行測試與處理。
服務需要使用的資訊應該是運行期間透過設定檔案,環境變數等塞入到 Container 內,這樣也呼應上述的不要將與環境有關的任何資訊都放入 image 內。
Mixing application deployment with infrastructure deployment (e.g. having
Terraform deploying apps with the Helm provider)
作者認為近年來伴隨者 IaC 概念的熱門,愈來愈多的團隊透過 Terraform/Pulumi 這類型的工具來部署架構,作者認為將部署架構與部署應用程式放到相同一個 Pipeline 則是一個非常不好的做法。
將基礎架構與應用程式同時放在相同 pipeline 可以降低彼此傳遞資訊的困難性,能夠一次部署就搞定全部,然而這種架構帶來的壞處有
1. 通常應用程式改動的頻率是遠大於基礎架構的改變,因此兩者綁在一起會浪費許多時間在架構上
假如部署基礎架構需要 25 分鐘而應用
https://codefresh.io/kubernete.../kubernetes-antipatterns-1/
同時也有2部Youtube影片,追蹤數超過2萬的網紅賓狗單字Bingo Bilingual,也在其Youtube影片中提到,第一個單字是 joint、j-o-i-n-t、joint 共同的,例句是: The US, Japan, Canada, the UK, France, Germany, Australia, and New Zealand have written a joint letter to the WH...
「helm是什麼」的推薦目錄:
- 關於helm是什麼 在 矽谷牛的耕田筆記 Facebook 的最佳貼文
- 關於helm是什麼 在 矽谷牛的耕田筆記 Facebook 的最佳貼文
- 關於helm是什麼 在 軟體開發學習資訊分享 Facebook 的最佳貼文
- 關於helm是什麼 在 賓狗單字Bingo Bilingual Youtube 的精選貼文
- 關於helm是什麼 在 魏巍 Youtube 的最讚貼文
- 關於helm是什麼 在 [Kubernetes] Package Manager - Helm 簡介 - 小信豬的原始部落 的評價
- 關於helm是什麼 在 在AKS 中使用Helm 安裝現有的應用程式 - GitHub 的評價
- 關於helm是什麼 在 58、Kubernetes Helm 及其它功能性组件Helm(1) 的評價
helm是什麼 在 矽谷牛的耕田筆記 Facebook 的最佳貼文
原文在這邊: https://www.teamblind.com/post/50-Reasons-Kubernetes-Sucks-S77O8VZ8
不知道大家看完有什麼想法
我個人認真看完後其實覺得真的是幹樵而已,可以單純當作幹話發洩文就好。有些理由沒什麼前後文,不知道想要表達什麼,有些感覺就是剛好自己踩到通點,基本上任何的軟體架構都可以有類似的議題
稍微看了一下
1. 難道你跑 openstack 就沒有這個感覺嗎? 我自己經驗是更痛苦
2. API 不相容這點我倒覺得還好,沒有遇到特別嚴重的,基本上 k8s 都會給予4-5個版本要使用者替換 apiVersion, 不看警告訊息無腦使用不能怪人
3. charts的問題應該是 Helm Charts 的問題,我倒覺得不是 k8s 自己的問題,不喜歡 charts 何不考慮 kustomize.
4,5 兩個應該是軟體發展一定會遇到的問題,任何系統遇到環境升級都是膽戰心驚吧?
9. 不確定是不是 kubectl 輸入到手酸XD,可以考慮 k9s?
10,11 最後談
13. 為什麼你會有一個兩年不升級的k8s叢集才是一個問題? 不如反過來問,如果你覺得兩年不升級沒問題,為什麼會突然想要升級
14. golang 中槍
19. 我覺得還是可以慢慢看,openstack 等VM為主題的 orchestration 實在是太不平易近人,學習曲線太高
...
32(a). 不太能理解 pause container 的問題是什麼XD,除非最小單位變成 Container 而不是 Pod,不然 Pause 的用途我還沒想到要怎麼取代
32(b). 完全同意, secret 帶來的好處只有透過編碼讓文件內容好處理,可以避掉一堆雙引號,分號等問題
10 跟 11 分別幹瞧了 overlay network 與 service mesh 兩個解決方案的痛點,我覺得很有趣的是這兩個點分別是從不同層面來解決問題。
早期大家碰到 Kubernetes 時都可能使用過 Flannel 這套 CNI,大部分情況下都是急於 VXLAN 來建置 overlay network,透過 UDP 標頭來重新包裝封包並且利用 Layer2,3,4 來重新搭建整個架構網路,是一個專注於底層網路L2-L4的解決方案
目前的 Service Mesh 的則是專注於 L7 的網路傳輸,期望能夠打造出一個串連不同 L7 應用程式的服務,譬如 HTTP,gRPC 等,讓這些應用程式的流量會根據不同 L7 的設定而有不同走法與走向。
只是為了轉發這些不同容器間的封包,最快速的做法就是大量利用已知的架構(iptables,route)等機制來控制各別網路連線,我覺得帶來的缺點就是架構非常龐大,規則非常複雜,大家除錯方式就是不停 restart/reboot,很少人真的能夠講清楚到底每個封包是怎麼被修改的
網路的世界真的非常有趣!
helm是什麼 在 軟體開發學習資訊分享 Facebook 的最佳貼文
講師 Viktor Farcic 是 CloudBees 的首席軟體交付策略師和開發者倡導者、Google 開發者專家和 Docker 隊長( Docker Captains )小組的成員,也是一名出版作者。
Viktor Farcic 最大的熱情是 DevOps、Microservices、持續整合( CI,Continuous Integration )、持續交付( CD,Continuous Delivery/Deployment ) 和測試驅動開發( TDD,Test-Driven Development )。
從這 11.5 小時的課程,你會學到
✅如何使用最常用的 DevOps 工具
✅基礎設施即程式碼( IaC,Infrastructure-as-code )的好處
✅如何在營運環境中使用 Terraform
✅如何在 AWS、 Azure 和 GCP 中建立具有 Terraform 的 Kubernetes 叢集
✅如何在 Kubernetes 打包、部署和管理應用程式
✅如何使用 Helm
✅如何建立本地端開發環境
✅無伺服器( Serverless )部署的常見風格是什麼
✅如何部署託管功能為服務( FaaS,Functions as a Service ) ,包括谷歌雲端功能( Google Cloud Functions )、Azure 功能,和 AWS Lambda
✅如何用 Fargate 部署託管容器作為服務 (CaaS,Containers as a Service ),包括 Google Cloud Run、 Azure 容器例項( Azure Container Instances ) 的 AWS ECS
✅如何使用 Knative 部署自我管理容器作為服務 (CaaS,Containers as a Service )
https://softnshare.com/devops-catalog/
helm是什麼 在 賓狗單字Bingo Bilingual Youtube 的精選貼文
第一個單字是 joint、j-o-i-n-t、joint 共同的,例句是:
The US, Japan, Canada, the UK, France, Germany, Australia, and New Zealand have written a joint letter to the WHO.
友邦寫聯合信,支持台灣加入世界衛生大會~昨晚,你有看世衛直播嗎?看到習大大在台上攻白賊,實在是讓人整腹肚火!台灣今年還是無法參加大會,有點哀傷。不過,有好多國家支持台灣加入喔!他們還共同寫了聯合信給世界衛生組織,說台灣應該要參加大會~感謝他們 ❤️ 這個共同的信,就是 joint letter。
https://focustaiwan.tw/politics/202005180007
第二個單字是 tariff、t-a-r-i-f-f、tariff,關稅,例句是:Australia is disappointed by China’s high barley tariffs.
中國用大麥關稅,叫澳洲閉嘴?武漢肺炎害得全球超級慘,很多國家希望成立獨立調查小組,到中國查查,這病毒到底哪裡來的,而「澳洲」也支持調查。然後,中國就在這個節骨眼,提高大麥關稅,拉到超級高,嗯 ... 這有可能是在報復澳洲喔!
什麼意思呢?因為澳洲生產大麥,主要就是賣給中國啦!那中國現在的態度就是,來來來,澳洲你想來賣大麥是不是,先繳超~大把銀子再說,我看你聽不聽話!中國大大提高關稅,這個關稅就是 tariff 。
https://www.abc.net.au/news/2020-05-19/china-barley-tariff-australia-reacts-trade/12261928
第三個單字是 team up with、t-e-a-m 空格 u-p 空格 w-i-t-h、team up with,跟某人或組織合作,例句是:He has teamed up with the Muslim Community Center (MCC) in Brooklyn to provide food to homeless individuals.
回教徒幫助街友,療癒自己~今年的齋戒月碰上武漢肺炎封城,回教徒不能一起聚餐禱告了,很孤單。不過呢,一位紐約的回教徒想到好方法!他與紐約的伊斯蘭社區中心合作,煮飯給街友吃,幫助別人、也療癒自己孤單的心。是不是很溫暖又勵志!跟社區中心「合作」,就是 team up with。
小補充:你聽過回教的「齋戒月」嗎?你可以先想像成回教徒的農曆新年啦,大家會歡聚在一起、聯絡感情。
https://www.aljazeera.com/indepth/features/mosques-closed-nyc-muslims-find-ways-observe-ramadan-200518171405932.html
第四個單字是 in a bid to、i-n 空格 a 空格 b-i-d 空格 t-o、in a bid to,為了,例句是:
The Philippines' largest television network is heading to the Supreme Court in a bid to fight off a shutdown order.
菲律賓新聞台被關掉,這國家機器轉得可厲害啊菲律賓有個超大新聞台,一直批評菲律賓總統,總統看新聞台不順眼,就要他們關門,不准營業。這個超大新聞台當然就很不爽啊,大喊「妨礙新聞自由」!為了撤掉總統的命令,新聞臺要告上最高法院去。這個「為了」撤掉命令,就是 in a bid to。
https://www.aljazeera.com/news/2020/05/forced-air-philippines-duterte-abs-cbn-turns-court-200518070447372.html
最後一個單字是 helm、h-e-l-m、helm,領導地位:A record high number of female CEOs are at the helm of companies on this year's Fortune 500 list.
越來越多女性 CEO 了!你聽過「財富雜誌美國前 500 大企業」嗎?今年的女性 CEO 數量破紀錄,來到新高 🎉 一方面很高興,另一方面有點失望。為什麼呢?這個新高,竟然才 37。500 家企業裡,只有 37 家是女性當家!哎呦希望比例可以更高一點~~~ helm 是「船舵」的意思,當你站在「掌舵位置」,就是站在領導地位囉。
https://abcnews.go.com/Business/record-number-women-ceos-years-fortune-500-list/story?id=70741589
恭喜你!今天學了 5 個新單字,還聽了 5 則國際大事!喜歡我們的 podcast 的話,記得訂閱,然後為我們留 5 顆星的評價。如果有什麼意見,歡迎留言,也可以到 IG 搜尋賓狗單字,私訊我聊聊喔~今天的節目就到這邊,謝謝收聽,下次通勤見 ❤️
helm是什麼 在 魏巍 Youtube 的最讚貼文
什麼?炸彈箭可以刷?哪邊可以拿到超多炸彈箭? 歡迎點擊這個短片,要分享可以搜集到超多炸彈箭的地方!在地圖北方偏西的骷髏池塘的北邊,那邊的地形很特殊、常下雨。那邊的怪喜歡發射炸彈箭。炸彈箭在下雨的時候不會爆炸,所以可以在那邊蒐集沒有爆炸的炸彈箭。要特別注意的是當地除了下雨還會打雷。如果您拿到雷鳴頭盔的話,在這邊刷爆彈箭就不用怕打雷閃電了。
請參考我的過關記錄,祝大家刷箭成功!
$$ 訂閱《魏巍》頻道吧~ https://bit.ly/2EIy6Rz
-----------------------------------------------------------------------------------------------------------
***** 訂閱魏巍頻道 ***** @@ ***** 跟我一起玩遊戲 *****
***** 還會分享各種有趣的短片** @@ ** 趕快去訂閱吧! *****,
————————————————————-------------------------------------------------------------------
#薩爾達傳說 #曠野之息 #魏巍
helm是什麼 在 在AKS 中使用Helm 安裝現有的應用程式 - GitHub 的推薦與評價
瞭解如何使用Helm 封裝工具,在Azure Kubernetes Service (AKS) 叢集中部署容器 ... Helm 是開放原始碼的封裝工具,可協助您安裝和管理Kubernetes 應用程式的生命週期 ... ... <看更多>
helm是什麼 在 58、Kubernetes Helm 及其它功能性组件Helm(1) 的推薦與評價
Kubernetes的重要性不言而喻,本套视频教程面向的人群包括:软件工程师、测试工程师、运维工程师、软件架构师 ... ... <看更多>
helm是什麼 在 [Kubernetes] Package Manager - Helm 簡介 - 小信豬的原始部落 的推薦與評價
Helm is a tool for managing Kubernetes charts. Charts are packages of pre-configured Kubernetes resources. Helm 就有點像是Ubuntu 中的APT 系統, ... ... <看更多>