2016-03-28 8 views
12

私はcontrib/ansibleスクリプトを使ってKubernetesをインストールしました。 私は、クラスタ情報を実行すると:ブラウザ経由でKubernetes UIにアクセスするには?

[[email protected] ~]$ 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 

クラスタが安全でないポートを持つローカルホスト上に露出し、私はkube-からの証明書をコピーした

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

SSL経由でのセキュアポート443に露出しています私のローカルマシンにマスターマシンをインストールするには、私はCAルート証明書をインストールしました。 chrome/safariブラウザはcaルート証明書を受け入れています。 私は私がkubernetes UIにアクセスするにはどうすればよい「無断」

を取得していますhttps://10.57.50.161/ui にアクセスしようとしていますか?

答えて

7

apiserverの設定を見ると、許容されるべきであることをAPIサーバーに証明するために、ベアラトークン(有効トークンは/etc/kubernetes/tokens/known_tokens.csvに表示されます)またはクライアント証明書(/etc/kubernetes/certs/ca.crtにCA証明書によって署名される)クラスタにアクセスします。

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

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

+4

にアクセスできることを私のために動作します。 –

+1

私は完全に同意します(私がリンクした問題はその理由のために開かれました)。 UIにアクセスするもう1つの方法は、外部サービスとして公開し、直接外部サービスに接続することです。残念ながら、authn/zもhttpsも提供していないので、安全ではありません。 –

+0

これは有望なようです - どのように外部サービスとしてのUIを公開するのですか? –

5

クイック-N-汚れ(およびセキュリティ保護されていない)ダッシュボードにアクセスする方法:

$ 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ポートを持つ行は次のようになります。あなたはget svcからnodeportを得ることができますkubernetesの新しいリリースでは

  "nodePort": 31567 

# This is kubernetes 1.7: 
[email protected]:~$ 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 

ノードのIPアドレスを取得するにはkubectl describe nodesを実行します。

ブラウズする:テストのための http://NODE_IP:31567

良いです。セキュリティが不足しているため、生産には向いていません。

+0

と、これをNodePortからClusterIPに変更する方法はありますか? –

14

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

あなたは、コマンドラインの実行を経て、

kubectl proxy 

または

kubectl --kubeconfig=kubeconfig proxy 

を設定ファイルを使用している場合は、127.0に提供するために起動するような応答

を取得する必要がありますによっては.0.1:8001

は、今お使いのブラウザを開き、あなたはポートが一致を確認する必要があり

http://127.0.0.1:8001/ui/

に移動します。

6

これは、あなたがこれは単なるブラウザでUIを見たい人のためのユーザーフレンドリーな体験ではないネットワークから

kubectl proxy --address 0.0.0.0 --accept-hosts '.*' 
関連する問題