J'aimerais utiliser microk8s pour la lecture autour du flux de données de nuage de printemps, j'ai donc installé MultiPass sur ma fenêtre 10 et dans une machine virtuelle, j'exécute un Ubuntu où Microk8S est installé. J'aimerais y arriver, tous les conteneurs exécutés sur Ubuntu, qui est une Virtualbox sans tête VM géré par multiparas, mais j'aimerais pouvoir se connecter aux conteneurs de Windows.
La topologie ressemble à ceci:
Windows 10 :
Ubuntu qui fonctionne dans VirtualBox
Si je me connecte à Ubuntu ifconfig
dit ce qui suit:
multipass@scdf:~/scdf/spring-cloud-dataflow$ ifconfig
cbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.1.1.1 netmask 255.255.255.0 broadcast 0.0.0.0
inet6 fe80::c802:9fff:fea2:93f1 prefixlen 64 scopeid 0x20<link>
ether ca:02:9f:a2:93:f1 txqueuelen 1000 (Ethernet)
RX packets 19890 bytes 6628126 (6.6 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 21413 bytes 13988665 (13.9 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.2.15 netmask 255.255.255.0 broadcast 10.0.2.255
inet6 fe80::a00:27ff:feba:30bb prefixlen 64 scopeid 0x20<link>
ether 08:00:27:ba:30:bb txqueuelen 1000 (Ethernet)
RX packets 208972 bytes 273941063 (273.9 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 24249 bytes 2084939 (2.0 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<Host>
loop txqueuelen 1000 (Local Loopback)
RX packets 157483 bytes 40950239 (40.9 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 157483 bytes 40950239 (40.9 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
microk8s.kubectl get all
dit ce qui suit, il a été exécuté à Ubuntu:
multipass@scdf:~/scdf/spring-cloud-dataflow$ microk8s.kubectl get all
NAME READY STATUS RESTARTS AGE
pod/default-http-backend-5d5ff5d4f5-6ttvd 1/1 Running 1 29m
pod/kafka-broker-64445d8596-88rl6 1/1 Running 24 98m
pod/kafka-zk-77bdb5bcbb-qjxfh 1/1 Running 4 98m
pod/mysql-bdd598966-nknwk 0/1 Pending 0 87m
pod/nginx-ingress-microk8s-controller-dh28n 1/1 Running 1 29m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/default-http-backend ClusterIP 10.152.183.57 <none> 80/TCP 29m
service/kafka ClusterIP 10.152.183.194 <none> 9092/TCP 98m
service/kafka-zk ClusterIP 10.152.183.80 <none> 2181/TCP,2888/TCP,3888/TCP 98m
service/kubernetes ClusterIP 10.152.183.1 <none> 443/TCP 100m
service/mysql ClusterIP 10.152.183.113 <none> 3306/TCP 87m
service/scdf-server LoadBalancer 10.152.183.122 <pending> 80:32548/TCP 80m
service/skipper LoadBalancer 10.152.183.163 <pending> 80:30955/TCP 81m
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
daemonset.apps/nginx-ingress-microk8s-controller 1 1 1 1 1 <none> 29m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/default-http-backend 1/1 1 1 29m
deployment.apps/kafka-broker 1/1 1 1 98m
deployment.apps/kafka-zk 1/1 1 1 98m
deployment.apps/mysql 0/1 1 0 87m
deployment.apps/scdf-server 0/1 0 0 80m
deployment.apps/skipper 0/1 0 0 82m
NAME DESIRED CURRENT READY AGE
replicaset.apps/default-http-backend-5d5ff5d4f5 1 1 1 29m
replicaset.apps/kafka-broker-64445d8596 1 1 1 98m
replicaset.apps/kafka-zk-77bdb5bcbb 1 1 1 98m
replicaset.apps/mysql-bdd598966 1 1 0 87m
replicaset.apps/scdf-server-6988d7795f 1 0 0 80m
replicaset.apps/skipper-5957946bf5 1 0 0 82m
Comme vous pouvez le voir, il y a deux <Pending>
Statut des adresses IP externes. Je crois que ceux-ci devraient être exposés afin de pouvoir se connecter.
J'ai fait ce que j'ai trouvé dans ceci Aide, mais je n'ai pas pu atteindre ce serveur obtient une adresse IP externe.
Qu'est-ce que je fais ici mal? Microk8 est-il capable d'exposer ses conteneurs?
Vous avez raison, si vous souhaitez vous connecter à votre cluster à partir de l'extérieur, vous devez exposer le service comme LoadBalancer
ou NodePort
.
Malheureusement, comme vous n'utilisez aucun fournisseur de cloud qui prend en charge LoadBalancer
(comme AWS ou GCP qui fournit des IPS externes), vous ne pouvez pas exposer le service comme LoadBalancer
(service bloqué sur Pending
état). Comme décrit ici :
LoadBalancer: expose le service à l'extérieur à l'aide d'un équilibreur de charge d'un fournisseur de cloud. Les services de NODEPORT et de Clusterip, auxquels les itinéraires d'équilibreur de charge externes sont créés automatiquement.
Par défaut dans MICROK8S, vous pouvez utiliser uniquement des services tels que NodePort
et ClusterIP
.
Avec votre configuration, vous pouvez utiliser NodePort
, ClusterIP
avec Ingress
ou metallb. Si vous utilisez Ingress
, vous devez vous rappeler d'activer ingress
et dns
addons dans Microk8s
. Cela peut être don par $ microk8s.enable dns ingress
.
Bref. Options que vous avez sont:
NodePort
Endpoints
dans votre YAMLS ou UTILISATION Metallb et points d'extrémité de points.De plus, vous pouvez vérifier des cas similaires ici et ici .
J'espère que ça aide.