LoginSignup
8
5

More than 5 years have passed since last update.

Kubernetes: Minikube で作成したクラスタの etcd にアクセスする

Last updated at Posted at 2018-03-22

はじめに

etcd は Kubernetes における唯一のデータストアです。一般的な利用の中で etcd に直接アクセスしたいことはないと思いますが、Kubernetes オブジェクトのエンコード/デコード周りの動作を確認したいときに Minikube で作成した検証用クラスタを使えると便利です。

TL;DR

$ minikube ssh
$ docker run -it --net host -e ETCDCTL_API=3 gcr.io/etcd-development/etcd /bin/sh
$ etcdctl version

Minikube で作成したクラスタの etcd にアクセスする

Minikube で作成するクラスタは、etcd も含めて Kubernetes をワンバイナリで動作させる Localkube が使われていますが、組み込まれている etcd も通常と同様に 127.0.0.1:2379 で待ち受けているので、Minikube の VM にログインして直接アクセスするだけです。

ポイントとして、etcd を操作する etcdctl をインストールするのが面倒なので etcd コンテナから操作すると便利です。その際 --net=host オプションを利用します。

$ minikube start --kubernetes-version=v1.8.0
$ minikube ssh
(minikube)  $ docker run -it --net host -e ETCDCTL_API=3 gcr.io/etcd-development/etcd /bin/sh
(container) # etcdctl version
etcdctl version: 3.3.2
API version: 3.3
(container) # etcdctl member list
8e9e05c52164694d, started, default, http://localhost:2380, http://localhost:2379

Minikube の Kubernetes 1.7 以下では etcd v2 API が使われているので、ETCDCTL_API=2 として実行させます。

(minikube)  $ docker run -it --net host -e ETCDCTL_API=2 gcr.io/etcd-development/etcd /bin/sh
(container) # etcdctl member list
fcf2ad36debdd5bb: name=kubeetcd peerURLs=http://0.0.0.0:2380 clientURLs=http://0.0.0.0:2379 isLeader=true

ここからは etcd を操作する上での便利情報です。

全てのキーをリストする

クラスタの全てのオブジェクトのキーを確認します。

(container) # etcdctl get "" --prefix --keys-only | sed '/^\s*$/d'
/registry/apiregistration.k8s.io/apiservices/v1.
/registry/apiregistration.k8s.io/apiservices/v1.authentication.k8s.io
/registry/apiregistration.k8s.io/apiservices/v1.authorization.k8s.io
/registry/apiregistration.k8s.io/apiservices/v1.autoscaling
/registry/apiregistration.k8s.io/apiservices/v1.batch
/registry/apiregistration.k8s.io/apiservices/v1.networking.k8s.io
/registry/apiregistration.k8s.io/apiservices/v1.rbac.authorization.k8s.io
/registry/apiregistration.k8s.io/apiservices/v1.storage.k8s.io
/registry/apiregistration.k8s.io/apiservices/v1alpha1.admissionregistration.k8s.io
/registry/apiregistration.k8s.io/apiservices/v1alpha1.rbac.authorization.k8s.io
/registry/apiregistration.k8s.io/apiservices/v1alpha1.settings.k8s.io
/registry/apiregistration.k8s.io/apiservices/v1beta1.apiextensions.k8s.io
/registry/apiregistration.k8s.io/apiservices/v1beta1.apps
/registry/apiregistration.k8s.io/apiservices/v1beta1.authentication.k8s.io
/registry/apiregistration.k8s.io/apiservices/v1beta1.authorization.k8s.io
/registry/apiregistration.k8s.io/apiservices/v1beta1.batch
/registry/apiregistration.k8s.io/apiservices/v1beta1.certificates.k8s.io
/registry/apiregistration.k8s.io/apiservices/v1beta1.extensions
/registry/apiregistration.k8s.io/apiservices/v1beta1.policy
/registry/apiregistration.k8s.io/apiservices/v1beta1.rbac.authorization.k8s.io
/registry/apiregistration.k8s.io/apiservices/v1beta1.storage.k8s.io
/registry/apiregistration.k8s.io/apiservices/v1beta2.apps
/registry/apiregistration.k8s.io/apiservices/v2alpha1.batch
/registry/apiregistration.k8s.io/apiservices/v2beta1.autoscaling
/registry/configmaps/kube-system/extension-apiserver-authentication
/registry/events/default/minikube.151d300ae651407d
/registry/events/default/minikube.151d300ae6ddedb4
/registry/events/default/minikube.151d300ae6ddfb98
/registry/events/default/minikube.151d300ae6de0283
/registry/events/default/minikube.151d300ae787b8a1
/registry/events/default/minikube.151d300b07a92c64
/registry/events/default/minikube.151d300b07aa71c2
/registry/events/default/minikube.151d300bde808339
/registry/events/kube-system/kube-controller-manager.151d300a53d1a582
/registry/events/kube-system/kube-scheduler.151d300abfe55fe8
/registry/minions/minikube
/registry/namespaces/default
/registry/namespaces/kube-public
/registry/namespaces/kube-system
/registry/ranges/serviceips
/registry/ranges/servicenodeports
/registry/secrets/default/default-token-ss86j
/registry/secrets/kube-public/default-token-pc694
/registry/secrets/kube-system/default-token-g7gbj
/registry/serviceaccounts/default/default
/registry/serviceaccounts/kube-public/default
/registry/serviceaccounts/kube-system/default
/registry/services/endpoints/default/kubernetes
/registry/services/endpoints/kube-system/kube-controller-manager
/registry/services/endpoints/kube-system/kube-scheduler
/registry/services/specs/default/kubernetes
compact_rev_key

Minikube Kubernetes 1.7 以下 (ETCDCTL_API=2) ではコマンド体系が異なります。

(container) # etcdctl ls -r

特定のキーの値を取得する

Protocol Buffers としてエンコードされているため、見にくいですがなんとなく中身は分かります。

# etcdctl get /registry/namespaces/kube-system
/registry/namespaces/kube-system
k8s

v1      Namespacec
I

kube-system"*$db3b961e-2b19-11e8-bfcb-08002730655c2����z

kubernetes
Active"
8
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
5