Kubernetes newbie (ou plutôt réseau de base) question: Minikube à nœud unique installé (version 0.23) sur une boîte Ubuntu fonctionnant dans mon LAN (sur l'adresse IP 192.168. 0,20) avec virtualbox.
la commande de démarrage de minikube se termine également avec succès
minikube start
Starting local Kubernetes v1.8.0 cluster...
Starting VM...
Getting VM IP address...
Moving files into cluster...
Setting up certs...
Connecting to cluster...
Setting up kubeconfig...
Starting cluster components...
Kubectl is now configured to use the cluster.
le tableau de bord minikube apparaît également avec succès. (exécuté sur 192.168.99.100:30000)
ce que je veux faire, c'est accéder au tableau de bord minikube à partir de mon macbook (fonctionnant sur 192.168.0.11) dans le même réseau local.
Je souhaite également accéder au même tableau de bord de minikube depuis Internet.
Pour l'accès LAN: Maintenant, d'après ce que je comprends, j'utilise virtualbox (l'option vm par défaut), je peux changer le type de réseau (en NAT avec redirection de port) en utilisant la commande vboxnet
VBoxManage modifyvm "VM name" --natpf1 "guestssh,tcp,,2222,,22"
comme indiqué ici
Dans mon cas, ce sera quelque chose comme ça
VBoxManage modifyvm "VM name" --natpf1 "guesthttp,http,,30000,,8080"
Suis-je en train de penser dans le bon sens ici?
Aussi pour accéder à distance à la même adresse de tableau de bord minikube, je peux configurer un service de type no-ip.com. Ils ont demandé d'installer leur utilitaire sur linux box et également de configurer la redirection de port dans les paramètres du routeur qui redirigeront du port hôte vers le port invité. C'est à peu près ça? Est-ce que j'ai râté quelque chose?
J'ai pu courir avec quelque chose d'aussi simple que:
kubectl proxy --address='0.0.0.0' --disable-filter=true
La façon ssh
En supposant que vous avez ssh sur votre boîte ubuntu.
Première exécution kubectl proxy &
pour exposer le tableau de bord sur http://localhost:8001
Exposez ensuite le tableau de bord à l'aide de la redirection de port de ssh, en exécutant:
ssh -R 30000:127.0.0.1:8001 [email protected]
Vous devez maintenant accéder au tableau de bord à partir de votre macbook dans votre réseau local pointant le navigateur vers http://192.168.0.20:30000
Pour l'exposer de l'extérieur, il suffit d'exposer le port 30000 en utilisant no-ip.com, peut-être le changer en un port standard, comme 80.
Notez que ce n'est pas la solution la plus simple mais à certains endroits fonctionnerait sans avoir les droits de superutilisateur;) Vous pouvez automatiser la connexion après le redémarrage de la boîte ubuntu en utilisant un script init et en définissant une clé publique pour la connexion.
@Jeff a fourni la réponse parfaite, a mis plus d'indices pour les débutants.
Démarrez un proxy en utilisant le script de @ Jeff, par défaut, il ouvrira un proxy sur '0.0.0.0:8001'.
kubectl proxy --address='0.0.0.0' --disable-filter=true
Visitez le tableau de bord via le lien ci-dessous:
curl http://your_api_server_ip:8001/api/v1/namespaces/kube-system/services/http:kubernetes-dashboard:/proxy/
Plus de détails s'il vous plaît se référer à officiellement doc .
J'ai eu le même problème récemment et l'ai résolu comme suit:
bridge
. Pour moi, cela a été fait en modifiant le minikube VM = dans l'interface utilisateur de VirtualBox et requis VM stop/start. Je ne sais pas comment cela fonctionnerait si vous utilisez l'hyperkit. Ne détruisez pas les adaptateurs réseau par défaut configurés par minikube: minikube dépend de ceux-ci. https://github.com/kubernetes/minikube/issues/1471Ajoutez un cluster et la configuration associée au ~/.kube/config
comme ci-dessous, en modifiant l'adresse IP du serveur pour qu'elle corresponde à votre nouvelle adresse VM IP. Les noms peuvent également être modifiés si vous le souhaitez. Notez que insecure-skip-tls-verify: true
est nécessaire car le certificat https généré par minikube n'est valide que pour les adresses IP internes de la machine virtuelle.
clusters:
- cluster:
insecure-skip-tls-verify: true
server: https://192.168.0.101:8443
name: mykubevm
contexts:
- context:
cluster: mykubevm
user: kubeuser
name: mykubevm
users:
- name: kubeuser
user:
client-certificate: /Users/myname/.minikube/client.crt
client-key: /Users/myname/.minikube/client.key
Copiez le ~/.minikube/client.*
fichiers référencés dans la configuration de votre hôte Linux minikube. Ce sont les fichiers de clés de sécurité requis pour l'accès.
Définissez votre contexte kubectl: kubectl config set-context mykubevm
. À ce stade, votre cluster de minikube doit être accessible (essayez kubectl cluster-info
).
Courir kubectl proxy http://localhost:8000
pour créer un proxy local pour accéder au tableau de bord. Accédez à cette adresse dans votre navigateur.
Il est également possible de passer à la machine virtuelle minikube. Copiez la paire de clés ssh de ~/.minikube/machines/minikube/id_rsa*
dans votre répertoire .ssh (renommer pour éviter de supprimer d'autres clés, par exemple mykubevm
& mykubevm.pub
). Ensuite ssh -i ~/.ssh/mykubevm docker@<kubevm-IP>
Légère variation sur l'approche ci-dessus.
J'ai un service Web http avec NodePort 30003. Je le rend disponible sur le port 80 en externe en exécutant:
Sudo ssh -v -i ~/.ssh/id_rsa -N -L 0.0.0.0:80:localhost:30003 ${USER}@$(hostname)
Jeff Prouty a ajouté une réponse utile:
J'ai pu courir avec quelque chose d'aussi simple que:
kubectl proxy --address='0.0.0.0' --disable-filter=true
Mais pour moi, cela n'a pas fonctionné au départ.
J'exécute cette commande sur la machine CentOS 7 avec kubectl en cours d'exécution (IP locale: 192.168.0.20).
Lorsque j'ai essayé d'accéder au tableau de bord à partir d'un autre ordinateur (qui était évidemment en LAN):
http://192.168.0.20:8001/api/v1/namespaces/kube-system/services/kubernetes-dashboard/proxy/
alors seul le délai d'attente était dans mon navigateur Web.
La solution pour mon cas est que dans CentOS 7 (et probablement d'autres distributions), vous devez ouvrir le port 8001
dans le pare-feu de votre système d'exploitation.
Donc, dans mon cas, je dois exécuter dans le terminal CentOS 7:
Sudo firewall-cmd --zone=public --add-port=8001/tcp --permanent
Sudo firewall-cmd --reload
Et après ça. Ça marche! :)
Bien sûr, vous devez être conscient que ce n'est pas une solution sûre, car tout le monde a accès à votre tableau de bord maintenant. Mais je pense que pour les tests en laboratoire local, ce sera suffisant.
Dans d'autres distributions Linux, la commande d'ouverture des ports dans le pare-feu peut être différente. Veuillez utiliser Google pour cela.
Merci pour vos précieuses réponses. Si vous devez utiliser la commande proxy kubectl pour ne pas voir en permanence, utilisez l'objet "Service" ci-dessous dans le fichier YAML capable de voir à distance jusqu'à ce que vous l'arrêtiez. Créez un nouveau fichier yaml minikube-dashboard.yaml
et écrire le code manuellement, je ne recommande pas de le copier-coller.
apiVersion : v1
kind: Service
metadata:
labels:
app: kubernetes-dashboard
name: kubernetes-dashboard-test
namespace: kube-system
spec:
ports:
- port: 80
protocol: TCP
targetPort: 9090
nodePort: 30000
selector:
app: kubernetes-dashboard
type: NodePort
Exécutez la commande,
$ Sudo kubectl apply -f minikube-dashboard.yaml
Enfin, ouvrez l'URL: http: // votre-adresse-publique-ip: 30000/#!/Persistentvolume? Namespace = default