web-dev-qa-db-ja.com

ブラウザ経由でKubernetes UIにアクセスする方法は?

contrib/ansible スクリプトを使用してKubernetesをインストールしました。 cluster-infoを実行すると:

[osboxes@kube-master-def ~]$ kubectl cluster-info
Kubernetes master is running at http://localhost:8080
Elasticsearch is running at http://localhost:8080/api/v1/proxy/namespaces/kube-system/services/elasticsearch-logging
Heapster is running at http://localhost:8080/api/v1/proxy/namespaces/kube-system/services/heapster
Kibana is running at http://localhost:8080/api/v1/proxy/namespaces/kube-system/services/kibana-logging
KubeDNS is running at http://localhost:8080/api/v1/proxy/namespaces/kube-system/services/kube-dns
kubedash is running at http://localhost:8080/api/v1/proxy/namespaces/kube-system/services/kubedash
Grafana is running at http://localhost:8080/api/v1/proxy/namespaces/kube-system/services/monitoring-grafana
InfluxDB is running at http://localhost:8080/api/v1/proxy/namespaces/kube-system/services/monitoring-influxdb

クラスターは、安全でないポートを持つlocalhostで公開され、SSLを介して安全なポート443で公開されます

kube 18103 1 0 12:20 ? 00:02:57 /usr/bin/kube-controller-manager --logtostderr=true --v=0 --master=https://10.57.50.161:443 -- kubeconfig=/etc/kubernetes/controller-manager.kubeconfig --service-account-private-key-file=/etc/kubernetes/certs/server.key --root-ca-file=/etc/kubernetes/certs/ca.crt kube 18217 1 0 12:20 ? 00:00:15 /usr/bin/kube-scheduler --logtostderr=true --v=0 --master=https://10.57.50.161:443 --kubeconfig=/etc/kubernetes/scheduler.kubeconfig root 27094 1 0 12:21 ? 00:00:00 /bin/bash /usr/libexec/kubernetes/kube-addons.sh kube 27300 1 1 12:21 ? 00:05:36 /usr/bin/kube-apiserver --logtostderr=true --v=0 --etcd-servers=http://10.57.50.161:2379 --insecure-bind-address=127.0.0.1 --secure-port=443 --allow-privileged=true --service-cluster-ip-range=10.254.0.0/16 --admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota --tls-cert-file=/etc/kubernetes/certs/server.crt --tls-private-key-file=/etc/kubernetes/certs/server.key --client-ca-file=/etc/kubernetes/certs/ca.crt --token-auth-file=/etc/kubernetes/tokens/known_tokens.csv --service-account-key-file=/etc/kubernetes/certs/server.crt

Kube-masterマシンからローカルマシンに証明書をコピーし、caルート証明書をインストールしました。 chrome/safariブラウザはcaルート証明書を受け入れています。 https://10.57.50.161/ui にアクセスしようとすると、「Unauthorized」が表示されます

Kubernetes UIにアクセスするにはどうすればよいですか?

17
Romande

Kubectlプロキシを使用できます。

構成ファイルを使用しているかどうかに応じて、コマンドラインで実行します

kubectl proxy

または

kubectl --kubeconfig=kubeconfig proxy

同様の応答が得られるはずです

127.0.0.1:8001での配信開始

ブラウザを開いて、

http://127.0.0.1:8001/ui/ (非推奨、 kubernetes/dashboard を参照)
http:// localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/ proxy /

ポートが一致することを確認する必要があります。

23
Bcf Ant

これはあなたがネットワークからアクセスできるという私のために働く

kubectl proxy --address 0.0.0.0 --accept-hosts '.*'
14
j3ffyang

Apiserverの設定を確認し、ベアラートークン(有効なトークンは/etc/kubernetes/tokens/known_tokens.csvにリストされます)またはクライアント証明書(/etc/kubernetes/certs/ca.crtのCA証明書によって署名)を提示して、apiserverに証明する必要があります。クラスターへのアクセスを許可する必要があります。

https://github.com/kubernetes/kubernetes/issues/7307#issuecomment-96130676 MacでGKEクラスターのクライアント証明書を構成する方法を説明しています。

ベアラートークンを渡すには、値Bearer ${KUBE_BEARER_TOKEN}を持つHTTPヘッダーAuthorizationを渡す必要があります。 curl here ;でこれがどのように行われるかの例を見ることができます。ブラウザでは、アドオン/プラグインをインストールしてカスタムヘッダーを渡す必要があります。

7
Robert Bailey

ダッシュボードにアクセスするためのQuick-n-Dirty(および安全でない)方法:

$ kubectl edit svc/kubernetes-dashboard --namespace=kube-system

これにより、ダッシュボード設定(yaml)がエディターに読み込まれ、編集できるようになります。

行を変更type: ClusterIPからtype: NodePort

TCPポートを取得します。

$ kubectl get svc kubernetes-dashboard -o json --namespace=kube-system

Tcpポートのある行は次のようになります。

            "nodePort": 31567

Kubernetesの新しいリリースでは、get svc

# This is kubernetes 1.7:
donn@Host37:~$ Sudo kubectl get svc --namespace=kube-system
NAME                   CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
kubernetes-dashboard   10.3.0.234   <nodes>       80:31567/TCP   2h

行う kubectl describe nodesノードのIPアドレスを取得します。

参照: http:// NODE_IP:31567

テストに適しています。セキュリティが不足しているため、本番環境には適していません。

6
Donn Lee
  1. kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

  2. kubectlプロキシ&

  3. ローカルラップトップ(またはGUIにアクセスする場所)で次のコマンドを実行します

    ssh -L 8877:127.0.0.1:8001 -N -f -l root master_IPADDRESS

  4. 秘密鍵の取得kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | awk '/ ^ deployment-controller-token-/ {print $ 1}')| awk '$ 1 == "token:" {print $ 2}'

  5. ダッシュボードを開きます http:// localhost:8877/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/ proxy /

エラーが発生した場合は、役割のバインドを実行します。

1
ratnakar reddy

kubectl proxy --address=clusterIP --port 8001 --accept-hosts '.*'を使用できます

0
Galal Elatfawy

apiサーバーはノードの6443ポートで既にアクセス可能ですが、https://:6443/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/ proxy /へのアクセスを許可していません

私はkubernetes ca certで署名されたクライアント証明書を生成し、pkcs12に変換してブラウザーに統合しました...このURLにアクセスしようとすると、ユーザーはURIへのアクセスが許可されていないと言います...

0