J'ai créé un cluster de trois nœuds: un maître, deux sbires. Comment vérifier l'IP du cluster dans Kubernetes? S'agit-il de l'IP du nœud maître?
ClusterIP peut signifier 2 choses: un type de service qui n'est accessible que dans un cluster Kubernetes, ou l'IP interne ("virtuelle") des composants dans un Cluster Kubernetes. En supposant que vous posiez des questions sur la recherche de l'IP interne d'un cluster, vous pouvez y accéder de 3 manières (en utilisant exemple simple-nginx ):
Via l'utilitaire de ligne de commande kubectl
:
$ kubectl describe service my-nginx
Name: my-nginx
Namespace: default
Labels: run=my-nginx
Selector: run=my-nginx
Type: LoadBalancer
IP: 10.123.253.27
LoadBalancer Ingress: 104.197.129.240
Port: <unnamed> 80/TCP
NodePort: <unnamed> 30723/TCP
Endpoints: 10.120.0.6:80
Session Affinity: None
No events.
Via l'API kubernetes (ici j'ai utilisé kubectl proxy
pour acheminer via localhost vers mon cluster):
$ kubectl proxy &
$ curl -G http://localhost:8001/api/v1/namespaces/default/services/my-nginx
{
"kind": "Service",
"apiVersion": "v1",
"metadata": <omitted>,
"spec": {
"ports": [
{
"protocol": "TCP",
"port": 80,
"targetPort": 80,
"nodePort": 30723
}
],
"selector": {
"run": "my-nginx"
},
"clusterIP": "10.123.253.27",
"type": "LoadBalancer",
"sessionAffinity": "None"
},
"status": {
"loadBalancer": {
"ingress": [
{
"ip": "104.197.129.240"
}
]
}
}
}
Via le $<NAME>_SERVICE_Host
variable d'environnement dans un conteneur Kubernetes (dans cet exemple my-nginx-yczg9
est le nom d'un pod du cluster):
$ kubectl exec my-nginx-yczg9 -- sh -c 'echo $MY_NGINX_SERVICE_Host'
10.123.253.27
Plus de détails sur les adresses IP des services peuvent être trouvés dans la documentation Services dans Kubernetes , et la mention précédente exemple simple-nginx est un bon exemple d'exposition d'un service en dehors de votre cluster avec le LoadBalancer
type de service.
iP de cluster uniquement allouée au service, c'est l'IP interne de Kubernetes。
L'IP de cluster est une IP virtuelle allouée par les K8 à un service. Il s'agit de l'IP interne du K8.
Une adresse IP de cluster la rend accessible à partir de n'importe quel nœud du cluster Kubernetes. L'utilisation d'adresses IP virtuelles à cet effet permet d'avoir plusieurs pods exposant le même port sur le même nœud - Tous ces pods seront accessibles via une adresse IP unique.
Cette adresse IP est stable et ne change jamais dans le cycle de vie du service (sauf suppression explicite).
2 pods différents peuvent communiquer en utilisant cette IP, bien que je recommande d'utiliser le service DNS de cluster.