はじめに
minikubeにログインする際はminikube ssh
を用いますが
ログイン時はdockerユーザであるためコマンド実行時に権限不足となる場合があります。
本記事はKubernetes関連の設定ファイルが格納される
/etc/kubernetes
配下を調査した結果をシェアします。
環境情報
- Kubernetes v1.17(minikube)
- Buildroot 2019.02.7(minikubeのos-release)
rootユーザにスイッチ
ログイン時はdockerユーザですが
$ whoami docker
以下にてパスワードを求められることなくrootユーザにスイッチできます。
$ su - #
ちなみにminikube上のユーザを見てみましたが確かにrootユーザにはパスワードは設定されていませんでした。
# cat /etc/shadow root::10933:0:99999:7::: ... docker:$6$1DJnnoKf2FeWo7J$fyC.1A5MKXNiIOWe0Yh1lVi/RRGFk7ahQKWE3bqmsDcLEpTGB4ZbapaDqr vvvMqdJwnsRimIHAwJoJO2MNhpT0::::::: ...
ちなみに以下はパスワード設定時の/etc/shadowです。
# passwd Changing password for root New password: Bad password: too weak Retype password: passwd: password for root changed by root # cat /etc/shadow root:$1$uhDSjlqJ$b.8w0xXJNgqCWP9Qpe4oc/:18302:0:99999:7::: ...
/etc/kubernetesの調査
minikubeはマスターとノードを同一環境で提供しているので以下のディレクトリ直下にてKubernetes関連のファイルが一同に揃っています。
# ls -l /etc/kubernetes/ total 28 drwxr-xr-x 2 root root .. addons -rw------- 1 root root .. admin.conf -rw------- 1 root root .. controller-manager.conf -rw------- 1 root root .. kubelet.conf drwxr-xr-x 2 root root .. manifests
addons
当ディレクトリ配下は以下で
# ls dashboard-clusterrole.yaml dashboard-rolebinding.yaml dashboard-clusterrolebinding.yaml dashboard-sa.yaml dashboard-configmap.yaml dashboard-secret.yaml dashboard-dp.yaml dashboard-svc.yaml dashboard-ns.yaml storage-provisioner.yaml dashboard-role.yaml storageclass.yaml
例えばdashboardのサービスのマニフェスト等も確認できます。
kind: Service apiVersion: v1 metadata: labels: k8s-app: kubernetes-dashboard kubernetes.io/minikube-addons: dashboard addonmanager.kubernetes.io/mode: Reconcile name: kubernetes-dashboard namespace: kubernetes-dashboard spec: ports: - port: 80 targetPort: 9090 selector: k8s-app: kubernetes-dashboard --- kind: Service apiVersion: v1 metadata: labels: k8s-app: dashboard-metrics-scraper kubernetes.io/minikube-addons: dashboard addonmanager.kubernetes.io/mode: Reconcile name: dashboard-metrics-scraper namespace: kubernetes-dashboard spec: ports: - port: 8000 targetPort: 8000 selector: k8s-app: dashboard-metrics-scraper
manifest
当ディレクトリ配下は以下です。
# ls manifests/ addon-manager.yaml.tmpl kube-apiserver.yaml kube-scheduler.yaml etcd.yaml kube-controller-manager.yaml
おまけ
マスターとワーカーを別でインストールする場合は以下のようなファイル群がそれぞれに配置されます。
Master
/etc/kubernetes/ ├── admin.conf ├── controller-manager.conf ├── kubelet.conf ├── manifests │ ├── etcd.yaml │ ├── kube-apiserver.yaml │ ├── kube-controller-manager.yaml │ └── kube-scheduler.yaml ├── pki │ ├── apiserver-etcd-client.crt │ ├── apiserver-etcd-client.key │ ├── apiserver-kubelet-client.crt │ ├── apiserver-kubelet-client.key │ ├── apiserver.crt │ ├── apiserver.key │ ├── ca.crt │ ├── ca.key │ ├── etcd │ │ ├── ca.crt │ │ ├── ca.key │ │ ├── healthcheck-client.crt │ │ ├── healthcheck-client.key │ │ ├── peer.crt │ │ ├── peer.key │ │ ├── server.crt │ │ └── server.key │ ├── front-proxy-ca.crt │ ├── front-proxy-ca.key │ ├── front-proxy-client.crt │ ├── front-proxy-client.key │ ├── sa.key │ └── sa.pub └── scheduler.conf
Worker
/etc/kubernetes/ ├── bootstrap-kubelet.conf ├── kubelet.conf ├── manifests └── pki └── ca.crt
終わりに
Kubernetesのマスター及びNodeを分けて用意する場合は、/etc/kubernetes周りのファイルに手を加える必要があるので、まずはminikube上でどうなっているのかを確認したい場合はぜひrootにスイッチした上で設定ファイルを漁ってみてください。