J'ai une instance de machine virtuelle nommée mysql-1
dans le même compte, le même VPC qu'un cluster GKE.
J'ai un service k8s déployé :
~ $ kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
haproxy-mysql LoadBalancer 10.19.242.236 8.8.8.8 3306:32375/TCP,3307:30748/TCP,3308:30064/TCP 40m
^ remplacement de l'adresse IP externe réelle par 8.8.8.8 ici
Sur la VM, j'ai mysql qui tourne sur le port 3306
user@mysql-1:~$ netstat -ntap |grep 3306|grep LISTE
(Toutes les processus n'ont pas pu être identifiés, les informations sur les processus non possédés
ne seront pas affichées, vous devez être root pour tout voir.)
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN -
user@mysql-1:~$ ip a|grep 156
inet 10.156.0.13/32 brd 10.156.0.13 scope global dynamic ens4
à partir d'un pod k8s, je peux me connecter à la vm :
# curl -I 10.156.0.13:3306
curl: (8) Réponse du serveur étrange
depuis la VM, je ne peux pas me connecter au service haproxy en utilisant les IP internes et externes :
user@mysql-1:~$ curl --connect-timeout 2 10.19.242.236:3306
curl: (28) Connexion expirée après 2001 millisecondes
user@mysql-1:~$ curl --connect-timeout 2 8.8.8.8:3306
curl: (28) Connexion expirée après 2001 millisecondes
quand j'utilise l'IP du pod, ça fonctionne :
$ kubectl get pods -A -o wide |grep haproxy-mysql
default haproxy-mysql-6dd5f8cf64-72gdx 1/1 Running 0 10m 10.16.1.39 gke-blabla-default-pool-370bb0fd-92rb
default haproxy-mysql-6dd5f8cf64-zgmwb 1/1 Running 0 10m 10.16.2.56 gke-blabla-default-pool-370bb0fd-prn7
user@mysql-1:~$ curl --connect-timeout 2 10.16.1.39:3306
Attention: La sortie binaire peut perturber votre terminal. Utilisez "--output -" pour indiquer
Attention: à curl de le renvoyer quand même sur votre terminal, ou utilisez "--output
Attention: " pour enregistrer dans un fichier.
J'ai une règle de pare-feu :
~ $ gcloud compute firewall-rules list|grep 3306
k8s-fw-ad6943bb1121311eab6fc42010a9c005 default INGRESS 1000 tcp:3306,tcp:3307,tcp:3308 False
~ $ gcloud compute firewall-rules describe k8s-fw-ad6943bb1121311eab6fc42010a9c005
allowed:
- IPProtocol: tcp
ports:
- '3306'
- '3307'
- '3308'
creationTimestamp: '2019-11-28T11:18:23.294-08:00'
description: '{"kubernetes.io/service-name":"default/haproxy-mysql", "kubernetes.io/service-ip":"8.8.8.8"}'
direction: INGRESS
disabled: false
id: '2373636381534430096'
kind: compute#firewall
logConfig:
enable: false
name: k8s-fw-ad6943bb1121311eab6fc42010a9c005
network: https://www.googleapis.com/compute/v1/projects/blalala-1234lab/global/networks/default
priority: 1000
selfLink: https://www.googleapis.com/compute/v1/projects/blalala-1234/global/firewalls/k8s-fw-ad6943bb1121311eab6fc42010a9c005
sourceRanges:
- 8.8.8.8/32
- 8.8.8.8/32
- 8.8.8.8/32
- 10.0.0.0/8
- 8.8.8.8/32
- 8.8.8.8/32
- 8.8.8.8/32
- 8.8.8.8/32
targetTags:
- gke-blablabla-4125f0a3-node
à partir d'un serveur qui est explicitement répertorié dans le bloc ci-dessus (masqué en tant que 8.8.8.8/32), je peux me connecter au service EXTERNAL-IP
Qu'est-ce que je rate ici ?