kakakakakku blog

Weekly Tech Blog: Keep on Learning!

Kubernetes

Network Policy をわかりやすく学べる「Kubernetes Network Policy Recipes」

GitHub に公開されている「Kubernetes Network Policy Recipes」を使うと,Kubernetes の Network Policy をわかりやすく学べる.現時点だと「計14種類」の Network Policy レシピ(サンプル)が載っていて,実際に使う機会がありそうな設定も多くて参考にな…

マニフェストを適用する前に編集できる "kubectl create --edit" コマンド

Kubernetes のドキュメントを読んでいたら kubectl create コマンドで --edit オプションが使えると書いてあった.kubectl create -h コマンドでヘルプを確認したところ Edit the API resource before creating と書いてある.簡単に言うと kubectl create …

PodDisruptionBudget (PDB) と kubectl drain --timeout オプションを組み合わせる

Kubernetes で PodDisruptionBudget (PDB) を使うと,kubectl drain コマンドでノードをドレインするときなどに Kubernetes クラスター内に起動しておく「最低限必要な Pod 数」を設定できる.よって,Kubernetes を使ったサービスの可用性を高める戦略とし…

kubectl コマンドを使って Label や Annotation を削除する

kubectl コマンドを使って Label(ラベル) や Annotation(アノテーション)を削除する場合,削除用のオペレーションはなく,キー名の末尾に - を付けて登録をする必要がある.具体的には bar- や description- というキー名を指定すると削除できる.以下の…

kubectl drain コマンドのオプションを試す : --ignore-daemonsets と --force

Kubernetes で kubectl drain コマンドを実行すると,指定したノード上の Pod を安全に削除して,そのノードには新しく Pod をスケジューリングしないようにステータスを変更できる.例えば,Kubernetes クラスターの運用として,ノードをメンテナンスすると…

Deployment に revisionHistoryLimit を設定して ReplicaSet のリビジョン数を制御する

Kubernetes で Deployment を使うときにマニフェストを修正して kubectl apply コマンドを繰り返し実行すると,ReplicaSet のリビジョンが増えていく.サンプルとして Deployment の image を nginx:1.8-alpine ➔ nginx:1.9-alpine ➔ nginx:1.10-alpine と修…

Vertical Pod Autoscaler の Recommender で「推奨値」のみを算出する

Kubernetes で VPA (Vertical Pod Autoscaler) を使うと,Pod に設定する CPU / Memory リクエスト値をオートスケールできる.CPU / Memory リクエスト値 (spec.containers[].resources.requests) に対する「スケールアップ」と「スケールダウン」とも言える…

「RBAC Lookup」を使って RBAC に関連するオブジェクトを検索する

Kubernetes には RBAC (Role Based Access Control) という仕組みとして,Role / ClusterRole / RoleBinding / ClusterRoleBinding という「計4種類」の Kubernetes オブジェクトがある.Role と ClusterRole ではアクセス権限を宣言して(Namespace を指定…

kubecolor を使って kubectl の実行結果を色付けしよう

kubecolor コマンドを使うと kubectl コマンドの実行結果を色付けして読みやすくできる.kubectl コマンドの実行結果は基本的に白黒なので,リソース数が多かったり,例えば -o wide オプションを使って表示項目を増やしたりすると,読みにくくなることもあ…

kubectl-neat を使って Kubernetes のマニフェストをスッキリ表示する

「kubectl-neat(kubectl neat コマンド)」を使うと Kubernetes のマニフェストから「冗長な」情報を削除して表示できる.知っておくと便利!GitHub リポジトリの README.md を読むと「メタデータ」や「デフォルト設定」や「Admission Controllers によって…

Pod に「優先度」を設定できる PriorityClass と Non-preempting 機能を試した

Kubernetes の「PriorityClass」を使うと Pod に優先度(プライオリティ)を設定できる.例えば,通常 Pod を起動するために必要なリソースを確保できない場合は Pending になるけど,そういう場合でも優先的に起動できるようになる.逆に「優先度を低くした…

nginxdemos/nginx-hello イメージを使うと簡単に「コンテナ ID」を確認できる

コンテナを複数起動して,ロードバランサーなどを使って「期待通りに振り分けできているよ!」という挙動をデモで見せたいときがある.実際に最近あった.例えば nginx:alpine イメージを使うと,全て同じ index.html から Welcome to nginx! とレスポンスを…

Secret を暗号化して Git 管理を可能にする「Sealed Secrets」を試した

Kubernetes で設定値や機密情報を管理する場合,ConfigMap と Secret が代表的な選択肢として挙げられる.しかし Secret は暗号化ではなく Base64 でエンコードをする仕様になっているため,Git リポジトリで直接マニフェストを管理できないという懸念点があ…

Argo CD に入門するために「Getting Started」をカスタマイズしながら試した

今回は Argo CD に入門するためにドキュメントに載っている「Getting Started」を試す.任意の Kubernetes クラスターに Argo CD をセットアップして,アプリケーションのデプロイを体験できる.また Argo CD UI を使った画面操作も体験できる.しかし GitOp…

Kubernetes を網羅的に学ぶなら「Kubernetes 完全ガイド 第2版」を読むべし

「Kubernetes 完全ガイド 第2版」を読んだ.今年6月に「第1版」を読み終わって,書評記事を書こうと思っていたら,タイミング良く今年8月に「第2版」が出版された.出版おめでとうございます!最初は目次を見ながら差分を中心に読んでいたけど,大幅にアップ…

kind を使って Feature Gates を有効化した Kubernetes クラスターを構築する

Mac のローカル環境で Kubernetes の検証をするときに,お手軽な Docker Desktop for Mac "Edge" を使っている.Feature Gates を有効化した Kubernetes クラスターで検証をするときは minikube に --feature-gates オプションを指定して使うこともある. Do…

Flux と kustomize を組み合わせた GitOps 入門チュートリアル「Using Flux with Kustomize」を試した

昨日の記事では GitOps に入門できる Flux のチュートリアル「Get started with Flux」を紹介した.次は Flux と kustomize を組み合わせて,ベースマニフェストに対して環境ごとに異なる設定値を適用する流れを学んでいく. kakakakakku.hatenablog.com チ…

Flux を使った GitOps 入門チュートリアル「Get started with Flux」を試した

最近よく聞くようになった「GitOps」というデリバリ戦略があり,Single Source of Truth として Git を採用し,Kubernetes リソースなどを継続的にデリバリーしていく.GitOps では,直接 kubectl などを実行せず,例えば GitOps Operator などを使って,Ope…

kustomize の configGeneration を使って ConfigMap リソースをデプロイする

先週の記事に続き kustomize の Examples を試していく.前回は「helloWorld」を試した.今回は ConfigMap リソースでローリングデプロイのような挙動を実現できる kustomize の configGeneration を試す. kakakakakku.hatenablog.com 前提 今回も Docker D…

Kubernetes の YAML をカスタマイズする kustomize の基本を学べる Examples「helloWorld」

「Kubernetes 完全ガイド 第2版」で「第14章 マニフェストの汎用化を行うオープンソースソフトウェア」を読んでいたら「第1版」では紹介されていなかった(正確には名前は載っていた)kustomize の解説が新しく追加されていた.本書を読みながら概要を理解し…

Kubernetes でバイナリを ConfigMap (binaryData) に登録する

今年の4月頃に「Kubernetes 完全ガイド」を読み終えたけど,まだ書評を書いていなかった.そしたら8月に「Kubernetes 完全ガイド 第2版」が出版されたため,さっそく購入して,読み直している.読みながら気になった機能を試していく.今回は ConfigMap にす…

Kubernetes の CronJob に設定できる concurrencyPolicy と suspend を試した

Kubernetes の CronJob を使って Job を定期的に実行するときに,マニフェストに設定できるフィールド concurrencyPolicy と suspend を試す機会があった.振り返りながら整理しておく. kubernetes.io Concurrency Policy とは? CronJob では,例えば「ジ…

さぁ!コンテナを設計しよう /「分散システムデザインパターン」を読んだ

4月に出版された「分散システムデザインパターン」を読んだ.サブタイトルに「コンテナを使ったスケーラブルなサービスの設計」とある通り,コンテナを設計/運用するときに,どのようなデザインパターンを知っておくと良いのか?という点を学べる内容になっ…

HashiCorp Learn の Consul コース「Getting Started with Kubernetes」を実施した

引き続き Consul を検証している.前回の記事では「HashiCorp Learn Platform」を活用して,Consul の「Getting Started」を実施したので,今回は「Getting Started with Kubernetes」を実施した.Consul に限らず,Kubernetes と Envoy を使ったマイクロサ…

「Japan Container Days v18.04」に参加して1日中コンテナのことを考えていた

今日は「Japan Container Days v18.04」に参加してきた.正直「Container Days」と言うよりも「Kubernetes Days」って感じだったけど,1日ずっとコンテナのことばかりを考えていた.発表テーマも多岐にわたっていて,バランスが非常に良かったと思う.僕が参…

AWS で Kubernetes クラスタを構築して学ぶワークショップ「aws-workshop-for-kubernetes」

Kubernetes を学ぶため,AWS から公式に公開されているワークショップ資料「aws-workshop-for-kubernetes」を試した.Kubernetes を学ぶためのコンテンツが網羅的にあるため,今回はワークショップの紹介と,実際に試した一部のコンテンツをまとめたいと思う…