工程师们都应该学习和使用Kubernetes,为什么呢?【第一部分:原因】
你好。我来这里是为了推荐家庭使用Kubernetes。
在这个系列中,第一部分会讲述“为什么要做” ,第二部分会讲述“如何做”。
工程师们都应该去学习并掌握Kubernetes,这是绝对必要的原因。
为了自己的提升而努力学习
(钻研←这个字只能在“研钻”和“大钻井盆地”中看到)
如果企业采用Kubernetes,大多数会选择使用在云端运行的托管Kubernetes服务,比如EKS或GKE。然而,由于Kubernetes的命令和清单文件的编写方式是统一的,所以你在自己的Kubernetes环境中学到的知识可以直接应用到工作中去。
在学习必要的业务知识的同时,应当毫不犹豫地使用家庭Kubernetes,以享受其他的好处。
为了节省订阅费用
大部分的SaaS都存在着与之替代的OSS。虽然功能可能不完善,但因为它是OSS,我们可以自由地添加所需功能。例如,Dropbox每年24400日元的费用可以用2TB的外置SSD来进行家庭Kubernetes的文件存储和共享而足够。如果选择便宜的2TB外置SSD,可能只需要不到2万日元的价格,而且可以长时间放心使用,从总费用来看,可能能节省超过10万日元。
然后,我将在后文中提到的是,将这些OSS部署在家庭Kubernetes环境中是最好的选择,因此必须一定要做。
作为自用或家人使用的应用程序的部署目标
自分や身内しか使わないようなアプリ、つまり「常時起動していてほしいがそこまで負荷が高くならないアプリ」のデプロイ先として、無料で使える自宅サーバーを選択するメリットは言わずもがなですが、その中でもおうちKubernetesは特にCI/CDの構築は群を抜いて簡単です。枯れているOSSをデプロイするならまだしも、自作アプリは使っているうちに問題点が気になりすぐに修正したくなるものなので、GithubにPushするだけでテストからデプロイまで自動で完了するCI/CD Pipelineを簡単に構築できるおうちKubernetesは必ずやるべきです。
ちなみに、複数台構成(+α)にすることでおうちKubernetesでも不特定多数のアクセスに耐えうる構成にはできますが、そちらの道は沼に通づるためお勧めはしません。
所有工程师都应该亲自参与Kubernetes的原因。
他の技術と比較した時に「なぜおうちなのか」「なぜKubernetesなのか」について解説します。
なぜおうちなのか
亚马逊弹性容器服务
クラスタを起動しているだけで 0.10 USD/時 の料金がかかります。これは1ドル150円換算だと1万円/月を超えます。おうちKubernetesを使うメリットの1つとして、前述の通り「節約」があります。節約目的の場合にEKSを使わない方が良いのは自明でしょう。
GKE,AKS
クラスタを起動しているだけでかかる料金はありませんが、Podの起動に対してそこそこの料金がかかります。まともに運用しようと思うと、1アプリ+DB系(Kubernetesにホスト)で2~3千円/月くらいになると思います。節約目的の場合には少し高く感じると思います。
如果只想运营一个由Kubernetes的CronJob和FireStore构成的应用,对于GKE,月费可以在数百元以内。您可以参考以下文章以获取更多详细信息。
とはいえこの構成だけでは、3つ挙げたおうちKubenetesの目的のうち「自分用・身内用アプリのデプロイ先として」しか達成できないため、やはりおうちKubernetesは(並行してでも)必ずやるべきです。
安裝Kubernetes到VPS上。
VPSは有力な選択肢ですが、Kubernetesをまともに動かそうと思うと3000円/月くらいのスペックのインスタンスが必要です。1年で3万6千円なので、例えばおうちKubernetes用にミニPCを買ったとしても1年以内に逆転します。
为什么选择Kubernetes?
这个问题的答案是CD(不是CI/CD中的CI部分)。
自宅サーバーは停電やネット回線の不具合等で簡単に落ちます。
そのため、自宅サーバーが落ちていても問題ないようなCDツールを採用しなければなりません。つまりPull型のCDツールを採用すべし、ということです。
Push型とPull型の違いは「誰がCDを発火させるか」です。Githubを使う場合、GithubがCDを発火させていればPush型で、そうでなければPull型です。
例えばJenkinsのWebhookを使った自動デプロイは、GithubがWebhookを叩いて発火させているのでPush型になります。Github Actionsを使って自宅サーバーにSSHしてデプロイコマンドを実行する場合もPush型ですね。
Pull型は、自宅サーバー上で動いているツールがGithubレポジトリを監視し、変更があればGithubから新しいコードを引っ張ってくるようなものです。
Pull型のCDツールを探してみると、ArgoCD等のKubernetes用のCDツールしかまともなものは見つからず、Kubernetesをやるしかないというところに行き着きます。
为什么选择在家使用Kubernetes?
最后,将与不仅限于家庭,还有Kubernetes的竞争对手进行比较。由于一直强调节省成本,所以选择范围可能如下所示。
-
- Lambda
-
- App Runner
-
- Cloud Run
- fly.ioやrender.comといった格安PaaS
どれを使うにしても、DBは無料枠の広いDBaaSを使うことでだいたい対応できると思います。Lambdaや格安PaaSだけでやりくりするのは、可搬性の低い知識だけが溜まっていくことになるためあまりお勧めしませんが、1~2個のアプリを手っ取り早く動かしたいという場合にはありだと思います。
App Runnerはほぼゼロ知識でコンテナを実行できるため、知識習得に時間を取られないという意味でLambdaや格安PaaSよりは良いでしょう。Cloud Runは実務レベルで広く使われているため、勉強のためだとしても使う価値はあると思います。
ただどちらも1アプリあたり数百円/月は想定した方がよく、アプリ数が増えれば増えるほど料金も増えていく点には注意が必要です。
やはりCPU/メモリが耐えられる内はアプリ数がどれだけ増えても無料で運用できるおうちKubernetesは必ずやるべきなのかもしれません。
新增(2023年11月22日)+稍后补充
既然来自不同地方的评论都在这里,我觉得不妨回复一下。
おうちKubernetesは勉強にはなるかもしれないけど可用性がないから、費用対効果(時間対効果)的に割に合わない気がする。仕事で自前でKubernetesを建てることもないだろうし。。(;^_^A
これはPart1の方に書いておけば良かった話なんですが、可用性は諦めて自分・身内用(つまり気づいた時に復旧すれば問題ない)アプリの運用を想定しています。「自己研鑽のために」の箇所で書いた通り、仕事で自前で建てることはなくても仕事に役に立つと思っています。
给我安装 Azure 容器应用
因为我没怎么用过,所以我悄悄地省略了一些东西,希望不要暴露出破绽。我并不求原谅,但请不要夺走我女儿的生命。
主语很大
我也这么想。
主語広いのは「扇情的なタイトルを付けたい」という僕の気持ちと、Qiitaのタイトルの文字数制限がせめぎ合った結果ですソフトウェアエンジニアにすら限定できていなくてかなり無理はあるので「読者たち、良い感じに汲み取ってくれ!」という信頼の気持ちでこのまま投稿しました https://t.co/CXBlbvDv1u— もりた (@takumi3488) November 22, 2023
“除了 ArgoCD 这个专为 Kubernetes 设计的持续交付工具,我没找到别的靠谱的东西。” 是吗?其实用 Flux、JenkinsX 或者 Spinnaker 也不错啊。虽然都是用于 Kubernetes 的。
「ArgoCD等のKubernetes用のCDツールしか」と書いて後でArgoCDに限定していくつもりが間違えてました。一旦ArgoCDに限定していく部分は除いて修正しています。ご指摘感謝します。
自分で書いちゃってるけどクリティカルな理由がなければサブスク3000円くらいのサーバー借りたほうが問題は少なそう。※ただし自宅サーバの電気代は無料とする。みたいな隠された条件がね。
在评论区已经写过了,如果努力挑选机型,电费可以控制在每月100日元以下,因此,我认为金额差距很大。
精神論だけどいろいろ新しいことを試す用のマシンは目に見える場所に実機があったほうがいじってて楽しいしアイデアが浮かぶんだよな。いや精神論だけど。
精神論なので書かなかったんですけど、これは本当にそうなんですよね。あとテンションも上がるのでモチベも湧きます。いや精神論だけど。
自宅サーバーは数年後、落雷で逝ってからが本番。バックアップ取ってないの?構築内容ドキュメント化してないの? 雷は落ちるぞ。
これは本文に書かなかったんですが、GitHubで管理しているYAMLファイルを元にインフラを自動構築できるのがKubernetesやGitOpsの良いところなので、それ以外の自宅サーバーよりはこの心配はマシだったりします。KubernetesやArgoCD自体のインストールも、シェルスクリプトファイルを書いて1コマンドで出来るようにした方がラクだと思うので、そうすると自動的にGitHubで管理することになって消失の心配はなくなります。
後はオブジェクトストレージやデータベースの心配をどこまでするかですが、定期的にS3 Glacier Deep Archiveにバックアップすると2TBでも年間400円以下なので、やるならそれくらいでしょうか。
最后一点
あくまでこのシリーズでは、以降も「低負荷だけど常時使える状態ではあってほしいようなアプリを無料で運用しつつ、業務でも役立つ知見を深める」ということを目的として進めていきます。「大量のアクセスがあるアプリを大手クラウドよりも格安で運用する」ことは想定していないためご認識ください。
那么,让我们一起开始在家使用Kubernetes吧。