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?
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.
Cela fonctionne pour moi que vous pouvez accéder depuis le réseau
kubectl proxy --address 0.0.0.0 --accept-hosts '.*'
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.
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é.
Vous pouvez utiliser kubectl proxy --address=clusterIP --port 8001 --accept-hosts '.*'
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 ...