1 ポイント 投稿者 GN⁺ 2024-12-02 | 1件のコメント | WhatsAppで共有

Hetzner

  • Hetznerへの移行は主にコスト削減のため。Hetznerの価格は世界的に見ても競争力がある。
  • Hetznerは仮想マシンとベアメタルマシンを提供しており、AWSと比べると機能は限定的だが、価格でそれを補っている。
  • Hetznerへの移行により、インフラコストを75%以上削減した。

Kubernetes on Hetzner

セルフマネージド Kubernetes

  • DigitalOceanでKubernetesを運用しており、Hetznerでもセルフマネージド方式で運用している。
  • Hetznerはマネージド Kubernetes コントロールプレーンを提供していないため、自分たちで管理する必要がある。
  • TerraformとPuppetを使ってノードを管理・構成している。

ノードの役割

  • クラスター内の役割をシンプルに保つため、control-planeworkerdatabase というノード命名規則を使っている。
  • 役割の追加は簡単だが、リソース利用の効率を損なう可能性がある。

ノード構築

  • Terraformを使ってクラスターをブートストラップする。
  • Hetznerはマネージドファイアウォールとネットワーキングを提供しており、Terraformで簡単に構成できる。
  • サーバーはTerraformで完全に管理され、役割ごとのモジュールを作成することでサーバー追加を簡単にしている。

ネットワーキング

  • ノードへの管理接続にはTailscale VPNを使用している。
  • TailscaleはNATホールパンチングを提供するため、ポートを閉じたままでも安全に接続できる。
  • HetznerのマネージドファイアウォールとUbuntuのUFWを使ってポートを遮断している。
  • Calicoを使ってコンテナネットワークインターフェースを構成している。

ストレージ

  • HetznerはnVME SSDとSSDベースのブロックストレージを提供している。
  • Hetznerのボリュームにはスナップショット機能がないため、データバックアップは手動で行う必要がある。
  • データベースノードではLocal Persistence Volume Static Provisionerを使ってローカルボリュームを事前プロビジョニングしている。

バックアップ

  • Hetznerはボリュームバックアップを提供していないが、サーバー全体のバックアップは提供している。
  • VMwareのVeleroを使ってネームスペースとPVCをバックアップしている。
  • PostgresではpgBackRestを使用している。

追加機能

  • SealedSecretsを使ってシークレットを管理。
  • Node Exporter、Prometheus、Grafana、Lokiを使ってクラスターを監視。
  • Alertmanagerを使ってSlackとの通知連携を行う。

HetznerでKubernetesを運用することについての所感

  • Hetznerへの移行には約1週間かかり、追加のテストとチューニングに4週間を要した。
  • Hetznerの価格は妥当で、他のプロバイダーと比べても低く維持されると考えている。
  • HetznerにはIP品質の問題やカスタマーサービスの制約がある。
  • Hetznerは新機能の投入が速い一方、採算の低いサービスはすぐに終了する可能性がある。
  • 中央ヨーロッパのデータセンターは、ドイツのFalkenstein、Nuremberg、フィンランドのHelsinkiにある。

要約

  • この移行はスムーズに進み、インフラコストを75%以上削減しつつ、クラスターのコンピューティングリソースを2倍に増やした。
  • Hetznerはコスト削減が必要な場合に非常に有力な選択肢である。
  • Hetznerのオープンソースコントローラーにより、ロードバランサー管理と永続ボリューム接続が容易になる。

1件のコメント

 
GN⁺ 2024-12-02
Hacker News の意見
  • 数年にわたり、Hetzner専用サーバーで顧客に Kubernetes クラスターを提供してきたが、性能は確かに優れており、通常はリクエスト時間が半分程度まで短縮される
    ハードウェアが安いため、顧客ごとに専任の DevOps エンジニアリング時間も提供できるが、いくつか前提がある。アップデート検証用のステージングクラスターは事実上必須で、本番アップデートを日曜に勘で押し切りたい人はいない。アプリケーションレベルのレプリケーションが最重要で、その次がブロックレベルのレプリケーションであり、OpenEBS/Mayastor を使っている。複数の Postgres オペレーターを試した結果、現時点では StackGres が最も良いと見ている
    Ansible プレイブックは資産なので、特定サービス向けによく整理してコメントを付けておけば、後で同じサービスを別の場所に再デプロイしやすくなる。可能なら、サーバー接続用の専用 10G ネットワークを勧める。1G は本番トラフィック、イメージの pull、サービス間トラフィックが合わさると不足し、AWS のようなアベイラビリティゾーン内通信よりレイテンシが 10 倍改善される
    ネットワーク冗長化が必要なら、1G ポートに内部用の 1G vSwitch(VLAN)を作り、各サーバーにループバック IP を与え、BGP でルートを配布すればよい(bird)。MinIO クラスターはオペレーターを通じて定石どおりに運用すればそれほど難しくなく、ローカルの高帯域・低レイテンシなオブジェクトストレージを提供できる。初期投資には、邪魔されない熟練エンジニアリング時間が 2〜4 か月ほど必要で、HTTP ロードバランシングのような補助的で面倒な作業は、依然として CloudFlare のようなクラウドプロバイダーに任せられる

    • 「サーバー接続用の専用 10G ネットワーク」は Hetzner に別途依頼する必要があるのか気になる
      公開ドキュメントには 10G アップリンクのオプションがあるが外部ネットワーク用で、20TB 制限はかなり厳しそうに見える。内部クラスターの入出力なら、20TB は簡単に問題になり得る
    • 1G vSwitch、ループバック IP、BGP(bird)でネットワーク冗長化を構成する部分の設定例を共有できるか気になる
    • 2〜4 か月の初期エンジニアリング投資が必要なら、https://syself.comも見てみる価値がある
      その会社の社員で、数分で本番対応済みのクラスターを提供するプラットフォームを作った
    • 邪魔されない熟練エンジニアリング時間 2〜4 か月が、会社や顧客にとってどれほどの価値なのか、今後 5 年間より高い月額請求を払い続けることと比較すべき
      コンサルティング会社ならその作業を売りたいだろうが、顧客の立場では月の AWS コストが 1 万ドル程度見込まれるのでなければ、まったく価値があるようには見えない。xkcd を思い出す: https://xkcd.com/1319/
  • Hetzner の専用サーバーで Kubernetes クラスターを運用したことがあり、Aurora、S3、ECS Fargate のような完全または高度なマネージドサービスも扱ったことがある
    経験上、Hetzner のクラウド請求額は同等の AWS と比べて20% 程度まで下がることもあるが、そのコストメリットには大きなトレードオフが伴う
    Hetzner Kubernetes では、NVMe ストレージベースの Ceph クラスター、MariaDB オペレーター、ネットワーキング用の Cilium、Helm チャート配信用の ArgoCD を管理していた。Kubernetes クラスターのアップデートも自分たちで処理する必要があり、一度はクラスター全体の障害まで経験した。Kubernetes と Ceph の両方で複数のバグに遭遇し、その多くは GitHub issue や Ceph トラッカーに記録されていた。管理・監視すべき作業リストは果てしなく、ワークロード数や環境の複雑さによっては、このような構成を維持することが DevOps チームのフルタイム業務になり得る
    反対に、AWS や他の主要クラウドプロバイダーを使えば、はるかに手のかからない構成が可能になる。マネージドサービスを使えば保守の労力が大きく減り、チームの運用負担も下がる。結局、AWS は DevOps の作業量を大きく減らし、Hetzner はクラウド請求額を大きく下げる。どちらがより費用対効果に優れるかは**総所有コスト(TCO)**分析が必要で、Hetzner が初期には安く見えても、追加の DevOps 時間が節約分を相殺する可能性がある

    • これはかなり ChatGPT の出力のように見えるし、過去の投稿履歴にも「X である一方、Y も Z をする。Y はすでに X と重なる」のような文が多い
      例として 2 vCPU、4GB 構成と AWS の似た構成を比べると AWS ははるかに高いので、コスト分析を見てみたい。運用負担を減らすツールとして https://github.com/kube-hetzner/terraform-hcloud-kube-hetzner もある
    • サポート issue 再現用のおもちゃの開発クラスター以外では Kubernetes クラスターを運用したことがないが、ある日証明書の問題で壊れた
      根本原因を突き止めるのも簡単ではなく、オンラインには復旧に必要な呪文のようなコマンドがたくさんあったが、結局すべて消してクラスターを作り直した。それ以来、数週間ごとにそうしている。実際の Kubernetes 運用者なら証明書の自動アップグレードやその他多くのツールを備えているはずだが、会社ならそのような運用者に費用を払う必要がありそうだ
    • Ceph の運用は本当に苦労する。高価で遅く、まだきちんと準備ができている感じがしない
      使っているところがあるのは知っているが、成熟したシステムである Lustre や GPFS と比べると、とてつもない時間の無駄になる。むしろ小さなファイルシステムを複数 NFS でエクスポートし、ブロックレベルのレプリケーションを保証するほうがよい。単一アドレス空間のファイルシステムは便利だが、大規模で安定させるための管理コストを負担する価値がない場合が多い。データベースのシャーディングのようにファイルシステムもシャーディングし、Kubernetes で正しいイメージに正しいストレージが付くよう、マッピングロジックを簡単に追加できる
    • おおむね同意するが、OpenShift のような中間的な解があまり検討されないのは意外だ
      DevOps の負担を大幅に減らしながら、ベアメタルの性能と柔軟性を両方得られる。完全マネージドの高価なサービスと完全な自前構築の間にある優れたハイブリッドだ。費用はかなりかかるのでスタートアップには良い選択ではないかもしれないが、72GB RAM または 36 CPU 以上、おおよそ中規模ノード 9 台程度のクラスターなら、OpenShift のようなものを必ず検討する価値がある
    • Kubernetes クラスターを手動でアップデートするのは大きなトレードオフだ。わずかな節約のためにそうするのは、切羽詰まった状況でない限り想像しにくい
  • Hetznerのボリュームが本番データベースには遅すぎるという問題は、意外と簡単に解決できる。非常に安価なHetznerのベアメタル機をノードとして使えばよい。
    NVMeストレージを備えたマシンはデータベース性能が優れており、RAMも十分にあることが多い。Kubernetesでデータベースを動かすより、マスター・レプリカ構成用に堅牢なベアメタル機を2台以上置くほうがよいくらいだ。設定が面倒なら、Pigstyのような最近のパッケージを使える: https://pigsty.cc/

    • KubernetesでローカルNVMeストレージを使ってデータベースを運用する選択肢も多い。
      データベースPodを特定ノードに固定してLocalPathProvisionerを使うか、JuiceFSやOpenEBSのような分散ソリューションを使えばよい。
    • ベアメタルサーバーのローカルストレージを使ってよい経験があった。
      顧客向けに書いたガイドはこちら: https://syself.com/docs/hetzner/apalla/how-to-guides/storage/local-storage-in-baremetal
  • 10年以上Hetznerを満足して使ってきて、以前はドイツのデータセンターの専用サーバーを使っていたが、米国でのレイテンシを下げるためにCloud US VMへ移行した。
    最近、余裕のあった20TBの無料トラフィックが3TBに減り、追加1TBあたり€1.19になったのは少し残念だが、評価した他の米国クラウドプロバイダーよりは今でもはるかにコストパフォーマンスがよさそうだ。
    Kubernetesをあえて選ぶことはないだろうが、従来のSSH/Docker ComposeデプロイをGitHub Actionsとkamal-deploy.orgへ移行し、うまく使えている。設定が簡単で、リモートにデプロイしたアプリを監視するUXツールもよい: https://servicestack.net/posts/kamal-deployments

    • 米国側の問題に見え、おそらくピアリングパートナーが値上げ圧力をかけているのかもしれない。
      ドイツのデータセンターはまだ20TBの帯域幅を提供している: https://www.hetzner.com/cloud/
      しかし米国は同じ価格で1桁以上少ない。
  • 昔はお金を節約できて楽しくもあったので車の整備を自分でしていたが、思ったより複雑で、時間が経つにつれあちこちが壊れたり割れたりした。
    「直し直す」ことにかなり時間を使い、数年間で工具に数千ドルは使ったはずだ。安い工具が壊れたりすぐ錆びたりして買い替えた費用もあり、車がしばしばジャッキスタンドの上に載っていた。それでも多くのすばらしい教訓を得たが、最大の教訓は、自分でやる価値のない作業もあるということだ。生計がかかっているなら、整備士に任せるか車をリースするほうがよい。
    オイル交換のような単純な作業でさえ、自分でやる価値はあまりない。オイル受け、フィルターレンチ、漏斗、整備用クリーパーのような工具を買い、時間を空け、汚れてもよい作業服を探し、店に行って新しいオイルとフィルターを買い、家に戻って交換し、その日か別の日に廃油を引き取ってくれる店へ行かなければならない。一方、整備工場ではオイルとフィルター代に15ドルほど上乗せするだけで、20分で終わる。
    Kubernetesは車1台まるごとであり、しかも複雑な車だ。趣味でやるのでなければ、自分で保守する価値は本当にない。

    • どうだろう。整備工場ではブレーキ交換に1800ドルを要求されたが、部品を300ドルで買って、初めてでも1日で終えられた。
      かなり割のよい見返りで、学んでおく価値のあるスキルだ。近所の人が自動車用リフトを持っていたので、それは確かに助かった。
    • 何でもAAを呼び、毎回有名な整備工場に行く費用が予算の大きな部分を占めるなら、話は違ってくる。
      要点は、自分でやることと外注することのバランスを見つけることで、ここで言われているほど簡単でもきれいでもない。
    • 結局は2つにかかっている。今後も含めてどれだけ関心と動機があるか、そして第三者依存が長期的にどれだけ足かせになり得るかだ。
      Kubernetesに頻繁に関わるコンサルタントの立場からは、初期支援と継続的な支援窓口を確保しつつ、社内でも十分に関心のある人が一緒に学ぶほうがよい。
      コンサルタントや専門家は、初期に悪い判断を避けさせ、数か月間壁に頭を打ちつけるような事態を減らしてくれる。中核事業にも集中しなければならない状況で、技術やエコシステムによくある暗部や落とし穴を妥当な時間内に身につけるのは簡単ではない。助けは受けるべきだが、魚の釣り方と火の起こし方も学ぶべきだ。
  • 興味深い記事だが、クラスターとその上で動いているワークロードの説明が欠けているように感じる。
    ノードは何台なのか、トラフィックをどれくらい受けているのか、稼働時間とレイテンシの要件は何なのかが気になる。そして絶対額としてのコスト削減額も重要だ。月10万ドルの75%削減と、月100ドルの75%削減ではまったく違う。

    • 経験上、GPUを使っているか、すでに月10万ドルを使っているのでなければ、誰も気にしない。
      実際、月10万ドルが分岐点だと思う。年120万ドルである。
      洗練されたベアメタルデプロイをきちんと支えるには、エンジニアの給与で年40万ドルほどかかり、データセンター契約、ハードウェアの減価償却、帯域幅でおよそ年10万ドルかかる。こうした人材はたいてい、その仕事をしながらビジネスの他の部分にも大きな価値を提供するため、実際のコストはもっと低いかもしれない。すると年70万ドルを節約できるので素晴らしく、同等のクラウド支出がそれ以上に大きくなるほどメリットはさらに大きくなる。
  • 10年以上前、ウェブホスティングの仕事をしていたときは、悪質な行為が原因で Hetzner の IP を何度もブラックホール処理していた
    ほかの低価格 VM プロバイダーも同じで、地理データベースとは関係なく、純粋に行為が理由だった。安いのには理由がある

    • 数年前に Mailgun の無料ティアを使おうとしたときも同じ問題があった
      製品機能は気に入っていたが、無料ティアの IP の評判はひどく、特に Hotmail や Yahoo ではメールがほとんど受け入れられなかった。無料ホスティングサービスはスパマーや詐欺師に圧倒され、低価格サービスも程度が低いだけで似たようなもの。価格が高いほど、詐欺やスパムに使われにくい
    • 状況は常に変わるが、最近、自分がホスティングしているサイトを最も多く攻撃してくるプラットフォームは大手クラウドプロバイダー、とくに Azure
      AWS、Google、DigitalOcean、Linode、Contabo なども、ログインのブルートフォース攻撃や一般的な脆弱性探索攻撃を多くホストしている
    • AWS は公開 IP がブロックリストに載らないよう懸命に管理している
    • 意味があるなら、バックエンドは Hetzner に置ける。たとえばキューやバッチ処理ワーカーが該当する
    • hcloud で k8s ストレージ用にブラックリスト入りしていない floating IP を得るまで、いくつも試す必要があった
  • 企業のインフラ構築とセキュリティを支援するコンサルティング会社で働いており、Hetzner のような低価格プロバイダー、地域の中堅プロバイダー、AWS/GCP/Azure のような上位3大クラウドで Kubernetes を運用している顧客が多い
    パブリッククラウドで運用できない、またはしたくない政府機関、金融、医療系企業もあり、通常はオンプレミスでホスティングしている
    Hetzner で月に1回問題や障害があるとすれば、中堅プロバイダーでは2〜3か月に1回、AWS のようなところでは5〜6か月に1回程度だ。ただし価格もその観察と同じように動くため、追加機器やバックアップ、障害シナリオを足すほうが得なのかは、ケースごとに慎重に検討する必要がある
    基本的なホスティングサービスを使う大きな利点は、価格の予測可能性がはるかに高いことだ。機器費用を払い、必要なだけ拡張すればよい。AWS のようなプロバイダーの付加サービスに縛られると、予想外の高額請求を受けることがあり、抜け出すのもはるかに難しくなる。小さな会社なら、初期の手軽な解決策や「無料クレジット」に釣られて、長期的な存続能力を脅かす近視眼的な判断をしないほうがよい
    ここに正解はなく、あるのはトレードオフだけだ

  • 自分では使ったことはないが、https://github.com/kube-hetzner/terraform-hcloud-kube-hetzner は Hetzner に Kubernetes をセットアップして管理する方法として優れていそうだ
    今は Oracle の無料ティアを使っているが、Oracle から離れるためにこちらへ移ろうかとずっと考えている

    • これでクラスターを2つ運用していて、1つは本番、もう1つは開発用
      かなりよく動く。SuSE MicroOS で自動セキュリティアップデートのため、毎週日曜日にマシンを再起動するスケジュールも入れている。ワークロードの増加に合わせてマシンのスケールも試した。Terraform が行おうとするすべての変更は必ず確認する必要があるが、そうすればかなり安全だ
      唯一の欠点は、すべてのノードがファイアウォールの背後にあっても 公開 IP が必要なことだが、この部分は対応中だ
    • これを使って、自分用のジャーナリングサイト向けクラスターを構成した
      一晩でクラスターが動作し、かなりよく稼働している。小さな問題が1つあり、arm ノードで自動アップデートが実行されなかった。というのも、その時点では単一ノードしか動いておらず、コントロールプレーンの taint のためアップデート Pod が実行できずに止まっていた
    • Cluster API と Cluster API Provider Hetzner も使っている
      https://github.com/syself/cluster-api-provider-hetzner
      非常に安定して動作している
    • 最近、Oracle の無料ティアで k8s を動かす記事を読んで試してみようと思っていた
      移行したくなるような具体的な不満があるのか気になる
  • DigitalOcean がほかのプロバイダーと同様に無料のマネージドコントロールプレーンを提供している一方で、マネージドクラスターのノードには通常100%のマークアップが乗る、という話は正しくないと思う
    DigitalOcean ではワーカーノードの費用は通常の Droplet と同じで、追加料金はない。そのため DigitalOcean の提供形態はかなり魅力的だ。心配不要の無料コントロールプレーン、無料アップグレード、ロードバランサーやストレージのような追加統合がある。自分で管理するよりこちらを選ばない理由はあまり思い浮かばない

    • 実際のノードは依然として DigitalOcean のほうが Hetzner よりはるかに高い。それがたぶん主な理由だ
      Hetzner の 8GB RAM 共有 CPU は約10ドルで、DigitalOcean の同等品は48ドルだ
    • czhu12 が言ったことに加えて、DOKS が高可用性コントロールプレーンに追加料金を課すのは、そのプラットフォームが本番級ではないように感じさせる
      Hetzner でマネージドな体験を求めるなら、https://syself.com を見てみるとよい。同社の社員です