kopsを使ってaws上に構築したkubernetesクラスタにkubernetes dashboard、weave scopeを追加する
手順とアクセス方法を書いていく
環境
- macOS: 10.13.x
- kops: 1.7.0
- kubelet: 1.7.2
- kubernetes dashboard: 1.7.1
- weave scope: 1.6.5
インストールコマンドのURLは公式ページをみて適宜書き換えてください
kubernetes dashboard
クラスタの管理をブラウザから行うことができる。 現在の設定やpodの状態の閲覧、新しくpodのデプロイなどができる。
インストール
手順はほとんど参考ページを翻訳しただけ
kubectl create -f https://raw.githubusercontent.com/kubernetes/kops/master/addons/kubernetes-dashboard/v1.7.1.yaml
を実行すると、dashboard用のpodやらserviceが作成される
しばらく待つとpodのSTATUSがrunningになるはず
kubectl get po,svc -n kube-system | grep dashboard
po/kubernetes-dashboard-2323822625-3f6ql 1/1 Running 0 7d
svc/kubernetes-dashboard 100.67.144.72 <none> 80/TCP 7d
アクセス方法
外部
masterのエンドポイントからみることができる。
kubectl cluster-info
Kubernetes master is running at https://api-xxxx.elb.amazonaws.com
KubeDNS is running at https://api-xxxx.elb.amazonaws.com/api/v1/namespaces/kube-system/services/kube-dns/proxy
この場合はhttps://api-xxxx.elb.amazonaws.com/ui にアクセスすることでみることができる
保護されていない通信です、とか出るけど無視してアクセスすると(いいのか?)、
basic認証がかかっているのでアカウント情報を入力する。usernameとpasswordは、
~/.kube/config
...
- name: "クラスタ名"
user:
client-certificate-data: "なんか長いtoken文字列"
client-key-data: "なんか長いtoken文字列"
password: "パスワード"
username: admin
...
ローカル
ローカルでみたいときは下のコマンドを実行すると、http://localhost:8001/ui からアクセスすることができる
kubectl proxy
Starting to serve on 127.0.0.1:8001
weave scope
CPUの使用率などのリソースをリアルタイムで監視できる。podのネットワークが図でみれたりする。
インストール
クエリにk8s-service-type=LoadBalancerを指定することで
新たにロードバランサーを作り、ネットワーク外部からアクセスできるようになる。
kubectl create -n kube-system -f
'https://cloud.weave.works/k8s/scope.yaml?k8s-service-type=LoadBalancer'
podのSTATUSがRunningなっているのを確認。
kubectl get po,svc -n kube-system | grep weave
po/weave-scope-agent-qpzlh 1/1 Running 4 13d
po/weave-scope-agent-v10xd 1/1 Running 1 13d
po/weave-scope-app-2977049826-khcj1 1/1 Running 3 12d
svc/weave-scope-app 100.68.22.184 "external-ip" 80:31556/TCP 19d
アクセス方法
外部
ロードバランサーのエンドポイント(上コマンドの”external-ip”部分)がアクセス先になる。
ローカル
ローカルでみたいときは下のコマンドを実行すると、http://localhost:4040 でみることができる(コマンドの意味はよくわかってない)
kubectl port-forward -n kube-system "$(kubectl get -n kube-system pod --selector=weave-scope-component=app -o jsonpath='{.items..metadata.name}')" 4040
kube-systemに色々なpodが設置されているのがわかる