Kubernetes
2022
Kubernetes で StatefulSet の Volume を resize する
Kubernetes
Kubernetes で StatefulSet に volumeClaimTemplates を指定して Persistent Volume を使用している環境で volume のサイズを変更する方法。 素直に StatefulSet の manifest を変更して apply しようとすると次のように StatefulSet で更新可能なのは replicas, template, updateStragety だけだよとエラーに
Graceful Node Shutdown で Terminated 状態で残る Pod を削除する cronjob
Kubernetes
GKE (GKE 限定な話ではないけれども) で Preemptible な node を使用していると Graceful Node Shutdown により停止させられた Pod が Failed 状態でどんどん溜まっていって結構邪魔です。 できれば消えて欲しい。 ということ
envoy-sidecar-helper で Job の終了後に istio-proxy を停止させる
Istio
Kubernetes
Istio を導入した環境で Job (CronJob) を実行すると、sidecar としての istio-proxy コンテナを Job 本来の処理が終わった後に istio-proxy コンテナを終了させないといつまで経っても Pod が終了しないという課
istio-proxy の log level を変更する
Istio
Kubernetes
Istio でよくわからない通信の問題が発生した際、Envoy の access log だけでは何が起きているのかわからない場合があります。そんなとき、当該 Pod の LogLevel を debug に変更することで得られる
Mizu で kubernetes 内の通信を覗く (part 1)
Kubernetes
Mizu - API Traffic viewer for Kubernetes というものの存在を知ったので試してみます。 サイトには次のように書いてあります。気になります。 Mizu offers a real-time view of all HTTP requests, REST and gRPC API calls, as well as Kafka, AMQP (activeMQ / RabbitMQ), and Redis. HTTP も gRPC
istio sidecar の停止を connection がなくなるまで遅らせる
Envoy
Istio
Kubernetes
新機能 EXIT_ON_ZERO_ACTIVE_CONNECTIONS # 以前、「 Istio 導入への道 – sidecar の調整編」という記事で、Istio の sidecar (istio-proxy) が、アプリの終了を待たずに停止してしまってアプリ側が通信できなくなるという問題に対して
telepresence 入門 (2)
Kubernetes
telepresence
前回の telepresence 入門 (1) の続きです。今回は Kubernetes クラスタの Service へのアクセスをインターセプトして手元の環境に転送することを試します。Kubernetes 側の volume も手元で mount させるし、
2021
telepresence 入門 (1)
Kubernetes
telepresence
telepresence というツールがあります。手元の端末が Kubernetes クラスタ内にいるかのような通信を可能にし、Kubernetes の Pod の Container への通信をインターセプトして手元の端末に流すことが
Docker Desktop の代わりに Minikube を使ってみる
Docker
Kubernetes
minikube
Docker のおかげで今の便利なコンテナがあります、ありがとうございます。でもどうなるのかやってみたかったんです。 Goodbye Docker Desktop, Hello Minikube! を参考に試してみます。 環境は Intel Mac の Big Sur です。M
2020
Nginx Ingress Controller と oauth2-proxy で SSO
Kubernetes
advent calendar 2020
nginx
Advent Calendar 2020 全部オレシリーズ 8日目です。もう完走は諦めました。(再掲) Nginx Ingress Controller と oauth2-proxy を組み合わせて簡単に SSO を導入するためのメモです。複数のサービスがあって、Nginx Ingress Controller
Litmus 入門
Chaos Engineering
Kubernetes
Litmus
Chaos Mesh を 少しかじっていましたが、最近話題の Litmus に入門してみます。Litmus には Chaos Mesh にはなかった EC2 Instance の停止や Docker Daemon の停止や kubelet の停止などができるのが魅力ですね。 (その後
メインコンテナの起動前に istio-proxy の起動を完了させる
Istio
Kubernetes
2020年8月21日に Istio 1.7 がリリースされました。その RELEASE NOTE の Production operability improvements 項に次の節を見つけました。 You can delay the application start until after the sidecar is started. This increases the reliability for deployments where the application needs to access resources via its proxy immediately upon its boot. 「サイ
kubernetes に deploy 済みの Container に root で入っていじりたい
Kubernetes
コンテナへの権限は必要最低限に絞るべしということで、プロセスの実行ユーザーは root ではないし、特権モードで動かすなんことにはなっていないと思います。それでも調査など
kubie 3分 Cooking!
Kubernetes
kubectl などで複数の Kubernetes クラスタを切り替えるのに kubectx を使っていますが、これでは別ターミナルにしても同時に複数のクラスタにアクセスすることができません。ファイルを分けて環境
Istio 導入への道 – sidecar の調整編
Istio
Kubernetes
Istio シリーズ 第12回です。 Istio は各 Pod に sidecar として Envoy コンテナを差し込み、通信の受信も送信も Envoy を経由します。アプリの更新時などに旧バージョンの Pod の停止する時、先に Envoy コンテ
cert-manager で証明書管理
Kubernetes
cert-manager
前回の「 ArgoCD と Istio Ingress Gateway」と、前々回の「 Istio 導入への道 – Ingress Gateway で TLS Termination 編 」で TLS の証明書を手動で取得して Secret として登録したが、登録もさることながら更新が大変です。こ
Istio 導入への道 – Ingress Gateway で TLS Termination 編
Istio
Kubernetes
Istio シリーズ 第11回です。 TLS Termination # 外部からのアクセスを Istio Ingrress Gateway に TLS の Temination をさせたいことがありますね。今回はこれを試します。 TLS Termination の設定は Gateway で行います。 Gateway のドキュメントには
Istio 導入への道 – 図解
Istio
Kubernetes
Istio シリーズ 第10回です。 そろそろ図解してみようと思ったのだが… 正確に描くのは非常に難しい、そのうち Argo CD + Argo rollouts についても書くので Argo CD が描画する図を見
GKE の node はどのようにログを転送しているのか
GCP
Kubernetes
fluentd
GKE は何もしなくてもログを Cloud Logging (旧 Stackdriver Logging) に送ってくれて便利なんだけどどうやって送ってるのかな?と思って調べたメモ。なかなか興味深かった。 メトリクスの方も調べてみたが
Presslabs の mysql-operator (part2)
Kubernetes
MySQL
Orchestracot の CLI 操作 # 前回に引き続き、 Presslabs の mysql-operator です。今回は failover 周りの動作を確認します。 Orchestrator の操作は Web UI からも操作できますが、コマンドラインで試します。 orchestrator コマンド # kubectl exec -it mysql-operator-0 -c orchestrator sh