hisamounaのブログ

アウトプットを習慣化するためのブログ

cluster autoscalerがNodeGroup情報をキャッシュしていないか、コードを読んで確認

前提条件 クラスタ : EKS(v1.21.1) NodeGroup : ASG なぜ、キャッシュしているのではという仮定にいたったのか 特定条件の時、ASGがスケールアウトしない ASGの起動台数が0の時、ephemeral-storageをrequestsで要求しているpodのためにcluster autoscalerがA…

DNSがよくわかる教科書を読んだついでに、DNSについて色々と調べてみました

www.amazon.co.jp 年末年始でゆっくり本を読むことができたので、DNSについて改めて勉強しました。 こちらの本はDNSの基礎や運用していく上での知識などを体系的に学ぶことができ大変おすすめです。 以下、学んだことを書きつつ、DNSについて色々と調べてみ…

cluster-autoscalerのコードを読む (ASG一覧をどうやって取得しているか)

EKSでcluster-autoscalerを利用してASGをスケールさせているのですが、詳しい挙動を把握していなかったので調べてみました。EKSなので、今回はAWS環境に特化しています。 Karpenterについても気になっているので近々触れてみたいと考えています。 この記事で…

Rustを使ってコンテナの実装を学ぶ (UID/GID の設定)

Rustを使ってコンテナの実装を学ぶの続きをやっていきたいと思います。 hisamouna.hatenablog.com 実行環境(再掲) GCPでVMインスタンスを1台起動させて、実行環境として利用しました。 $ lsb_release -a No LSB modules are available. Distributor ID: Debi…

Rustを使ってコンテナの実装を学ぶ

普段なんとなくコンテナを利用しているのですが、内部でどういったことをしているのかあまり分かっていなかったので勉強しました。 (内部のロジックを知らずに扱えるDockerの抽象度の高さに改めて感心しました。) クックパッドさんが、Linuxカーネルの機能を…

argo-rolloutsのPromoteについて調べる

argocdのGUI上でargo-rolloutsリソースに対してできるオペレーションに、 PROMOTEやPROMOTE-FULLがありますが、 ドキュメントをざっと調べた限り、詳細な挙動が分からなかったのでコードを見てみました。 画面のサンプル 利用できない操作は半透明にして非活…

Rust製WebサーバにCircuitBreakerを入れてみる

Rust製WebサーバにCircuitBreakerを導入してみました。 最近だと、proxy(e.g. envoy)にCircuitBreakerを入れるパターンもあるかと思いますが、今回はアプリケーションに入れるパターンです。 使用するライブラリ Rocket: RustでWebFrameworkといえば定番にな…

Rolloutsリソースに対してPatchを当てる

困ったこと Rolloutリソースのspec.containersのfieldsに対してpatchを当てたところ完全に書き換えられてしまった。 期待の出力 nginxイメージのtagが1.21 -> 1.18に書き換わってほしい。それ以外はそのままに。 $ kustomize build example/ apiVersion: arg…

yamlファイルを読み込む (Rust)

はじめに Rustの勉強を始めました。 実践Rustプログラミング入門をひと通り読みました。わかりやすく解説されており、体系的に学べておすすめです。 実践Rustプログラミング入門作者:初田直也,山口聖弘,吉川哲史,豊田優貴,松本健太郎,原将己,中村謙弘,フォル…

node上のpod一覧を表示する画面を作成する ~ (2) Reactで画面を作成 ~

前回の記事の続きです。 React触ってみました。 hisamouna.hatenablog.com コード axiosで前回作成したサーバに対してAPIリクエストし、node情報を取得する 定数(server)にaxios.createをセットすることで、複数axios.createを定義できるようにしました。 ap…

node上のpod一覧を表示する画面を作成する ~ (1) Goでサーバを構築 ~

はじめに フロントエンドの勉強をしてみたくなったので、Reactを触ってみました。 以前作ったGoのコードをベースにサーバーを構築し、ReactからAPIリクエストでnodeの情報を取得しブラウザ上で表示するようにしていきます。 hisamouna.hatenablog.com 本記事…

client-goを使って、node上のpod一覧を表示する

環境 kindを使ってローカル上(Mac)にバージョン: v1.21.0のk8sクラスタを用意 クライアント作成 import ( "context" "fmt" "k8s.io/client-go/kubernetes" "k8s.io/client-go/tools/clientcmd" "k8s.io/client-go/util/homedir" corev1 "k8s.io/api/core/v1"…

SpreadSheetでチェックリストを使う (golang)

Go

サンプルコード コード 事前にやること SpreadSheetのリンクを知っている人全員が編集できるようにする。 SpreadSheetID,SheetIDを取得 https://docs.google.com/spreadsheets/d/${SpreadSheetID}/edit#gid=${SheetID} 実行 Range: &sheets.GridRange{ Start…

etcd (ローカルでPUT,GETする)

etcdをdokerで起動 Ref: Run etcd clusters inside containers └─> export NODE1=192.168.1.21 └─> docker volume create --name etcd-data etcd-data └─> export DATA_DIR="etcd-data" └─> REGISTRY=gcr.io/etcd-development/etcd └─> docker run \ -p 2379…

ArgoCDを構成するPod (メモ書き)

参考 HighAvailability Components argocd-repo-server ロール: Gitリポジトリをcloneする cloneしたファイルをもとにconfig management(kustomize,helm)がmanifestsを生成する つまり、argocd-repo-server上でkustomize,helmコマンドが実行されている clone…

gRPC-GatewayのtutorialsをDockerでやってみる

Go

はじめに gRPC-Gatewayのtutorialsをコンテナで動かして疎通できるようにしたいと考えています。 作業リポジトリ: grpc-gateway-tutorial tutorialsをもとにserverとgatewayでエントリーポイントを分離 serverのmain.go func main() { lis, err := net.Liste…

kindでArgo Rolloutを試す

kindでクラスタ構築 └─> kind version kind v0.6.1 go1.13.4 darwin/amd64 └─> kind create cluster --name kinda --image kindest/node:v1.18.15 --kubeconfig $HOME/.kube/kind_config Creating cluster "kinda" ... . . . Thanks for using kind! 毎回--…