💭

kindでエフェメラルコンテナを有効化する設定

2021/07/03に公開

はじめに

kindクラスターでエフェメラルコンテナがうまく動きませんでした。原因はよくわかりませんが、回避策を見つけたため共有します。

TL;DR

config.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
featureGates:
  EphemeralContainers: true
$ kind create cluster --config config.yaml

環境

$ kind version
kind v0.11.1 go1.16.4 darwin/arm64

NG例

Kubernetes完全ガイド 第2版』P.37 リスト 3.2を利用しました。

config.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
kubeadmConfigPatches:
- |-
  apiVersion: kubeadm.k8s.io/v1beta2
  kind: ClusterConfiguration
  metadata:
    name: config
  apiServer:
    extraArgs:
      "feature-gates": "EphemeralContainers=true"

Debugging with an ephemeral debug containerを試してみます。

$ kubectl run ephemeral-demo --image=k8s.gcr.io/pause:3.1 --restart=Never

$ kubectl debug -it ephemeral-demo --image=busybox --target=ephemeral-demo
Defaulting debug container name to debugger-8xzrl.

ここから進まず、エフェメラルコンテナに接続できませんでした。

OK例

調べているとEphemeral containers using kubectl-debug does not seem to workというIssueに行き着きました。コメントで設定例が提示されていました。

config.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
featureGates:
  EphemeralContainers: true

再度、Debugging with an ephemeral debug containerを試してみます。

$ kubectl run ephemeral-demo --image=k8s.gcr.io/pause:3.1 --restart=Never

$ kubectl debug -it ephemeral-demo --image=busybox --target=ephemeral-demo
Defaulting debug container name to debugger-dls8z.
If you don't see a command prompt, try pressing enter.
/ #

おわりに

エフェメラルコンテナを利用できるようになって万々歳。と思いきや、エフェメラルコンテナからアプリケーションコンテナのファイルを見る方法がわからず、本来やりたかったことはできませんでした。quay.io/prometheus/prometheus:v2.26.0のPrometheus設定ファイルを更新して動作確認したかったのですが・・・

参考

GitHubで編集を提案

Discussion