Kubernetes
Photo by CHUTTERSNAP
k3s は軽量にリパックしたkubernetesです。一般的なx64 PCのほか、Raspberry Piもサポートしています。 Rancher Desktop のランタイムとしても使われています。 …
Tekton は、kubernetesクラスタ上で動作するCI/CDツールです。2019年のv0.1公開から数年のWIP期間を経て、2025年5月にv1.0GAを宣言しました。
コンテナにスクリプト …
buildahは、kubernetesなどのコンテナイメージをビルドするツールで、Dockerとは独立した実装です。
Debian系ディストリビューションには同名のパッケージがあり、apt …
Tekton Pipelines はkubernetesクラスタ上で動作するCI/CDツールです。
ダッシュボードやCLIを用いて操作する方法が一般的ですが、TektonのCRDの1つ …
bashはログイン時に~/.bashrcなどのスタートアップスクリプトを実行します。 tekton も$BASH_ENVを用いてステップ実行時にスタートアップスクリプトを実行できます。 …
fluentbit はコンパクトなログ加工・配信エージェントです。入力・出力のプラグインを切り替えることで多様な構成に対応できます。
k8sノードからコンテナログ収集する構成 fluentbitは多 …
kubernetesのhostPathボリュームは、クラスタノードのディレクトリをコンテナにマウントする機能です。
k3s など開発環境のローカルクラスタで、コンテナ内からワーキングディレクトリにアク …
権限を追加設定することで、コンテナ内でkubectlを実行してクラスタ操作できます。
コンテナの権限を管理するkubernetes標準の方法はRoleリソースを用います。
RBMACの保証と拡張性のた …
kubernetesの NetworkPolicy は、pod間のパケット転送を限定するリソースです。
内部pod間の接続トポロジーを限定できるほか、denyリストによるIP-banを実装できる場合も …
軽量kubernetesクラスタの k3s はPC1台から小規模構成を手軽に構築できます。
k3sクラスタの設定には、systemdユニットの起動時オプション指定と、 configファイル の2種類を …
Tekton Pipelines はk8sコンテナ上で動作するCIワークフローであるため、データは揮発します。
順序については Tekton Pipelinesの制御フロー で解説していますが、コン …
kubernetesのコンテナイメージはOCI標準と互換性があります。
Dockerにはイメージビルドツールが付属していますが、kubernetesの場合には、 buildkit などを利用します。 …
Unixの別ファイル参照の標準機能にシンボリックリンクがあります。
kubernetesは、シンボリックリンクのマニフェストもkubectl -f applyできます。
$ ls clusterA/ …
Rancher Desktop は k3s を核とするオープンソースのkubernetesディストリビューションです。Docker Desktopと似たような機能をcontainerdベースで提供し …
Kubernetesのノード障害は、機器故障のほかリソース超過によるものが多く発生します。
ワークロードマネージャにはプリエンプティブにコンテナ用リソースを管理してハード資源を使い切って欲しいのですが …
Tektonのタスクは個別のPodに分かれており、タスク間のテキストデータ受け渡しには Results を利用します。
Resultsの出力 ResultsはTaskでリソース宣言します …
KubernetesのCPU/メモリ要求はContainerSpecのresourcesで指定できます。
resourcesの指定方法により、Guaranteed, Burstable, …
TCP通信(非HTTP)のアクセス元IPの伝播には、Proxy Protocolが必要です。
コンテナイメージ Proxy ProtocolのCODECツールとして、 go-mmproxy が手軽です …
kubernetesの Secret は、クレデンシャル類をコンテナイメージなどから分離して供給するための標準機能です。
よく知られている通りSecretは暗号化されてはいないため、権限があれば内容は …
タグ操作 GKEで利用するイメージは一般的にタグを持ちます。ビルド時に省略した場合にはlatestが付いているケースが多いでしょう。
ビルドごとにlatestが指すイメージが変わり、旧latestはタ …
CronJob は定時実行プログラムのcronと同様の機能を提供するJobです。
k8s標準機能であるため、マニフェスト定義だけで利用でき手軽です。
apiVersion: …
kubernetesのノードセレクタを利用すると、特定のノードにPodをデプロイできます。
以下のようにnodeSelectorを記述した場合、stageラベルにdevelopmentを指定したノード …
Tekton Triggers はWebリクエストからビルドパラメータを抽出し、Pipelineを起動する機能を提供しています。
EventListenerがHTTPリクエストを待ち受け …
TektonのPipelineは、Taskの集合体です。
spec.tasksにTaskの配列を定義するのですが、とくに指定しない限り並列に実行されます。
runAfter runAfterは先行タス …
Tekton Triggers は、Tekton Pipelinesにwebhookを追加する機能です。POSTリクエストからタスクを起動します。
CronJob からwebhookを呼ぶことで定時 …
Google Kubernetes Engineが提供する 垂直Pod自動スケーリング (Vertical Pod Autoscaling)は、Podのコンテナリソース(CPU/RAM)を自動調整する …
kubectl get podなど、kubectlコマンドの操作対象に指定するリソースには省略形があります。pod の場合は po です。
リソース名は長いものが多く、省略形を覚えておくとオペレーショ …
LL言語のWebアプリケーションなど、サーバー起動前にソースリポジトリをセットアップしておきたいケースがあります。
更新を考慮して、コンテナ作成段階でgit cloneを実行したい場合、以下のように …
コンテナは起動時の変更を保持しませんが、k8sのVolume機能を利用するとホストのストレージをmountできます。 公式リファレンス にサポートしているVolumeのリストがありますが、AWSの …
kubernetesの機能は、kube-systemネームスペース内のコンテナとして稼動しています。通常、kube-systemのシステムpodは直接操作することはなく、自動運用です。 …
Kubernetesのコンテナ上でコマンド実行するためにはkubectl execを使えます。
## kubectl exec `ssh`不要でコンテナ操作可能 * コンテナ内でコマンドを実行できる …
Google Kubernetes Engine(GKE)は、Google Cloud Platform(GCP)上で動作するマネージドKubernetesです。GCPが提供する世界各国リージョンのデ …
kubernetesには、podの稼働を制御するコントローラーの機能があり、DeploymentやDaemonsetといったコントローラーが主に知られています。Jobもコントローラーの一種で、バッチ処 …
kubernetesのServiceは内部ネットワークの名前解決機能を提供しています。Serviceのnameに設定に設定した名前はホスト名として機能し、各コンテナからその名前でアクセスできます。 …
minikube上のサービスにホストからアクセスするには、まずポートをnode(実機、ここではminikube VM)に割り当てる設定が必要です。
nginxのhttps / http のポートを …
k3s や Rancher Desktop などのローカルkubernetesクラスタ上で、プライベートレジストリのコンテナイメージを起動させるためには、イメージpull時の認証設定が必要です。
認 …
ホストディレクトリのmount MacOSなどのホストディレクトリにコンテナからアクセスするには、起動時の--mountオプションが手軽です。
$ minikube start --mount …
kubernetesをローカル開発環境に構築する場合、minikubeが比較的手軽です。
MacOSでは、Dockerと同様、Linux実行環境としてhyperkitを選択でき、VMより透過的でレスポ …
コンテナイメージのレジストリの1サービスに Google Container Registry(GCR)があり、非公開のプライベートレジストリをホストできます。
GKE(Google …
DaemonSetは全ノード(物理マシン)にPodを配置していくコントローラーです。たとえば、2ノード構成時、DeploymentでPod数2を指定した場合、片方のマシンで2Pod起動することがありま …
dockerやk8sのコンテナ運用をしていると、諸般の事情でイメージ更新後にコンテナが起動しないケースに遭遇します。
原因を追求しようにも、コンテナが死んでしまうので追跡できない……という状況で、コマ …
Google Kubernetes Engine(GKE)はKubernetesのマネージドサービスで、マスターノードがホストされています。また、Webの管理コンソールからバージョンを選択するだけでア …
kubernetesのコンテナの動作はControllerというレイヤで管理します。dockerインスタンスなどの個別のコンテナはPodという単位ですが、kubernetesはクラスタリング・ツールな …
k8sでクライアントのグローバルIPを取得する ため、LoadBalancerの設定にservice.beta.kubernetes.io/external-traffic: OnlyLocalをア …
ネットワーク障害は切り分けが難しいものですが、「kubernetes管理コンテナの不調によるネットワーク障害」というジャンルのトラブルがあります。
この際、システムコンテナを復旧することで直る場合があ …
kubernetes上に構築したシステム障害時の復旧フローの例です。
障害状況の分析 まず、サービス停止に気づいた際、kubectl get podsでPod(コンテナ)の起動状態を確認します。 …
Kubernetes環境で動作するPod(コンテナ)を定期的に再起動するソリューションです。
このシステムは以下のような流れで動作します。
コンテナ上で動作するcronでメインプロセスをkill …
dockerのコンテナの時刻をUTCからJST(日本標準時)に変更するには、環境変数TZにAsia/Tokyoを指定します。
コマンドライン指定するケースでは、
$ docker run -e …
kubernetesのデフォルト挙動では、podが取得するリモートIPがクラスターネットワークのIPになっています。
そのため、httpサーバーのログにも、10.0.0.1などのプライベートIPアクセ …
実行中のコンテナ内にあるファイルをホストとの間でコピー転送するには、kubectl|docker container cpを使えます。
config類のベースファイルや実行ログを取得する場合などに便利 …