2016-03-28 15 views
12

Ho installato Kubernetes utilizzando gli script contrib/ansible. Quando eseguo cluster info:Come accedere all'interfaccia utente di Kubernetes tramite browser?

[[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 

Il cluster è esposto su localhost con porta insicura, ed esposto sulla porta sicura via 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

Ho copiato i certificati da kube- master machine sul mio computer locale, ho installato il certificato ca root. I browser chrome/safari accettano il certificato ca root. Quando sto cercando di accedere al https://10.57.50.161/ui sto ottenendo il 'non autorizzata'

Come posso accedere al ui kubernetes?

risposta

7

Guardando la configurazione apiserver, è necessario sia presente un gettone portatore (gettoni validi saranno elencati in /etc/kubernetes/tokens/known_tokens.csv) o certificato del client (firmato dal CERT CA in /etc/kubernetes/certs/ca.crt) per dimostrare al apiserver che si dovrebbe essere consentito per accedere al cluster.

https://github.com/kubernetes/kubernetes/issues/7307#issuecomment-96130676 descrive come sono stato in grado di configurare i certificati client per un cluster GKE sul mio Mac.

Per passare token al portatore, è necessario passare un'intestazione HTTP Autorizzazione con un valore Bearer ${KUBE_BEARER_TOKEN}. Puoi vedere un esempio di come è fatto con curl here; in un browser, è necessario installare un componente aggiuntivo/plugin per passare intestazioni personalizzate.

+4

Questa non è un'esperienza facile da usare per chi vuole solo vedere l'interfaccia utente in un browser. –

+1

Sono assolutamente d'accordo (il problema che ho collegato è stato aperto per questo motivo). Un altro modo per accedere all'interfaccia utente è esporlo come servizio esterno e connettersi direttamente. Sfortunatamente non offre alcun authn/z né https quindi non è sicuro. –

+0

Sembra promettente - come si espone l'interfaccia utente come servizio esterno? –

5

Quick-n-sporco (e non protetta) modo per accedere alla Dashboard:

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

Questo caricherà la configurazione Dashboard (YAML) in un editor in cui è possibile modificarlo.

Modificare la riga type: ClusterIP a type: NodePort.

Ottenere la porta TCP:

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

La linea con la porta TCP sarà simile:

  "nodePort": 31567 

In ogni nuova versione di kubernetes è possibile ottenere il nodeport da get svc:

# 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 

Do kubectl describe nodes per ottenere un indirizzo IP di nodo.

Sfoglia per: http://NODE_IP:31567

Buon per il test. Non va bene per la produzione a causa della mancanza di sicurezza.

+0

e come cambiarlo da NodePort a ClusterIP? –

14

È possibile utilizzare il proxy kubectl.

A seconda se si utilizza un file di configurazione, tramite run-riga di comando

kubectl proxy 

o

kubectl --kubeconfig=kubeconfig proxy 

Si dovrebbe ottenere una risposta simile

partire per servire sul 127.0 .0.1: 8001

Ora aprire il browser e passare alla

http://127.0.0.1:8001/ui/

È necessario assicurarsi che le porte corrispondono.

6

Questo funziona per me che è possibile accedervi dalla rete

kubectl proxy --address 0.0.0.0 --accept-hosts '.*' 
Problemi correlati