Mac
docker
kubernetes

DockerをMacにインストールしてKubernetes Dashboardにアクセスしたメモ

勉強のためにDockerとKubernetesをMac上にインストールしてみました。

どがつく素人なのでお気付きの点があればご指摘いただけると大変ありがたいです。


やること

DockerおよびKubernetesをMacにインストールし、Kubernetes Dashboardにアクセスするところまでやってみます。


参考にした記事

https://qiita.com/Ricordanza/items/8aa0b65f140d483feaa3

https://qiita.com/h-sakano/items/79bb15f7a0661e141c75


Dockerのインストール

ここからDocker Desktop (Mac)をインストール

https://store.docker.com/editions/community/docker-ce-desktop-mac

インストールにあたり、Sign upが必要でした。登録してあげるか・・・

ダウンロードができたら、Docker.dmgを開いて指示通りにインストールを進めます。

アプリを開いて、右上のdockerアイコンからPreferenceを開きます。

スクリーンショット 2019-02-08 16.28.33.png

おっと・・・食べログ開いているのが見えてしまいましたね・・・

Kubernetesのタブで「enable Kubernetes」にチェックを入れ、Applyします。

スクリーンショット 2019-02-08 16.29.26.png

画面に従ってInstallを進めます。

「Installation complete!」

がでできました!やったね!


動作確認

続いてターミナルで動作確認をします。

まず起動の確認をします。

$ kubectl config get-contexts

CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* docker-for-desktop docker-for-desktop-cluster docker-for-desktop

続いてnodeの確認

$ kubectl get nodes

NAME STATUS ROLES AGE VERSION
docker-for-desktop Ready master 20m v1.10.11

podの確認

$ kubectl get po --all-namespaces

NAMESPACE NAME READY STATUS RESTARTS AGE
docker compose-74649b4db6-gk78h 1/1 Running 0 20m
docker compose-api-6ddbbd49bb-plkqd 1/1 Running 0 20m
kube-system etcd-docker-for-desktop 1/1 Running 0 20m
kube-system kube-apiserver-docker-for-desktop 1/1 Running 0 20m
kube-system kube-controller-manager-docker-for-desktop 1/1 Running 0 20m
kube-system kube-dns-86f4d74b45-6pk5f 3/3 Running 0 20m
kube-system kube-proxy-wxh6k 1/1 Running 0 20m
kube-system kube-scheduler-docker-for-desktop 1/1 Running 0 20m

うんうん


kubernetes-dashboardのインストール

していきましょう

以下のURLのinstallation通りにインストールすると最新のものを使えて安心安全ですね!

https://github.com/kubernetes/dashboard/releases

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

secret "kubernetes-dashboard-certs" created
serviceaccount "kubernetes-dashboard" created
role.rbac.authorization.k8s.io "kubernetes-dashboard-minimal" created
rolebinding.rbac.authorization.k8s.io "kubernetes-dashboard-minimal" created
deployment.apps "kubernetes-dashboard" created
service "kubernetes-dashboard" created

動いているか確認しましょう

$ kubectl get deployments,replicasets,pods,service --all-namespaces -o wide --selector=k8s-app=kubernetes-dashboard

dashboardのSTATUSがRunningになっているか確認しましょう

NAMESPACE     NAME                                         DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE       CONTAINERS             IMAGES                                          SELECTOR

kube-system deployment.extensions/kubernetes-dashboard 1 1 1 1 23s kubernetes-dashboard k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1 k8s-app=kubernetes-dashboard

NAMESPACE NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
kube-system replicaset.extensions/kubernetes-dashboard-669f9bbd46 1 1 1 23s kubernetes-dashboard k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1 k8s-app=kubernetes-dashboard,pod-template-hash=2259566802

NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE
kube-system pod/kubernetes-dashboard-669f9bbd46-skmj5 1/1 Running 0 23s 10.1.0.6 docker-for-desktop

NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
kube-system service/kubernetes-dashboard ClusterIP 10.103.154.163 <none> 443/TCP 23s k8s-app=kubernetes-dashboard

うんうん


ダッシュボードにアクセス

ここまでできたらサービスを立ち上げてみましょう

$ kubectl proxy

立ち上げたら以下のURLにアクセスしてみます・・・

http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/

おっと、何やら認証を求められますね?スクリーンショット 2019-02-08 16.55.56.png

ここで権限の情報を見てみましょう

$ kubectl -n kube-system get secret

NAME TYPE DATA AGE
attachdetach-controller-token-ccjnx kubernetes.io/service-account-token 3 1h
bootstrap-signer-token-7szpc kubernetes.io/service-account-token 3 1h
bootstrap-token-cawlk6 bootstrap.kubernetes.io/token 7 1h
certificate-controller-token-4gtmk kubernetes.io/service-account-token 3 1h
clusterrole-aggregation-controller-token-966np kubernetes.io/service-account-token 3 1h
cronjob-controller-token-6zxb9 kubernetes.io/service-account-token 3 1h
daemon-set-controller-token-9w9wg kubernetes.io/service-account-token 3 1h
default-token-6lkvx kubernetes.io/service-account-token 3 1h
deployment-controller-token-2hsb6 kubernetes.io/service-account-token 3 1h
disruption-controller-token-qk857 kubernetes.io/service-account-token 3 1h
endpoint-controller-token-lpjqd kubernetes.io/service-account-token 3 1h
generic-garbage-collector-token-vgpc4 kubernetes.io/service-account-token 3 1h
horizontal-pod-autoscaler-token-f6xst kubernetes.io/service-account-token 3 1h
job-controller-token-67xp9 kubernetes.io/service-account-token 3 1h
kube-dns-token-8w495 kubernetes.io/service-account-token 3 1h
kube-proxy-token-96lwg kubernetes.io/service-account-token 3 1h
kubernetes-dashboard-certs Opaque 0 4m
kubernetes-dashboard-key-holder Opaque 2 41m
kubernetes-dashboard-token-cxzth kubernetes.io/service-account-token 3 4m
namespace-controller-token-mr5rw kubernetes.io/service-account-token 3 1h
node-controller-token-h5h2x kubernetes.io/service-account-token 3 1h
persistent-volume-binder-token-vp7b5 kubernetes.io/service-account-token 3 1h
pod-garbage-collector-token-hgb7q kubernetes.io/service-account-token 3 1h
pv-protection-controller-token-hbrn9 kubernetes.io/service-account-token 3 1h
pvc-protection-controller-token-99fxc kubernetes.io/service-account-token 3 1h
replicaset-controller-token-brq4b kubernetes.io/service-account-token 3 1h
replication-controller-token-xrkvj kubernetes.io/service-account-token 3 1h
resourcequota-controller-token-q9ckn kubernetes.io/service-account-token 3 1h
service-account-controller-token-qs45v kubernetes.io/service-account-token 3 1h
service-controller-token-26llj kubernetes.io/service-account-token 3 1h
statefulset-controller-token-p26mt kubernetes.io/service-account-token 3 1h
token-cleaner-token-x4bm9 kubernetes.io/service-account-token 3 1h
ttl-controller-token-2jlcq kubernetes.io/service-account-token 3 1h

deployment-controllerの権限でログインしてみましょう

#上記のリストからdeployment-controllerを探し出して指定する


$ kubectl -n kube-system describe secret deployment-controller-token-2hsb6
Name: deployment-controller-token-2hsb6
Namespace: kube-system
Labels: <none>
Annotations: kubernetes.io/service-account.name=deployment-controller
kubernetes.io/service-account.uid=7aae99f8-2b66-11e9-886e-025000000001

Type: kubernetes.io/service-account-token

Data
====
ca.crt: 1025 bytes
namespace: 11 bytes
token: #ここにtokenが現れる

ここで現れたtokenを先ほどの認証画面で入れてあげます

スクリーンショット 2019-02-08 17.05.05.png

ログインできましたね!!!!

今日はここまでです〜〜!