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