TOPエンジニア【K8s,Spring Boot】Datadogトレーサを追加したら永遠にLiveness Probeが成功しなくなった話
はじめに こんにちは。SREの gumamon です! NewRelic、Datadog、モダンな監視ツール(オブザーバビリティ)って良いですよね。弊社もKubernetes(k8s)等を利用した環境が増えてきた折、そろそろ必要になってきたのですが、NewRelic、Datadog等のクラウドサービスはランニングコストが高くなりがちです。 では内製できないかやってみよう!・・・というようなことを昨年度から取り組んでいたのですが、やっとこさ形になりましたので改めてブログで紹介させて頂こうと思います。 今回ご紹介するのは、大まかなシステムの構成と設計時の観点です。各コンポーネントの詳細や工夫できた点などについては、改めて別の記事でご紹介できればと思います。 また、「オブザーバビリティとは?」や「試行錯誤の過程」については、以前執筆した以下のブログをご参照ください。 tech-blog.raku
はじめに マイクロサービスアーキテクチャの台頭により、サービスメッシュ技術は現代のクラウドネイティブ環境において外せない選択肢の一つとなっています。 その理由は明確です。マイクロサービスに求められる非機能要件の多くは類似しており、これをアプリケーション側で個別に実装すると、開発者やインフラエンジニアの負担が増大するからです。 ここで登場するのがサービスメッシュです。サービスメッシュの採用により、これらの非機能要件をインフラ層で一元管理することが可能となり、アプリケーション開発者とインフラエンジニアの責務を明確に分離できます。つまり、各エンジニアが自身の専門領域にフォーカスできるのです。これは単なる効率化ではなく、イノベーションを加速させるためサービス開発する上での労苦をなくします。 そして、サービスメッシュの世界で圧倒的な存在感を放っているのがIstioです。その包括的な機能と広範な採用で
こんにちは!株式会社COMPASSのシステム開発部、SREチームのごーすと(@5st7)です!普段は、k8s周りの運用であったり、アプリケーションのパフォーマンスの監視、改善、インフラ周りの自動化などを積極的に進めています。三度の飯よりも好きなものがプリンで、美味しいプリンの店とかが流れてきたら1営業日以内に馳せ参じます。プリン好きな人はお店で会いましょう。 今日は負荷試験の取り組みについてご紹介できればと思います。COMPASSが提供するキュビナは現在100万人を超えるユーザーに利用していただいていますが、その分トラフィックも大きく、安定してサービスを提供できるようにするために、様々な工夫をしています。その中でも利用の集中する時間帯の負荷に耐えられるかの検証は非常に重要な取り組みの一つです。今回は、COMPASSが今まで負荷試験にどのように取り組んできたのか、その歴史と改善を行っていった
Kubernetesでアプリの安定稼働と高頻度のアップデートを両立するためのプラクティス / Best Practices for Applications on Kubernetes�to Achieve Both Frequent Updates and Stability
これはなに この記事はアルパカでもわかる安全なPodの終了の続編です。 前回は、Podの終了時の動作をKubernetesの各種コンポーネントの仕組みを踏まえつつ考察しました。 Deploymentのローリングアップデートを行うとPodの再起動を伴うことになりますが、このときリクエストを欠損なく処理するために、以下2つの対策が有効であることが分かりました。 preStopフックでのスリープ アプリケーションのGraceful Shutdown この記事では、Deploymentのローリングアップデートをオンラインで実際に行い、上記対策が本当に有効かどうかを確かめていきます。 📘【note】 この記事はKubernetes2 Advent Calendar 2020の18日目です。 昨日は@south37さんの手を動かして学ぶコンテナ標準 - Container Runtime 編でした。
クラウドで使うコンテナというと、AWSのAmazon ECS、Google Cloud Runなどがある。今回はコンテナオーケストレーションのKubernetesのアーキテクチャについて、スリーシェイク bells17氏が解説する。KubernetesはもともとGoogleが内部で運用していたコンテナ基盤のBorgをベースとしており、Cloud Native Computing Foundation(CNCF)に寄贈されたものだ。認知度からも分かるように、成熟度レベルは「GRADUATED」で成熟が進んだものとなっている。 KubernetesのコアとなるControllerとは? コンテナオーケストレーションツールとして有名なKubernetes。代表的な特徴を挙げるとサービスディスカバリとロードバランシングがある。Serviceリソースを定義することで、多数起動されているコンテナに接続
CronHPAという昼夜のような時間帯で稼働台数やメトリクスを調整できるKubernetes Operatorを作ったので紹介します。 以下のようなYAMLの記述で最低稼働Pod数4、最大稼働数10でPod全体の平均CPUが50%以下になるように自動でPod数を調整してくれます。 apiVersion: autoscaling/v2beta2 kind: HorizontalPodAutoscaler metadata: name: nginx spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: nginx minReplicas: 4 maxReplicas: 10 metrics: - type: Resource resource: name: cpu target: type: Utilization
こんにちは、プラットフォームエンジニアリング部門コンテナ基盤グループの岡田です。 当社ではECサイトの裏側で利用されているモノリシックなAPIをコンテナ化し、Elastic Kubernetes Service (EKS) に移行しました。 移行直後は下記のようにトラブルに見舞われましたが、現状安定した運用ができています。 EKSコンテナ移行のトラブル事例:推測するな計測せよ -CoreDNS暴走編- - MonotaRO Tech Blog EKSコンテナ移行のトラブル事例:FargateにおけるAZ間通信遅延の解消 - MonotaRO Tech Blog 今回はトラブル事例ではなく活用事例になりますが、アプリケーションリリース起因でのトラブル影響を減らすため、コンテナ化したAPIに対してカナリアリリース導入を行いました。そのため、導入に際して生じたConfigやSecret周りの課題
せっかく10年以上かけて学んだプログラミングだが、人間がコード書くよりChatGPTにやらせた方が早いなということが度々あり、だんだん自分でプログラミングをやる時間が減ってきた。AIにコードを書かせてそれをGitHubにコピペして残りの時間は遊んでるだけで成果が出てお給料ももらえる日は近いし、段々会社もそのことがわかってきて失職する日も近い。 残念ながら現時点では全ての仕事がAIで上手くいくわけではないが、どういう時に使えるかを知っておくと楽をしやすくなるので、僕がどう使っているかをまとめておく。 失職できるケース 簡単なスクリプトを高速に書かせる 僕はRubyが全ての言語の中で一番慣れており、StackOverflowやドキュメントをほぼ見ずに大抵のプログラムを書き切れるため、Rubyを書いている時がプログラマとして一番生産性が高いのだが、それでも最近AIにRubyを書かせたことがあった
ソフトウェアエンジニアとして働き始めて 20 年以上になります。 元々ソフトウェアでいろいろ作りたくて就いた職業なので、結構な数のプロダクトを開発してきました。 私がメインで開発したもので OSS として出ているものでは、 yrmcds: memcached クローンで、レプリケーション機能などを持つ usocksd: SOCKS4/5 サーバー & ライブラリ transocks: アプリのネットワーク通信を透過的に SOCKS サーバーにプロキシする透過プロキシ coil v2: Kubernetes の CNI ネットワークドライバ moco: MySQL を自動運用する Kubernetes オペレーター accurate: Kubernetes 上で namespace ベースのソフトマルチテナンシーを実現するためのソフトウェア などがあります。これらのソフトウェアの多くは、現役
Kubernetes Novice Tokyo #29 で発表したLT資料です イベントURL: https://k8s-novice-jp.connpass.com/event/300438/ 動画URL: https://www.youtube.com/watch?v=WZHDlB8P9_4 参考資料: https://github.com/kubernetes/kubernetes/tree/v1.28.4 https://github.com/coredns/coredns/tree/v1.11.1 https://github.com/coredns/example https://github.com/coredns/coredns/blob/v1.11.1/plugin/kubernetes/README.md https://github.com/kubernetes/dn
Kubernetes Meetup Tokyo #57 アーカイブもあります: https://www.youtube.com/watch?v=DczWeNL-4-A
Kubernetes上でイベントドリブンなオートスケーリングを提供する「KEDA」、本番環境で使えるレベルに到達したとしてCNCFの卒業プロジェクトに Cloud Native Computing Foundation(CNCF)は、Kubernetes上でイベントドリブンなオートスケーリングを提供する「KEDA」(Kubernetes Event-driven Autoscaling)が、本番環境に十分使えるレベルに到達したとして、インキュベーションプログラムから卒業するプロジェクトになったと発表しました(CNCFの発表、KEDAの発表)。 [NEWS] Announcing the Graduation of #Kubernetes autoscaler #KEDA! https://t.co/qpSz3zyad5 pic.twitter.com/ETddPp8ENF — CNCF (
こんにちは、モノタロウの SRE グループ・コンテナ化推進チームの田中です。 現在、私たちはシステムモダナイゼーションのプロジェクトの一環として、200以上のエンドポイントを持つモノリスのバックエンド API を EC2 上から Kubernetes マネージドサービスの EKS(Elastic Kubernetes Service)に移行しています。ノードは Fargate を使用し、監視には Datadog と Sentry を導入しています。 今回、EC2 に流れているリクエストを全て EKS に振り分けを行おうとしておりました。その際に外部(DB、 サービス)への疎通ができないといった内容の Sentry のエラーが大量に発生し、切り戻しをせざるを得ない状況に陥ったのです。エラー内容を詳しくみたところ名前解決に関するものであり、今回私たちは CoreDNS の設定を行うことで解決し
こんにちは、SREグループの岡田です。 モノタロウではモノタロウのクラウドネイティブ化の取り組みについて - MonotaRO Tech Blog にも記載されているようにシステムのモダナイズに取り組んでおり、その一環でEKSのPoCそして実際にECサイトの裏側のAPIを対象にコンテナ化に取り組みました。 この記事では移行時に起こったトラブルとハマったポイントの1事例をご紹介します。 前提 起こったトラブル トラブルシュート 1. 問題の整理と仮説 2. 検証 検証1.Podのステータスがterminate状態になってから削除されるまでの時間を変えてみる。 検証2.Pod Readiness Gateを試す。 検証3. ALBのDeregistration delay(登録解除までの待機時間)を短くしてみる。 分かった事 ALBを含めたPod入れ替え時の挙動 EKSにおけるトラブルシュート
はじめに kind (kubernetes in docker)でIngressを作成したい場合、ingress controllerを使う必要があります。 しかし、ドキュメント通りに実行してもM1 macなどのApple シリコンでは動きません。 理由は hashicorp/http-echo が arm64に対応していないからです。 $ docker container run --rm hashicorp/http-echo:latest -text 'aaa' WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested runtime: fa
はじめに kind (kubernetes in docker)でIngressを作成したい場合、ingress controllerを使う必要があります。 しかし、ドキュメント通りに実行してもM1 macなどのApple シリコンでは動きません。 理由は hashicorp/http-echo が arm64に対応していないからです。 $ docker container run --rm hashicorp/http-echo:latest -text 'aaa' WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested runtime: fa
こんにちは!スタンディングデスクを導入して快適な開発環境と運動不足の両方を解消できるようになったのではと感じている、広告技術部のUT@mocyutoです。 今回は半年ほどEKSを運用して秒間3万リクエストのトラフィックをさばくほどになりました。 秒間3万は広告システムだと割とあるとは思いますが、kubernetesでも運用できているので紹介しようと思います。 対象のEKSで構築したサービスは広告の配信サーバです。 広告配信サーバの要件として、まず50ms以内にレスポンスを返さなければいけません。 構築したk8sのレスポンスタイムの99パーセンタイルは10msほどで返せています。 以下は必要最小限のクラスタの構成図です。 全体像 API 弊社のサーバサイドはほぼGoで作られているので、例に漏れずGoで作られています。 pod構成はAPI、fluentd、envoyの サイドカーパターン です
Data Platform グループのリーダーの田中です。データ分析基盤 Livesense Analytics と機械学習基盤 Livesense Brain のプロジェクトマネジメント/アーキテクチャリングをしています。 今回は Livesense Brain における Kubernetes (k8s) manifest の管理方式と運用設計について紹介します。 2種類の管理方式: 個別管理と集中管理 k8sクラスタで複数のシステムを運用しmanifestをGit管理するとき、その管理方式は大きく次の2種類に分けられます。 個別管理: 各システムの実装を管理するGitリポジトリにmanifestを一緒に含める 集中管理: 各システムのリポジトリと別に、全manifestを管理する単一のリポジトリをおく 個別管理の場合、各システムのリポジトリで開発〜運用にかかわるすべてのコードを管理でき
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く