HOME
R&D
Kubernetes
Kubernetes
Photo by
CHUTTERSNAP
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台から小規模構成を手軽に構築できます。 Linuxにセットアップした場合の一般的なconfigパス …
TektonのWorkspace機能
Tekton Pipelinesはk8sコンテナ上で動作するCIワークフローであるため、データは揮発します。 順序については Tekton Pipelinesの制御フローで解説していますが、コンテナ …
kubernetesコンテナイメージのローカルビルド
kubernetesのコンテナイメージはOCI標準と互換性があります。 Dockerにはイメージビルドツールが付属していますが、kubernetesの場合には、 buildkitなどを利用します。 …
マニフェストのシンボリックリンク参照
Unixの別ファイル参照の標準機能にシンボリックリンクがあります。 kubernetesは、シンボリックリンクのマニフェストもkubectl -f applyできます。 $ ls clusterA/ …
k3s
k3sは軽量にリパックしたkubernetesです。 Rancher Desktopのランタイムとしても使われています。 サイトのスクリプトを実行するとインストールできます。 $ curl -sfL …
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, …
Proxy Protocolを中継するサイドカー
TCP通信(非HTTP)のアクセス元IPの伝播には、Proxy Protocolが必要です。 コンテナイメージ Proxy ProtocolのCODECツールとして、 go-mmproxyが手軽です。 …
kubernetesのSecretでクレデンシャル管理
kubernetesの Secretは、クレデンシャル類をコンテナイメージなどから分離して供給するための標準機能です。 よく知られている通りSecretは暗号化されてはいないため、権限があれば内容は確 …
Google Artifact RegistryのGKEイメージ操作
タグ操作 GKEで利用するイメージは一般的にタグを持ちます。ビルド時に省略した場合にはlatestが付いているケースが多いでしょう。 ビルドごとにlatestが指すイメージが変わり、旧latestはタ …
kubernetesのCronjob設定
CronJobは定時実行プログラムのcronと同様の機能を提供するJobです。 k8s標準機能であるため、マニフェスト定義だけで利用でき手軽です。 apiVersion: batch/v1beta1 …
特定のノードプールに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を追加する機能です。 CronJobからwebhookを呼ぶことで定時バッチの実行も可能です。 前提条件 まず、 …
GKEの垂直Pod自動スケーリング
Google Kubernetes Engineが提供する 垂直Pod自動スケーリング(Vertical Pod Autoscaling)は、Podのコンテナリソース(CPU/RAM)を自動調整する機 …
Tekton Pipelines
Tektonは、kubernetesクラスタ上で動作するCI/CDツールです。 コンテナにスクリプトやパラメータを注入し、ワークフローを制御することでテストやビルドを実装します。 ビルドのパイプライ …
kubernetesリソースの省略形とkubectl補完
kubectl get podなど、kubectlコマンドの操作対象に指定するリソースには省略形があります。pod の場合は po です。 リソース名は長いものが多く、省略形を覚えておくとオペレーショ …
コンテナ起動前にリポジトリsetup
LL言語のWebアプリケーションなど、サーバー起動前にソースリポジトリをセットアップしておきたいケースがあります。 更新を考慮して、コンテナ作成段階でgit cloneを実行したい場合、以下のよう …
Kubernetesからディスクリソースをデプロイする
コンテナは起動時の変更を保持しませんが、k8sのVolume機能を利用するとホストのストレージをmountできます。 公式リファレンスにサポートしているVolumeのリストがありますが、AWSのEBS …
Kubernetesのシステムリソース調整
kubernetesの機能は、kube-systemネームスペース内のコンテナとして稼動しています。通常、kube-systemのシステムpodは直接操作することはなく、自動運用です。 …
kubectl execの使い方
Kubernetesのコンテナ上でコマンド実行するためにはkubectl execを使えます。 ## kubectl exec `ssh`不要でコンテナ操作可能 * …
GKEクラスタ移行のホワイトペーパー
Google Kubernetes Engine(GKE)は、Google Cloud Platform(GCP)上で動作するマネージドKubernetesです。GCPが提供する世界各国リージョンの …
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 …
minikube インストール
kubernetesをローカル開発環境に構築する場合、minikubeが比較的手軽です。 MacOSでは、Dockerと同様、Linux実行環境としてhyperkitを選択でき、VMより透過的でレスポ …
Google Container Registryへのdockerイメージ配信
コンテナイメージのレジストリの1サービスに Google Container Registry(GCR)があり、非公開のプライベートレジストリをホストできます。 GKE(Google …
DaemonSetの設定
DaemonSetは全ノード(物理マシン)にPodを配置していくコントローラーです。たとえば、2ノード構成時、DeploymentでPod数2を指定した場合、片方のマシンで2Pod起動することがありま …
コンテナが起動しない場合の対処法
dockerやk8sのコンテナ運用をしていると、諸般の事情でイメージ更新後にコンテナが起動しないケースに遭遇します。 原因を追求しようにも、コンテナが死んでしまうので追跡できない……という状況で、コマ …
GKEアップグレード時のダウンタイム
Google Kubernetes Engine(GKE)はKubernetesのマネージドサービスで、マスターノードがホストされています。また、Webの管理コンソールからバージョンを選択するだけでア …
kubernetesのDeployment
kubernetesのコンテナの動作はControllerというレイヤで管理します。dockerインスタンスなどの個別のコンテナはPodという単位ですが、kubernetesはクラスタリング・ツールな …
k8sリクエスト消失障害例
k8sでクライアントのグローバルIPを取得するため、LoadBalancerの設定にservice.beta.kubernetes.io/external-traffic: OnlyLocalをアノ …
kubernetesの管理コンテナ群を操作する
ネットワーク障害は切り分けが難しいものですが、「kubernetes管理コンテナの不調によるネットワーク障害」というジャンルのトラブルがあります。 この際、システムコンテナを復旧することで直る場合があ …
kubernetesの物理障害の復旧事例
kubernetes上に構築したシステム障害時の復旧フローの例です。 障害状況の分析 まず、サービス停止に気づいた際、kubectl get podsでPod(コンテナ)の起動状態を確認します。 …
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類のベースファイルや実行ログを取得する場合などに便利 …
Google Kubernetes Engineのバージョンアップ
Google Kubernetes Engine(GKE、2017秋にGoogle Container Engineから改称)はGCE上に構築されたkubernetesのマネージドクラスタです。 …
kubernetesのnode運用の具体例
kubernetesのインフラ運用の楽な点は、dockerコンテナとサーバーを切り分けて運用できる点です。 dockerのイメージが完成していれば、サーバーのクラスタを指定して起動するだけです。 ハー …
1/2
»