[{"data":1,"prerenderedAt":713},["ShallowReactive",2],{"blog-ja-k3s-production-best-practices":3,"blog-ja-k3s-production-best-practices-alt":399},{"id":4,"title":5,"author":6,"body":7,"date":697,"description":698,"extension":699,"image":210,"locale":700,"meta":701,"navigation":399,"path":702,"seo":703,"stem":704,"tags":705,"__hash__":712},"blog\u002Fblog\u002Fja\u002Fk3s-production-best-practices.md","K3s を本番環境で運用するためのベストプラクティス完全ガイド","Kubo Team",{"type":8,"value":9,"toc":670},"minimark",[10,22,30,35,44,48,51,74,83,86,89,92,101,105,123,127,142,145,160,166,178,182,185,189,204,241,244,311,319,322,337,341,344,348,351,418,421,425,433,436,442,445,448,463,549,552,561,579,582,589,593,596,639,653,666],[11,12,13,14,21],"p",{},"軽量 Kubernetes ディストリビューションとして急速に普及している ",[15,16,20],"a",{"href":17,"rel":18},"https:\u002F\u002Fk3s.io\u002F",[19],"nofollow","K3s"," は、シングルバイナリで動作し、わずか 512MB の RAM から本番ワークロードを実行できます。しかし「軽量＝本番に不向き」ではありません。適切な設計と運用プラクティスを適用すれば、K3s はエンタープライズレベルの信頼性を実現します。",[11,23,24,29],{},[15,25,28],{"href":26,"rel":27},"https:\u002F\u002Fkubo.hexabase.io\u002F",[19],"Kubo"," は K3s ベースのマネージド Kubernetes プラットフォームで、月額48,000円〜で本番グレードの K3s クラスタを提供しています。本記事で紹介するベストプラクティスの多くは Kubo で自動的に適用されるため、インフラ管理の負荷を大幅に削減できます。",[31,32,34],"h2",{"id":33},"高可用性ha構成の設計","高可用性（HA）構成の設計",[11,36,37,38,43],{},"本番環境で K3s を運用する最重要ポイントは高可用性（HA）構成です。",[15,39,42],{"href":40,"rel":41},"https:\u002F\u002Fdocs.k3s.io\u002Fdatastore\u002Fha-embedded",[19],"K3s 公式ドキュメント","によれば、HA 構成には最低3台のサーバーノードが必要で、etcd のクォーラム維持のために奇数台で構成します。",[45,46,47],"h3",{"id":47},"データストアの選択",[11,49,50],{},"K3s は複数のデータストアバックエンドをサポートしています：",[52,53,54,62,68],"ul",{},[55,56,57,61],"li",{},[58,59,60],"strong",{},"組み込み etcd（推奨）",": 自己完結型で管理が容易。ほとんどの本番環境に適合",[55,63,64,67],{},[58,65,66],{},"外部 PostgreSQL \u002F MySQL",": 大規模クラスタでデータストアを独立してスケールしたい場合",[55,69,70,73],{},[58,71,72],{},"組み込み SQLite",": シングルノード構成のみ。本番環境には非推奨",[11,75,76,77,82],{},"組み込み etcd を使用する場合、サーバーノード間でポート 2379-2380 の通信が必須です。",[15,78,81],{"href":79,"rel":80},"https:\u002F\u002Fdocs.k3s.io\u002Finstallation\u002Frequirements",[19],"K3s のシステム要件","に記載されている全ポートを確認しましょう。",[45,84,85],{"id":85},"ロードバランサー戦略",[11,87,88],{},"サーバーノードの前段にロードバランサーを配置しますが、単一のロードバランサーは SPOF（単一障害点）になります。Keepalived を使用した冗長ロードバランサー構成、またはクラウドロードバランサーの冗長性機能を活用してください。",[31,90,91],{"id":91},"セキュリティハードニング",[11,93,94,95,100],{},"K3s はデフォルトで多くのセキュリティ緩和策が適用されていますが、本番環境ではさらなるハードニングが必要です。",[15,96,99],{"href":97,"rel":98},"https:\u002F\u002Fdocs.k3s.io\u002Fsecurity\u002Fhardening-guide",[19],"K3s CIS ハードニングガイド","に従い、CIS ベンチマークへの準拠を目指しましょう。",[45,102,104],{"id":103},"pod-security-standards","Pod Security Standards",[11,106,107,108,113,114,118,119,122],{},"K3s v1.25 以降は ",[15,109,112],{"href":110,"rel":111},"https:\u002F\u002Fkubernetes.io\u002Fdocs\u002Fconcepts\u002Fsecurity\u002Fpod-security-admission\u002F",[19],"Pod Security Admissions（PSA）","をサポートしています。",[115,116,117],"code",{},"--admission-control-config-file"," フラグで有効化し、",[115,120,121],{},"restricted"," プロファイルの適用を推奨します。",[45,124,126],{"id":125},"rbac-とシークレット管理","RBAC とシークレット管理",[52,128,129,132,139],{},[55,130,131],{},"最小権限の原則に基づく RBAC ポリシーを設計",[55,133,134,135,138],{},"Kubernetes Secrets は etcd に暗号化して保存（",[115,136,137],{},"--secrets-encryption"," フラグ）",[55,140,141],{},"外部シークレットマネージャー（HashiCorp Vault、AWS Secrets Manager）との統合を検討",[45,143,144],{"id":144},"ネットワークポリシー",[11,146,147,148,153,154,159],{},"K3s はデフォルトで ",[15,149,152],{"href":150,"rel":151},"https:\u002F\u002Fdocs.k3s.io\u002Fsecurity",[19],"Network Policy コントローラー","を同梱しています。",[15,155,158],{"href":156,"rel":157},"https:\u002F\u002Fkubernetes.io\u002Fdocs\u002Fconcepts\u002Fservices-networking\u002Fnetwork-policies\u002F",[19],"Kubernetes のネットワークポリシー","を活用し、Pod 間通信を最小限に制限しましょう。",[161,162,163],"blockquote",{},[11,164,165],{},"セキュリティを後から追加するのは常に困難です。Day 1 からネットワークポリシー、PSA、RBAC、シークレット管理を実装してください。",[11,167,168,173,174,177],{},[15,169,172],{"href":170,"rel":171},"https:\u002F\u002Fwww.hexabase.com\u002Fproduct\u002Fcaptain-ai\u002F",[19],"Captain.AI"," と連携する ",[15,175,28],{"href":26,"rel":176},[19]," では、これらのセキュリティ設定がプラットフォームレベルで事前構成されています。",[31,179,181],{"id":180},"監視アラートの構築","監視・アラートの構築",[11,183,184],{},"「見えないものは管理できない」という原則のとおり、インシデントが起きる前に包括的な監視・アラート体制を整備する必要があります。",[45,186,188],{"id":187},"prometheus-grafana-スタック","Prometheus + Grafana スタック",[11,190,191,192,197,198,203],{},"K3s クラスタの監視には ",[15,193,196],{"href":194,"rel":195},"https:\u002F\u002Fprometheus.io\u002F",[19],"Prometheus"," と ",[15,199,202],{"href":200,"rel":201},"https:\u002F\u002Fgrafana.com\u002F",[19],"Grafana"," の組み合わせが定番です：",[205,206,211],"pre",{"className":207,"code":208,"language":209,"meta":210,"style":210},"language-yaml shiki shiki-themes tokyo-night","# Helm でのインストール例\nhelm repo add prometheus-community https:\u002F\u002Fprometheus-community.github.io\u002Fhelm-charts\nhelm install kube-prometheus-stack prometheus-community\u002Fkube-prometheus-stack \\\n  --namespace monitoring --create-namespace\n","yaml","",[115,212,213,222,229,235],{"__ignoreMap":210},[214,215,218],"span",{"class":216,"line":217},"line",1,[214,219,221],{"class":220},"sbD-w","# Helm でのインストール例\n",[214,223,225],{"class":216,"line":224},2,[214,226,228],{"class":227},"sPY7s","helm repo add prometheus-community https:\u002F\u002Fprometheus-community.github.io\u002Fhelm-charts\n",[214,230,232],{"class":216,"line":231},3,[214,233,234],{"class":227},"helm install kube-prometheus-stack prometheus-community\u002Fkube-prometheus-stack \\\n",[214,236,238],{"class":216,"line":237},4,[214,239,240],{"class":227},"  --namespace monitoring --create-namespace\n",[45,242,243],{"id":243},"重要な監視メトリクス",[245,246,247,263],"table",{},[248,249,250],"thead",{},[251,252,253,257,260],"tr",{},[254,255,256],"th",{},"メトリクス",[254,258,259],{},"閾値",[254,261,262],{},"アクション",[264,265,266,278,289,300],"tbody",{},[251,267,268,272,275],{},[269,270,271],"td",{},"サーバー CPU 使用率",[269,273,274],{},"> 90%",[269,276,277],{},"ノード追加を検討",[251,279,280,283,286],{},[269,281,282],{},"メモリ使用率",[269,284,285],{},"> 80%",[269,287,288],{},"リソース制限の見直し",[251,290,291,294,297],{},[269,292,293],{},"etcd レイテンシ",[269,295,296],{},"> 100ms",[269,298,299],{},"ディスク io の最適化",[251,301,302,305,308],{},[269,303,304],{},"Pod 再起動回数",[269,306,307],{},"増加傾向",[269,309,310],{},"OOM \u002F CrashLoop 調査",[11,312,313,318],{},[15,314,317],{"href":315,"rel":316},"https:\u002F\u002Fdocs.k3s.io\u002Freference\u002Fresource-profiling",[19],"K3s のリソースプロファイリング","ドキュメントも参照し、クラスタサイズに応じた適切なリソース割り当てを行いましょう。",[45,320,321],{"id":321},"ログ収集",[11,323,324,325,330,331,336],{},"Fluentd \u002F Fluent Bit を使用して、クラスタ全体のログを ",[15,326,329],{"href":327,"rel":328},"https:\u002F\u002Fwww.elastic.co\u002F",[19],"Elasticsearch"," や ",[15,332,335],{"href":333,"rel":334},"https:\u002F\u002Fgrafana.com\u002Foss\u002Floki\u002F",[19],"Loki"," に集約します。K3s の監査ログはデフォルトでは無効なので、本番環境では明示的に有効化してください。",[31,338,340],{"id":339},"バックアップリストア戦略","バックアップ・リストア戦略",[11,342,343],{},"障害からの復旧能力は本番環境の信頼性を決定づけます。etcd スナップショットとアプリケーションレベルのバックアップを組み合わせましょう。",[45,345,347],{"id":346},"etcd-スナップショット","etcd スナップショット",[11,349,350],{},"K3s は組み込みの etcd スナップショット機能を提供しています：",[205,352,356],{"className":353,"code":354,"language":355,"meta":210,"style":210},"language-bash shiki shiki-themes tokyo-night","# 手動スナップショットの取得\nk3s etcd-snapshot save --name pre-upgrade-$(date +%Y%m%d)\n\n# 自動スナップショットの設定（サーバー起動オプション）\n# --etcd-snapshot-schedule-cron \"0 *\u002F4 * * *\"  # 4時間ごと\n# --etcd-snapshot-retention 10                   # 10世代保持\n","bash",[115,357,358,363,395,401,406,412],{"__ignoreMap":210},[214,359,360],{"class":216,"line":217},[214,361,362],{"class":220},"# 手動スナップショットの取得\n",[214,364,365,369,372,375,379,382,386,389,392],{"class":216,"line":224},[214,366,368],{"class":367},"sE3pS","k3s",[214,370,371],{"class":227}," etcd-snapshot",[214,373,374],{"class":227}," save",[214,376,378],{"class":377},"sT800"," --name",[214,380,381],{"class":227}," pre-upgrade-",[214,383,385],{"class":384},"sAklC","$(",[214,387,388],{"class":367},"date",[214,390,391],{"class":227}," +%Y%m%d",[214,393,394],{"class":384},")\n",[214,396,397],{"class":216,"line":231},[214,398,400],{"emptyLinePlaceholder":399},true,"\n",[214,402,403],{"class":216,"line":237},[214,404,405],{"class":220},"# 自動スナップショットの設定（サーバー起動オプション）\n",[214,407,409],{"class":216,"line":408},5,[214,410,411],{"class":220},"# --etcd-snapshot-schedule-cron \"0 *\u002F4 * * *\"  # 4時間ごと\n",[214,413,415],{"class":216,"line":414},6,[214,416,417],{"class":220},"# --etcd-snapshot-retention 10                   # 10世代保持\n",[11,419,420],{},"4〜6時間ごとの自動スナップショットを設定し、スナップショットは S3 互換のオブジェクトストレージに外部保存します。",[45,422,424],{"id":423},"velero-によるアプリケーションバックアップ","Velero によるアプリケーションバックアップ",[11,426,427,432],{},[15,428,431],{"href":429,"rel":430},"https:\u002F\u002Fvelero.io\u002F",[19],"Velero"," を使用して、Kubernetes リソースと永続ボリュームのバックアップを実施します。etcd スナップショットではカバーできないアプリケーションデータの保護に不可欠です。",[45,434,435],{"id":435},"リストアテスト",[11,437,438,441],{},[58,439,440],{},"バックアップの価値はリストアの成功率で決まります。"," 定期的にリストア手順をテストし、RTO（目標復旧時間）と RPO（目標復旧時点）が要件を満たすことを確認してください。",[31,443,444],{"id":444},"リソース管理とアップグレード戦略",[45,446,447],{"id":447},"リソースリクエストとリミット",[11,449,450,451,197,454,457,458,462],{},"すべてのワークロードに適切な ",[115,452,453],{},"requests",[115,455,456],{},"limits"," を設定します。",[15,459,461],{"href":79,"rel":460},[19],"K3s のハードウェア要件","によれば、サーバーノードは最低 2 CPU \u002F 2GB RAM、エージェントノードは 1 CPU \u002F 512MB RAM が必要です。",[205,464,466],{"className":207,"code":465,"language":209,"meta":210,"style":210},"resources:\n  requests:\n    cpu: \"250m\"\n    memory: \"256Mi\"\n  limits:\n    cpu: \"500m\"\n    memory: \"512Mi\"\n",[115,467,468,477,484,501,515,522,535],{"__ignoreMap":210},[214,469,470,474],{"class":216,"line":217},[214,471,473],{"class":472},"s0U2E","resources",[214,475,476],{"class":384},":\n",[214,478,479,482],{"class":216,"line":224},[214,480,481],{"class":472},"  requests",[214,483,476],{"class":384},[214,485,486,489,492,495,498],{"class":216,"line":231},[214,487,488],{"class":472},"    cpu",[214,490,491],{"class":384},":",[214,493,494],{"class":384}," \"",[214,496,497],{"class":227},"250m",[214,499,500],{"class":384},"\"\n",[214,502,503,506,508,510,513],{"class":216,"line":237},[214,504,505],{"class":472},"    memory",[214,507,491],{"class":384},[214,509,494],{"class":384},[214,511,512],{"class":227},"256Mi",[214,514,500],{"class":384},[214,516,517,520],{"class":216,"line":408},[214,518,519],{"class":472},"  limits",[214,521,476],{"class":384},[214,523,524,526,528,530,533],{"class":216,"line":414},[214,525,488],{"class":472},[214,527,491],{"class":384},[214,529,494],{"class":384},[214,531,532],{"class":227},"500m",[214,534,500],{"class":384},[214,536,538,540,542,544,547],{"class":216,"line":537},7,[214,539,505],{"class":472},[214,541,491],{"class":384},[214,543,494],{"class":384},[214,545,546],{"class":227},"512Mi",[214,548,500],{"class":384},[45,550,551],{"id":551},"ローリングアップグレード",[11,553,554,555,560],{},"K3s のアップグレードは ",[15,556,559],{"href":557,"rel":558},"https:\u002F\u002Fgithub.com\u002Francher\u002Fsystem-upgrade-controller",[19],"system-upgrade-controller"," を使用して自動化できます。本番環境では以下の手順を推奨します：",[562,563,564,567,570,573,576],"ol",{},[55,565,566],{},"ステージング環境で新バージョンをテスト",[55,568,569],{},"etcd スナップショットを取得",[55,571,572],{},"サーバーノードを順次アップグレード",[55,574,575],{},"ワーカーノードを順次アップグレード",[55,577,578],{},"アプリケーションの動作を検証",[45,580,581],{"id":581},"ストレージの考慮事項",[11,583,584,585,588],{},"K3s のデフォルトデータディレクトリ ",[115,586,587],{},"\u002Fvar\u002Flib\u002Francher\u002Fk3s"," には高速な SSD（できれば NVMe）を使用してください。特に ARM デバイスの場合、SD カードや eMMC は io 負荷に耐えられないため避けるべきです。",[31,590,592],{"id":591},"まとめk3s-本番運用チェックリスト","まとめ：K3s 本番運用チェックリスト",[11,594,595],{},"K3s は軽量でありながら、適切に構成すれば本番環境で十分な信頼性を発揮します。以下のチェックリストで運用準備を確認しましょう：",[52,597,600,609,615,621,627,633],{"className":598},[599],"contains-task-list",[55,601,604,608],{"className":602},[603],"task-list-item",[605,606],"input",{"disabled":399,"type":607},"checkbox"," HA 構成（3台以上の奇数サーバーノード + 組み込み etcd）",[55,610,612,614],{"className":611},[603],[605,613],{"disabled":399,"type":607}," CIS ハードニングガイドに準拠したセキュリティ設定",[55,616,618,620],{"className":617},[603],[605,619],{"disabled":399,"type":607}," Prometheus + Grafana による包括的な監視",[55,622,624,626],{"className":623},[603],[605,625],{"disabled":399,"type":607}," 自動 etcd スナップショット + Velero バックアップ",[55,628,630,632],{"className":629},[603],[605,631],{"disabled":399,"type":607}," 全ワークロードにリソースリクエスト \u002F リミットを設定",[55,634,636,638],{"className":635},[603],[605,637],{"disabled":399,"type":607}," ローリングアップグレード手順の確立",[11,640,641,648,649,652],{},[58,642,643,644,647],{},"これらの運用負荷を軽減したい方には、",[15,645,28],{"href":26,"rel":646},[19]," がおすすめです。"," 月額48,000円〜で K3s ベースのマネージド Kubernetes を利用でき、HA 構成・セキュリティ・監視・バックアップが事前構成されています。AI ワークロードの運用には ",[15,650,172],{"href":170,"rel":651},[19]," との統合もご検討ください。",[11,654,655,656,659,660,665],{},"詳しくは ",[15,657,28],{"href":26,"rel":658},[19]," をご覧いただくか、",[15,661,664],{"href":662,"rel":663},"https:\u002F\u002Fwww.hexabase.com\u002Fcontact-us\u002F",[19],"お問い合わせ","ください。",[667,668,669],"style",{},"html pre.shiki code .sbD-w, html code.shiki .sbD-w{--shiki-default:#51597D;--shiki-default-font-style:italic}html pre.shiki code .sPY7s, html code.shiki .sPY7s{--shiki-default:#9ECE6A}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sE3pS, html code.shiki .sE3pS{--shiki-default:#C0CAF5}html pre.shiki code .sT800, html code.shiki .sT800{--shiki-default:#E0AF68}html pre.shiki code .sAklC, html code.shiki .sAklC{--shiki-default:#89DDFF}html pre.shiki code .s0U2E, html code.shiki .s0U2E{--shiki-default:#F7768E}",{"title":210,"searchDepth":224,"depth":224,"links":671},[672,676,681,686,691,696],{"id":33,"depth":224,"text":34,"children":673},[674,675],{"id":47,"depth":231,"text":47},{"id":85,"depth":231,"text":85},{"id":91,"depth":224,"text":91,"children":677},[678,679,680],{"id":103,"depth":231,"text":104},{"id":125,"depth":231,"text":126},{"id":144,"depth":231,"text":144},{"id":180,"depth":224,"text":181,"children":682},[683,684,685],{"id":187,"depth":231,"text":188},{"id":243,"depth":231,"text":243},{"id":321,"depth":231,"text":321},{"id":339,"depth":224,"text":340,"children":687},[688,689,690],{"id":346,"depth":231,"text":347},{"id":423,"depth":231,"text":424},{"id":435,"depth":231,"text":435},{"id":444,"depth":224,"text":444,"children":692},[693,694,695],{"id":447,"depth":231,"text":447},{"id":551,"depth":231,"text":551},{"id":581,"depth":231,"text":581},{"id":591,"depth":224,"text":592},"2026-05-27","K3s を本番環境で安全かつ安定的に運用するためのベストプラクティスを、HA構成・セキュリティ・監視・バックアップの観点から徹底解説します。","md","ja",{},"\u002Fblog\u002Fja\u002Fk3s-production-best-practices",{"title":5,"description":698},"blog\u002Fja\u002Fk3s-production-best-practices",[20,706,707,708,709,710,711],"Kubernetes","本番環境","高可用性","セキュリティ","運用","ベストプラクティス","t86OuYwSfXHRLR15RnLBghKga0_wG0TnHXY21TS2_o4",1779964617053]