ref: https://ably.com/blog/no-we-dont-use-kubernetes
八月第一篇,就來個有趣的文章,來看看 ably 這間 SaaS 公司為什麼沒有使用 Kubernetes,不但當前沒有使用,甚至短期未來內都不會想要使用
更是直接的說如果你有興趣來加入團隊,千萬不要把將 Kubernetes 導入到團隊中是一個可能發生的事情。
我個人覺得這篇文章滿好的,因為是認真的去比較導入 Kubernetes 帶來的改變,而這些改變對團隊來說到底是可接受還是不可接受
而不是所謂的人云亦云,人家要我也要,人家不要我也不要...
文章分成兩部分,前述介紹當前 Ably 的環境架構是什麼,而半部分則是很技術的去探討如果導入 Kubernetes 帶來的好處與壞處是什麼
最終權衡比較之下,會發現導入 Kubernetes 沒有帶來實質上的好處。
文章開頭先簡述了一下 Kubernetes 這幾年的風潮,從最初 Google Borg 的開發開始談起,作者特別提到當初 Borg 的用法可是將一堆實體機器給搭建出一個 Private Cloud 的叢集給團隊使用,
而目前 Kubernetes 更多的用法則是搭建於 Public Cloud 上面的虛擬機器中,透過將 Kubernetes 部署到這些不同的 Cloud Provider 似乎帶來了介面統一的結果,對於 DevOps 人員來說
不同 Cloud Provider 如今看起來都是 Kubernetes 的樣貌。
Ably 目前到底怎麼部署應用程式
Ably 主要使用 AWS 作為其 Cloud Provider,並且於 EC2 機器上使用 docker/container 來部署團隊中的應用程式。
作者團隊中沒有使用任何已知的 Orchestration 服務來管理多節點上的 docker/container,取而代之的則是每個 VM 開機後則會根據 autoscaling group 的機制來判斷
每個機器應該要部署哪種 container/docker。
對於 Ably 來說,團隊中沒有任何 scheduler 相關的服務來調度各種服務,這意味每個 VM 就代表一種服務,所以將 VM 上的服務從 Core 轉換成 frontend 這種行為不會發生。
今天需要針對需求轉換服務時就以 VM 為基準來整批換掉即可。
每個節點上面都會有一個輕量的監控服務,用來確保運作的 Container 如果掛掉後可以被重啟,甚至如果當前運行的版本不符合需求時也能夠將該服務給停止。
流量方面,因為每個 Autoscaling Group 就代表一個服務,所以直接使用 NLB 與 Target Group 來將流量導入該 Autoscaling Group 即可。
至於容器與容器之間的內部流量(譬如 k8s service 等)作者認為也不是太大問題,畢竟每個機器本身都會被 VPC 賦予一個 IP 地址,所以使用上沒有什麼太大的問題。
接下來作者從幾個層次去探討當前設計與使用 Kubernetes 帶來的改變,分別有 (原文很多,這邊摘要不然文章會太長)
題外話,由於 Ably 的 Infra Team 數量有限,所以要考慮 K8s 只會考慮 K8s Service,如 EKS。
1. Resource Management
Ably:
a. 根據服務的需求來決定每個服務要用到的 VM 等級
b. 不需要去煩惱如何處理將多個小服務給部署到一個適合的大 VM 中
c. 作者稱這種行為其實就是 AWS 官方強調的 Right Sizing, 譬如只能跑兩個 Thread 的服務不需要 16vCPUs, 久久寫一次硬碟的服務也不需要一個 90,000 IOPS 的 SSD
d. 選擇一個正確的元件來搭建一個符合服務的 VM 讓團隊可以控制成本同時也減少額外的管理負擔
K8s:
a. 必須要使用一個比較強大等級的 EC2 VM,畢竟上面要透過 Container 部署很多服務
b. 針對那些需要小資源的服務來說,透過這種方式能夠盡可能的榨乾機器的資源,整體效能使用率會更好
c. 但是針對資源量沒有很辦法明確定義的服務則是會盡可能地去吃掉系統上的資源,這種被稱為 nosy neighbors 的常見問題已經不是首次出現了, Cloud Provider 本身就需要針對 VM 這類型的服務去思考如何處理資源使用,而 Cloud Provider 都有十年以上的經驗再處理這一塊
而所有 Kubernetes 的使用者則必須要自己去處理這些。
d. 一個可能的作法則是一個 VM 部署一個服務,不過這個做法跟團隊目前的作法已經完全一致,所以就資源管理這一塊,團隊看不到使用 Kubernetes 的優勢。
2. Autoscaling
Ably:
a. EC2 VM 本身可以藉由 Autoscaling Group 來動態調整需求
b. 有時候也是會手動的去調整 EC2 的數量,基本上手動跟自動是互相輔佐的
c. 團隊提供的是 SaaS 服務,所以其收費是針對客戶實際上用多少服務來收,如果開了過多 EC2 VM,則很多不要的花費與開銷都是團隊要自行吸收
d. 團隊需要一個盡可能有效率的方式能夠即使遇到流量暴衝時也能夠保證良好的服務的機制
K8s:
a. 可以透過不少方式來動態調整 Container 的數量,
b. 甚至可以透過 Cluster autoscaler 來針對節點進行調整,根據需求關閉節點或是產生更多節點
c. 動態關閉節點的有個問題是關閉節點時通常會選擇盡可能閒置的節點,但是閒置並不代表沒有任何服務部署再
上面,因此該節點上的 Container 都要先被轉移到其餘節點接者該目標節點才可以被正式關閉。這部分的邏輯作者認為相對複雜
d. 整體來說,k8s 有兩個動態調整的部分,動態節點與動態服務,而現有的架構只有一個動態節點。所以使用 k8s 則會讓問題變得更多更複雜。
3. Traffic Ingress
Ably:
a. Traffic Ingress 基本上每個 cloud provider 都提供了很好的解決方案,基本上團隊只要能夠維持每個服務與背後的機器的關係圖,網路流量基本上都沒有什麼需要團隊管理的。
b. 使用者會透過直接存取 NLB 或是透過 CloudFront 的方式來存取團隊內的服務
K8s:
a. EKS 本身可以透過 AWS VPC CNI 使得每個 Container 都獲得 VPC 內的 IP,這些 IP 都可以讓 VPC 內的其他服務直接存取
b. 透過 AWS LB Controller,這些 Container 可以跟 AWS LB 直接整合,讓封包到達 LoadBalancer 後直接轉發到對應的 Container
c. 整體架構並不會比團隊目前架構複雜
d. 唯一缺點大概就是這個解決方案是完全 AWS 綁定,所以想要透過 k8s 來打造一個跨 Cloud Provider 的統一介面可能就會遇到不好轉移的問題。
4. DevOps
Ably:
a. 開發團隊可以透過簡單的設定檔案來調整部署軟體的版本,後續相關機制就會將 VM 給替換掉,然後網路流量也會自然的導向新版服務
K8s:
a. 開發團隊改使用 Kubernetes 的格式來達到一樣的效果,雖然背後運作的方式不同但是最終都可以對開發團隊帶來一樣的效果。
上次四個分析基本上就是,使用 k8s 沒有帶來任何突破性的好處,但是 k8s 本身還有其他的功能,所以接下來作者想看看 k8s 是否能夠從其他方面帶來好處
Multi-Cloud Readiness
作者引用兩篇文章的內容作為開頭,「除非經過評估,否則任何團隊都應該要有一個跨 Cloud-Provider 的策略」
作者表明自己團隊的產品就是那個經過評估後斷言不需要跨 Cloud Provider 策略的團隊,同時目前沒有往這個方向去追求的打算。
同時作者也不認為 K8s 是一個能夠有效達成這個任務的工具。舉例來說,光 Storage 每家的做法都不同,而 K8s 沒有辦法完全將這些差異性給抽象畫,這意味者開發者終究還是要針對這些細節去處理。
Hybrid Cloud Readiness
管理混合雲(Public Cloud + Private Cloud based on Bare-Metal servers)是作者認為一個很合理使用 K8s 的理由,畢竟這種用法就跟當初 Google Borg 用法一致,是經過驗證可行的。
所以 Ably 如果有計畫要維護自己的資料中心時,底層就會考慮使用 Kubernetes 來管理服務。畢竟這時候沒有任何 Cloud Provider 提供任何好像的功能。
不過 Ably 目前沒有任何計畫,所以這個優點也沒有辦法幫助到團隊
Infrastructure as Code
團隊已經大量使用 Terraform, CloudFormation 來達成 IaC,所以透過 k8s YAML 來維護各種架構不是一個必要且真的好用的方式。
Access to a large and active community
另外一個很多人鼓吹 K8S 的好處就是有龐大的使用者社群,社群內有各種問題分享與探討。
作者認為
a. AWS 的使用者社群數量是高於 Kubernetes
b. 很多情況下,一個迭代太快速的產品其實也不一定對團隊有太大的幫助。
c. 很多人都使用 k8s,但是真正理解 k8s 的人微乎其微,所以想要透過社群來幫忙解決問題其實比你想像的還要難,畢竟裡面的問題太雜,很多時候根本很難找到一個真正有效的答案。
Added Costs of Kubernetes
為了轉移到 K8s, 團隊需要一個全新的 team 來維護 k8s 叢集以及使用到的所有基本服務。舉例來說,EKS, VPN CNI, AWS LB 帶來的網路好處並不是啟動 EKS 就會有的,
還必須要安裝相關的 Controller 並且進行設定,這些都是額外的維運成本。
如果找其他的服務供應商來管理 Kubernetes,這意味公司就要花費更多的$$來處理,所以對團隊來說,金錢與工作量都會提高,不同的解決方式只是這兩個指標的比例不同而已。
結論:
1. Ably 覺得 Kubernetes 做得很好,但是團隊目前沒有任何計畫去使用它,至少目前這階段沒有看到任何實質好處
2. 仔細評估後會發現,導入 k8s 其實也會帶出不少管理上的問題,反而並沒有減輕本來的負擔
同時也有1部Youtube影片,追蹤數超過2,810的網紅蔓蔓?蔓時尚 Slow Vashion,也在其Youtube影片中提到,還記得當時新冠肺炎爆發之際,第32例確診患者,是一個逃逸移工。 一直存在台灣社會、被當成隱形人的高比例的逃逸外籍移工成了大家擔憂的事情。 只要發生問題,便高呼「徹底查緝逃逸外勞」,彷彿問題就可以被解決💧 誰不愛一份安穩的工作,移工為什麼會要逃跑?政府有檢討政策上對移工的剝削、大眾有承認雇主對移工的剝...
「private用法」的推薦目錄:
private用法 在 矽谷牛的耕田筆記 Facebook 的精選貼文
本篇文章是一個深度介紹文,除了探討 K3S 與 K3D 的關係之外,還針對 K3D 的架構與使用方法很詳細的介紹一番,包含了
1. K3D v3 的特色與架構
2. 如何替換 K3D 裡面的 CNI
3. 如何替換 k3D 預設的 Ingress Controller
4. 使用 private registry 來處理
Kubernetes 的變化版本很多,除了 k3s 之外後來還有 k0s 的出現,每個版本都有自己想要解決的問題,而 k3s 則是一個非常輕量的 Kubernetes 版本,其特色有
1. 使用 Flannel 作為其預設 CNI,不講求太多複雜功能,單純用 VXLAN 打造一個 L2 的 overlay 網路
2. 使用 CoreDNS,與原生一樣
3. 使用 SQLite3 當作預設的 DB,而非 etcd3
4. 使用 Traefik 當作預設的 Ingress Controller,原生 K8s 則把這個主動權交給使用者
5. 使用 Containerd 當作預設的 Container Runtime
而 K3D 就是基於 K3S 的測試環境, K3S in Docker,跟 KIND 類似,只是運行的 Kubernetes 發行版本不同。
相較於 KIND 而已, K3D 的架構稍微複雜一點
1. 為了方便測試與存取,k3D 部署的時候也會部署一個 Nginx Server 來當作簡易的 Load-Balacner,讓 K3D 內的 Ingress 服務可以更簡易的被存取。使用者只需要存取該 Load-Balancer 即可,不需要去針對 Node(Docker) 的 IP 存取
2. 可以支援動態加入與刪除節點
本篇文章算是非常詳細的介紹各種參數用法,對於 K3D 這種測試環境有興趣的可以參考看看
https://yannalbou.medium.com/k3s-k3d-k8s-a-new-perfect-match-for-dev-and-test-e8b871aa6a42
private用法 在 Hapa Eikaiwa Facebook 的最佳貼文
=================================
「すみません」だけじゃない「Excuse」の用法
=================================
「Excuse me?」は日本人にとってとても馴染のある表現ですが、この「Excuse」と言う言葉には「すみませ」以外にも実は色々な意味があり、広範囲で使われます。今回は、日常生活の中でもよく使われる「Excuse」を使った表現を4つご紹介したいと思います。
--------------------------------------------------
1) Excuse me
→「すみません」
--------------------------------------------------
「すみません」を意味するこのフレーズは、基本的に3つの状況で使われます。1つ目は他人に時間を尋ねたり、声をかけて注意を引きたい時、2つ目は会話の最中に申し訳ない気持ちを込めて話を遮る時、そして3つ目は相手の言ったことが聞き取れなかったり、理解できないためもう一度聞き返す時です。
✔相手から失礼なことや侮辱的なことを言われ、イラっとした時に「Excuse me?」と「me」の部分を強調して返答することで、「何だって?」「もう一回言ってみろ」を意味する。
<例文>
Excuse me, is there a bank around here?
(すみません。この辺に銀行はありますか?)
Excuse me, sorry to interrupt but you have a visitor.
(すみません、お話の最中に申し訳ございませんが、お客様がお見えです。)
Excuse me, I didn't catch that. Could you repeat that?
(すみません。聞き取れませんでした。もう一度言っていただけますか?)
Excuse me, what did you call me?
(何だって?私のことをなんて呼んだ?)
--------------------------------------------------
2) Excuse my _____.
→「〜をお許しください」
--------------------------------------------------
この表現は、下品な言葉遣いをした時や小さなミスをした時、マナー違反をした時や知識不足で補足説明を求める時などに使われます。例えば、出会ったばかりの人にひどい上司について話をする際、「Excuse my language but my supervisor is an asshole.(下品な言葉遣いで申し訳ないのですが、私の上司は本当に最低な人で)」と表現することで、汚い言葉を使ったことに対して許して欲しい気持ちを込めることができます。
✔「Excuse my French」と言う決まり文句があり「下品な言葉を使ってすみません」を意味する。
<例文>
Excuse my poor pronunciation.
(下手な発音をお許しください。)
Excuse my lack of knowledge but what does CPM stand for?
(知識不足ですみませんが、CPMは何の略ですか?)
Fuck! Sorry, excuse my French.
(“Fuck!”汚い言葉を使ってすみません。)
--------------------------------------------------
3) Excuse someone from
→「〜を免除される」
--------------------------------------------------
この表現は、本来ならば参加や出席をしなければならない行事から特別な理由で免除されることを意味し、正当な理由があり、且つ許可を得た上で免除される意味合いが含まれます。例えば、本来出張に行かなければならなかった同僚が、配偶者の入院で出張を免除されたと言いたい場合、「He was excused from his business trip because his wife’s sick.」という具合に使います。
また似たような表現で、「Excuse oneself from _____」があります。この表現は、周りの許可を得てその場から抜けたり、退席することを意味します。例えば、ジョンさんは顧客対応ためミーティングから退席したと言う場合、「John excused himself from the meeting to deal with a client.」と表現します。
✔誰かとプライベートで話をするため、周りの人に「席を外してもらえないでしょうか?」と聞く場合、「Would you excuse us for a moment?」と言うのが定番。
<例文>
He was excused from class because he was feeling under the weather.
(彼は具合が悪かったため、授業の退席が許されました。)
She excused herself from dinner to take care of an urgent matter.
(緊急事態があったため、彼女は夕食の席を外しました。)
Would you excuse us for a moment? I'd like to talk with Peter in private.
(席を外してもらえないでしょうか?ピーターさんと個人的に話したいことがあります。)
--------------------------------------------------
4) Excuse
→「言い訳」
--------------------------------------------------
日本人に比べアメリカ人は言い訳が多いと言われますが、会話の中で「言い訳」の意味としてExcuseを使っているシーンは実によく目にします。使い方の一例として、いつも言い訳をする友人にうんざりしていると表現する場合、「I’m tired of his excuses.」と言います。
✔「言い訳をする」は「Make an excuse」と表現する。
✔「No excuse」は「言い訳無用」や「言い訳にならない」を意味する。
<例文>
That just sounds like an excuse to me.
(それはただの言い訳にしか聞こえない。)
That's no excuse for being late.
(それは遅刻の理由として通用しません。)
He always makes excuses.
(彼はいつも言い訳をする。)
~~~~~~~~~~~~~~~~~~~
無料メルマガ『1日1フレーズ!生英語』配信中!
通勤・通学などのちょとした合間を利用して英語が学べるメルマガ『1日1フレーズ!生英語』を平日の毎朝6時に配信中!ただ単にフレーズを紹介しているだけではなく、音声を使った学習プロセスが組み込まれているので、メルマガを読むこと自体が学習方法!
https://hapaeikaiwa.com/mailmagazine/
~~~~~~~~~~~~~~~~~~~
private用法 在 蔓蔓?蔓時尚 Slow Vashion Youtube 的最讚貼文
還記得當時新冠肺炎爆發之際,第32例確診患者,是一個逃逸移工。
一直存在台灣社會、被當成隱形人的高比例的逃逸外籍移工成了大家擔憂的事情。
只要發生問題,便高呼「徹底查緝逃逸外勞」,彷彿問題就可以被解決💧
誰不愛一份安穩的工作,移工為什麼會要逃跑?政府有檢討政策上對移工的剝削、大眾有承認雇主對移工的剝削嗎?今天讓我們一起欣賞無主之子,層層剖析台灣外籍移工聘雇的生態系👁
https://youtu.be/Hmwc0oZu1pc
#海上喋血案
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬防雷線▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
任意門🚪
00:00 無主之子
00:14 什麼是剝削?
00:41 一起認識藍領外籍移工吧!
02:37 漁工夜宿船上的悲歌
03:47 阿海在橋墩被警察擊中身亡
04:45 文誠的跳海事件
07:09 阿好因工作意外殘疾,被雇主遣送回國
08:17 為什麼文誠 阿海 子涵不報警?
10:01 文誠劈腿、小蘭破壞家庭,沒有責任嗎?
12:00 剝削問題的根源-歧視
13:41 如何幫助他們改變現況?
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
📷Instagram: @slow_vashion
🔗https://www.instagram.com/slow_vashion/
👩🏻Facebook: 蔓時尚 Slow Vashion
🔗https://www.facebook.com/slow.vashion/
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
[1] Dominion (2018) - full documentary [Official]
https://www.youtube.com/watch?v=LQRAfJyEsko&t=286s
[2] 資產階級與無產階級的關係圖 Bourgeoisie VS Proletariat
http://sabbott4.blogspot.com/2016/09/bourgeoisie-vs-proletariat-1.html
[3] 資產階級
https://en.gegenstandpunkt.com/books/chapter-1-freedom-and-equality-—-private-property-—-abstract-free-will
[4] 國家發展委員會https://www.ndc.gov.tw/Content_List.aspx?n=44CB0EDF55E07A07
勞動統計查詢網https://statdb.mol.gov.tw/evta/jspProxy.aspx?sys=100&kind=10&type=1&funid=wqrymenu2&cparm1=wq14&rdm=I4y9dcIi
[5] 簡介外籍勞工類型與適用法律
https://opinion.cw.com.tw/blog/profile/477/article/8543
[6] 立法院外籍移工困境問題列點
https://www.ly.gov.tw/Pages/Detail.aspx?nodeid=6590&pid=171808
[7] 關於歐盟黃牌
https://www.wealth.com.tw/home/articles/21286
[8]【南方澳斷橋】第6名移工遺體發現
https://www.taiwannews.com.tw/ch/news/3788074
[9] 斷橋畫面
https://www.youtube.com/watch?v=-XZ2RuLNb3k
[10] 中國商務部【关于全面暂停对台渔工劳务合作业务的通知】
http://www.mofcom.gov.cn/aarticle/b/e/200212/20021200059456.html
[11] 宜蘭縣長施政總報吿-南方澳岸置中心 未來轉型成多功能會館
https://ws.e-land.gov.tw/001/2015yilan/177/ckfile/01ca60f6-f643-4213-ba9e-fbeff776209a.pdf
[12] 南方澳斷橋事件監察院調查報告
https://cybsbox.cy.gov.tw/CYBSBoxSSL/edoc/download/30448
[13] 越勞手無寸鐵倒臥 遭9槍擊斃
https://www.coolloud.org.tw/node/89099
[14] 高雄籍遠洋漁船「福賜群」移工墜海案監察院調查報告
[15] 印尼BBC針對「福賜群」移工被虐致死案新聞內容
https://www.tahr.org.tw/news/2392
[16] 報導者【向世界買賣漁工──台灣為何成為人口販運的幫凶?】
https://www.twreporter.org/i/slave-fishermen-human-trafficking-gcs
[17] 報導者【法律縱放下的權宜船與幽靈船主】
https://www.twreporter.org/i/slave-fishermen-agency-shipowner-money-gcs
[18] 報導者【當漁工成為商品──解析仲介與船東的神祕金流】
https://www.twreporter.org/i/slave-fishermen-naham3-focs-gcs
[19]《奴工島:一名蘇州女生在台的東南亞移工觀察筆記》,姜雯
[20] EJF訪問印尼籍漁工影片
https://www.youtube.com/watch?time_continue=9&v=DMfKrYz24xc&feature=emb_logo
[21] 燦爛時光
https://www.facebook.com/btbookstw/
[22] 望見書間
https://www.facebook.com/SoutheastAsianMigrantInspired/
[23] The Slave Ship by J.M.W. Turner
https://www.youtube.com/watch?v=I5qYAuLejGQ
[24] Jonah by Ryder
https://americanart.si.edu/artwork/jonah-21449
[25] TIWA https://www.tiwa.org.tw
[26] One Forty https://one-forty.org
private用法 在 Fetchmode hibernate - Gitanjaliptti.org 的必吃
Hibernate中Criteria的完整用法 (2)_lansky54的专栏-程序员宝宝. cfg. ... weight containers , servers to execute Hibernate Code. private void myMethod () {. ... <看更多>
private用法 在 就需要在用法上精準表達了! 3. Attorney fee & court cost 不管你是 的必吃
Private Career Consulting Firm, profile picture ... “RD” 在電子科技產業發達的台灣職場已經成為一個非常通用的詞,但是在英文用法裡,“A&B”,不會 ... ... <看更多>