J'ai un cluster kubernetes s'exécutant sur Azure. Quel est le moyen d'accéder au cluster à partir de la commande kubectl locale? Je me suis référé à ici mais sur le nœud maître kubernetes il n’existe pas de fichier de configuration kube En outre, kubectl config view entraîne
apiVersion: v1
clusters: []
contexts: []
current-context: ""
kind: Config
preferences: {}
users: []
Nous avons trouvé un moyen d'accéder à un cluster kubernetes distant sans passer par l'un des nœuds du cluster. Vous devez éditer le fichier ~/.kube/config comme suit:
apiVersion: v1
clusters:
- cluster:
server: http://<master-ip>:<port>
name: test
contexts:
- context:
cluster: test
user: test
name: test
Puis définissez le contexte en exécutant:
kubectl config use-context test
Après cela, vous devriez pouvoir interagir avec le cluster.
Remarque: pour ajouter la certification et l'utilisation de la clé, utilisez le lien suivant: http://kubernetes.io/docs/user-guide/kubeconfig-file/
Alternativement, vous pouvez également essayer de suivre la commande
kubectl config set-cluster test-cluster --server=http://<master-ip>:<port> --api-version=v1
kubectl config use-context test-cluster
Vous pouvez également définir le chemin de fichier de kubeconfig en passant le paramètre --kubeconfig
.
Par exemple, copiez le ~/.kube/config
de l'hôte Kubernetes distant dans le ~/myproject/.kube/config
de votre projet local. Dans ~/myproject
, vous pouvez ensuite répertorier les pods du serveur Kubernetes distant en exécutant kubectl get pods --kubeconfig ./.kube/config
.
Notez que lors de la copie des valeurs depuis le serveur Kubernetes distant, le simple kubectl config view
ne sera pas suffisant car il n’affiche pas les secrets du fichier de configuration. Au lieu de cela, vous devez faire quelque chose comme cat ~/.kube/config
ou utiliser scp
pour obtenir le contenu complet du fichier.
Voir: https://kubernetes.io/docs/tasks/administer-cluster/share-configuration/
J'essayais de configurer kubectl sur un client différent de celui pour lequel j'ai créé le cluster kops. Vous ne savez pas si cela fonctionnera sur Azure, mais cela fonctionnera sur un cluster (kops) basé sur AWS:
kops/kubectl - comment importer un état créé sur un autre serveur?
Comment avez-vous configuré votre cluster? Pour accéder au cluster à distance, vous avez besoin d'un fichier kubeconfig (il semble que vous n'en ayez pas) et les scripts d'installation génèrent un fichier kubeconfig local dans le cadre du processus de déploiement du cluster (car sinon le cluster que vous venez de déployer n'est pas utilisable) . Si quelqu'un d'autre a déployé le cluster, vous devez suivre les instructions de la page à laquelle vous êtes lié pour obtenir une copie des informations d'identification du client requises pour se connecter au cluster.
La configuration d’Azure n’expose que les ports ssh de manière externe . Cela se trouve sous ./output/kube_xxxxxxxxxxxssh_conf Ce que j’ai fait est de faire passer le ssh par tunnel à la machine en ajoutant un tunnel de port ssh ...__ dans le fichier ci-dessus et sous la section "Host *", ajoutez une autre ligne comme celle ci-dessous:
LocalForward 8080 127.0.0.1:8080
qui mappe le port 8080 de ma machine locale (où kubectl recherche le contexte par défaut) sur le port 8080 de la machine distante où le maître écoute les appels de l'API . lorsque vous ouvrez ssh sur kube-00 comme le montre la documentation normale, vous pouvez maintenant le faire appels de votre kubectl local sans aucune configuration supplémentaire.