web-dev-qa-db-fra.com

Comment accéder à l'interface utilisateur de Kubernetes via un navigateur?

J'ai installé Kubernetes en utilisant contrib/ansible scripts . Quand j'exécute 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

Le cluster est exposé sur localhost avec un port non sécurisé et exposé sur le port sécurisé 443 via ssl

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

J'ai copié les certificats de la machine kube-master sur ma machine locale, j'ai installé le certificat racine ca. Les navigateurs Chrome/Safari acceptent le certificat racine ca Lorsque j'essaie d'accéder au https://10.57.50.161/ui .__, je reçois le message 'Non autorisé'.

Comment puis-je accéder à l'interface utilisateur de kubernetes?

15
Romande

Vous pouvez utiliser le proxy kubectl.

Selon que vous utilisez un fichier de configuration, via la ligne de commande

kubectl proxy

ou

kubectl --kubeconfig=kubeconfig proxy

Vous devriez obtenir une réponse similaire

Début de la signification le 127.0.0.1:8001

Maintenant, ouvrez votre navigateur et accédez à

http://127.0.0.1:8001/ui/ (obsolète, voir kubernetes/dashboard )
http: // localhost: 8001/api/v1/nomspaces/kube-system/services/https: kubernetes-dashboard:/proxy/

Vous devez vous assurer que les ports correspondent.

19
Bcf Ant

Cela fonctionne pour moi que vous pouvez accéder depuis le réseau

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

En regardant votre configuration apiserver, vous devrez présenter un jeton porteur (les jetons valides seront listés dans /etc/kubernetes/tokens/known_tokens.csv) ou un certificat client (signé par le certificat de l'autorité de certification dans /etc/kubernetes/certs/ca.crt) pour prouver à l'apiserver que vous devez être autorisé à accéder au cluster . 

https://github.com/kubernetes/kubernetes/issues/7307#issuecomment-96130676 décrit comment j'ai pu configurer des certificats clients pour un cluster GKE sur mon Mac. 

Pour transmettre des jetons de support, vous devez transmettre une autorisation HTTP d'en-tête avec une valeur Bearer ${KUBE_BEARER_TOKEN}. Vous pouvez voir un exemple de la façon dont cela est fait avec curl ici ; dans un navigateur, vous devrez installer un add-on/plugin pour transmettre des en-têtes personnalisés. 

7
Robert Bailey

Moyen rapide pour accéder au tableau de bord (et non sécurisé):

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

Cela chargera la configuration de Dashboard (yaml) dans un éditeur où vous pourrez l'éditer.

Modifiez la ligne type: ClusterIP en type: NodePort.

Obtenez le port TCP:

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

La ligne avec le port TCP ressemblera à ceci:

            "nodePort": 31567

Dans les nouvelles versions de kubernetes, vous pouvez obtenir le nodeport à partir de 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

Faites kubectl describe nodes pour obtenir une adresse IP de nœud.

Naviguez jusqu'à: http: // NODE_IP: 31567

Bon pour les tests. Pas bon pour la production en raison du manque de sécurité.

6
Donn Lee

Vous pouvez utiliser kubectl proxy --address=clusterIP --port 8001 --accept-hosts '.*'

0
Galal Elatfawy

le serveur api est déjà accessible sur le port 6443 du noeud, mais n'autorise pas les accès à https: //: 6443/api/v1/espaces de nom/kube-system/services/https: kubernetes-dashboard:/proxy /

j'ai généré des certificats de client signés par kubernetes ca cert, et convertis en pkcs12 et intégrés à mon navigateur ... lorsque vous essayez d'accéder à cette URL, ils disent que l'utilisateur n'est pas autorisé à accéder à l'URI ...

0