Laptopを新調したので、改めてDocker for Windowsを Win 10 Pro に入れてみる。ここでは以下まで。
- 入れる
- Dashboard出す
環境
- Surface Laptop ( Win 10 Pro )
Docker for Windows インストール
ダウンロードして、エグゼたたくだけ(Hyper-V有効化も同時に)
kubernetes 有効化
ボタン押すだけ
PS C:\data> kubectl cluster-info
Kubernetes master is running at https://localhost:6445
KubeDNS is running at https://localhost:6445/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
PS C:\data> kubectl get node -o wide
NAME STATUS ROLES AGE VERSION EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
docker-for-desktop Ready master 1d v1.10.3 <none> Docker for Windows 4.9.93-linuxkit-aufs docker://18.6.0
PS C:\data> kubectl get pod -o wide --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE
docker compose-7447646cf5-bzn6g 1/1 Running 0 1d 10.1.0.2 docker-for-desktop
docker compose-api-6fbc44c575-h5slr 1/1 Running 0 1d 192.168.65.3 docker-for-desktop
kube-system etcd-docker-for-desktop 1/1 Running 0 1d 192.168.65.3 docker-for-desktop
kube-system kube-apiserver-docker-for-desktop 1/1 Running 0 1d 192.168.65.3 docker-for-desktop
kube-system kube-controller-manager-docker-for-desktop 1/1 Running 0 1d 192.168.65.3 docker-for-desktop
kube-system kube-dns-86f4d74b45-hlz9s 3/3 Running 0 1d 10.1.0.4 docker-for-desktop
kube-system kube-proxy-2s5j7 1/1 Running 0 1d 192.168.65.3 docker-for-desktop
kube-system kube-scheduler-docker-for-desktop 1/1 Running 0 1d 192.168.65.3 docker-for-desktop
Dashboard
デプロイ
PS C:\> kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
ローカル(Docker for Windowsを入れたLaptop)からブラウザアクセスするために以下を実施。
PS C:\data\dashboard> kubectl proxy
Starting to serve on 127.0.0.1:8001
へアクセス。
Service Account 作成と、ClusterRoleのバインディング
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kube-system
PS C:\data\dashboard> kubectl apply -f .\admin-user.yaml
serviceaccount "admin-user" created
Docker for Windows の kubernetes では Cluster 内に一般的なツールのロールが存在している。これを使用して、作ったSAのロールバインディングのみを作成できる。
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kube-system
PS C:\data\dashboard> kubectl apply -f .\clusterrolebind.yaml
clusterrolebinding.rbac.authorization.k8s.io "admin-user" created
PS C:\data\dashboard> kubectl -n kube-system describe secret admin-user-token-4pcz5
Name: admin-user-token-4pcz5
Namespace: kube-system
Labels: <none>
Annotations: kubernetes.io/service-account.name=admin-user
kubernetes.io/service-account.uid=47da24c7-9ad4-11e8-962d-00155d001201
Type: kubernetes.io/service-account-token
Data
====
namespace: 11 bytes
token: eyJhbGciOiJSUzI1NiIsImtpZCI6Ii <略> _5ztb06m8VPnfKm1OAA
上記の token: の部分をコピーして Kubernetes Dashboard ログインポップアップの Token に入力して、Sign in する。
デフォルトのVMだと、2vCPU,2GB Memoryで稼働している。上記はApp PodはDashboard以外はなにも動かしていない状態。このあと動かすとするとちょっとCPUが苦し気か・・・・
k8s が起動しない・・・問題-1
2018/9/11現在
まだきっかけが不明だが、kubernetesが starting ...のままスタックしてしまうことがある。この状態だと起動していないことになる。ネットワーク周りが引っかかってるなとおもいつつ、Github見てみたら、やはり同じ現象にはまっていた人が何人もいて、ワークアラウンドを提示していた人がいたので、それを参考にしてみた。
ワークアラウンド手順
- Settings -> Reset ->「Reset to factory defaults...」
- Dockerが動いているMobyLinuxVMが一度消えるので、ダウンロード済みのイメージ等全部消えるので注意
- ファイアウォールを無効化
- 再度、Enable Kubernetes
これで起動するようになる。
この後(あとじゃなくてもいいけど)vpnkit.exe をFirewallで許可アプリに設定する。
k8s が起動しない・・・問題-2
問題-1のワークアラウンドを実施しても、PC再起動後に、同様の減少になっている場合がある。
ワークアラウンド手順
暫定ではあるが、このときDockerはrunningだがCLIからデーモンにうまくつながらない状態になっているのであれば、DockerをRestartしてみて、きちんとデーモンへのアクセスも確認した後に、k8sをRestartするとrunningになる事がある。