Bones pràctiques de Kubernetes. Cartografia de serveis externs

Bones pràctiques de Kubernetes. Creació de petits contenidors
Bones pràctiques de Kubernetes. Organització de Kubernetes amb espai de noms
Bones pràctiques de Kubernetes. Comprovació de l'estat de Kubernetes amb proves de preparació i vitalitat
Bones pràctiques de Kubernetes. Establiment de peticions i límits de recursos
Bones pràctiques de Kubernetes. Tancament correcte Finalitzar

Si sou com la majoria de la gent, probablement utilitzeu recursos que s'executen fora del vostre clúster. Potser utilitzeu l'API de Taleo per enviar missatges de text o analitzar imatges mitjançant l'API de Google Cloud Vision.

Si utilitzeu el mateix punt final de sol·licitud del servidor en tots els vostres entorns i no teniu previst migrar els vostres servidors a Kubernetes, aleshores està perfectament bé tenir un punt final de servei directament al vostre codi. Tanmateix, hi ha molts altres escenaris per al desenvolupament dels esdeveniments. En aquesta sèrie de bones pràctiques de Kubernetes, aprendràs a utilitzar els mecanismes integrats de Kubernetes per descobrir serveis tant dins com fora del clúster.

Un exemple de servei extern comú és una base de dades que s'executa fora d'un clúster de Kubernetes. A diferència de les bases de dades al núvol com Google Cloud Data Store o Google Cloud Spanner, que utilitzen un únic punt final per a tots els accessos, la majoria de bases de dades tenen punts finals separats per a diferents circumstàncies.
Les millors pràctiques per utilitzar bases de dades tradicionals com MySQL i MongoDB solen significar que us connecteu a diferents components per a diferents entorns. Podeu tenir una màquina gran per a dades de producció i una màquina més petita per a l'entorn de prova. Cadascun d'ells tindrà la seva pròpia adreça IP o nom de domini, però probablement no voldreu canviar el vostre codi quan passeu d'un entorn a un altre. Per tant, en comptes de codificar aquestes adreces, podeu utilitzar el descobriment de serveis externs basat en DNS integrat de Kubernetes de la mateixa manera que els serveis natius de Kubernetes.

Bones pràctiques de Kubernetes. Cartografia de serveis externs

Suposem que esteu executant una base de dades MongoDB a Google Compute Engine. Estaràs atrapat en aquest món híbrid fins que aconsegueixis transferir-lo al clúster.

Afortunadament, podeu utilitzar els serveis estàtics de Kubernetes per fer-vos la vida una mica més fàcil. En aquest exemple, vaig crear un servidor MongoDB mitjançant Google Cloud Launcher. Com que es crea a la mateixa xarxa (o VPC del clúster de Kubernetes), s'hi accedeix mitjançant una adreça IP interna d'alt rendiment.

Bones pràctiques de Kubernetes. Cartografia de serveis externs

Aquesta és la configuració predeterminada a Google Cloud, de manera que no cal que configureu res. Ara que teniu una adreça IP, el primer pas és crear un servei. És possible que observeu que no hi ha cap selector de pods per a aquest servei. És a dir, hem creat un servei que no sabrà on enviar trànsit. Això us permetrà crear manualment un objecte de punt final que rebrà trànsit d'aquest servei.

Bones pràctiques de Kubernetes. Cartografia de serveis externs

L'exemple de codi següent mostra que els punts finals determinen l'adreça IP de la base de dades utilitzant el mateix nom mongo que el servei.

Bones pràctiques de Kubernetes. Cartografia de serveis externs

Kubernetes utilitzarà totes les adreces IP per trobar punts finals com si fossin pods Kubernetes normals, de manera que ara podeu accedir a la base de dades amb una cadena de connexió senzilla amb el nom anterior mongodb://mongo. No cal utilitzar adreces IP al vostre codi en absolut.

Si les adreces IP canvien en el futur, només podeu actualitzar els vostres punts finals amb la nova adreça IP i les vostres aplicacions no hauran de modificar-se de cap altra manera.

Si utilitzeu una base de dades allotjada en un amfitrió de tercers, és probable que els propietaris de l'amfitrió us hagin proporcionat un URI d'identificador de recursos uniforme per connectar-vos. Per tant, si us han donat una adreça IP, simplement podeu utilitzar el mètode anterior. Aquest exemple mostra que tinc dues bases de dades MongoDB allotjades en un amfitrió mLab.

Bones pràctiques de Kubernetes. Cartografia de serveis externs

Un és la base de dades del desenvolupador i l'altre és la base de dades de producció. Les cadenes de connexió d'aquestes bases de dades tenen aquest aspecte: mLab us proporciona un URI dinàmic i un port dinàmic. Com podeu veure, són diferents.

Bones pràctiques de Kubernetes. Cartografia de serveis externs

Per abstraure-ho, utilitzem Kubernetes i connectem-nos a la base de dades del desenvolupador. Podeu crear un nom de servei de Kubernetes extern, que us proporcionarà un servei estàtic que reenviarà el trànsit al servei extern.

Bones pràctiques de Kubernetes. Cartografia de serveis externs

Aquest servei realitzarà un reenviament CNAME senzill al nivell del nucli amb un impacte mínim en el rendiment. Gràcies a això, podeu utilitzar una cadena de connexió més senzilla.

Bones pràctiques de Kubernetes. Cartografia de serveis externs

Però com que el nom extern utilitza el reenviament CNAME, no pot realitzar el reenviament de ports. Per tant, aquesta solució només és aplicable a ports estàtics i no es pot utilitzar amb ports dinàmics. Però mLab Free Tier ofereix a l'usuari un número de port dinàmic per defecte i no el podeu canviar. Això vol dir que necessiteu diferents línies d'ordres de connexió per a dev i prod. El dolent és que això requerirà que codifiqueu el número de port. Llavors, com feu que el reenviament de ports funcioni?

El primer pas és obtenir l'adreça IP de l'URI. Si executeu nslookup, hostname o feu ping a l'URI, podeu obtenir l'adreça IP de la base de dades. Si el servei us retorna diverses adreces IP, totes aquestes adreces es poden utilitzar als punts finals de l'objecte.

Bones pràctiques de Kubernetes. Cartografia de serveis externs

Una cosa a tenir en compte és que els URI IP poden canviar sense previ avís, cosa que fa que siguin bastant arriscats d'utilitzar en productes. Amb aquesta adreça IP, podeu connectar-vos a una base de dades remota sense especificar un port. Així, el servei Kubernetes realitza el reenviament de ports de manera bastant transparent.

Bones pràctiques de Kubernetes. Cartografia de serveis externs

Mapejar, o assignar recursos externs als interns, us ofereix la flexibilitat d'utilitzar aquests serveis dins del clúster en el futur alhora que minimitza els esforços de refactorització. També facilita la gestió i la informació sobre quins serveis externs utilitza la vostra empresa.

Continuarà molt aviat...

Alguns anuncis 🙂

Gràcies per quedar-te amb nosaltres. T'agraden els nostres articles? Vols veure més contingut interessant? Doneu-nos suport fent una comanda o recomanant als amics, Cloud VPS per a desenvolupadors des de 4.99 dòlars, un anàleg únic dels servidors d'entrada, que vam inventar per a vosaltres: Tota la veritat sobre VPS (KVM) E5-2697 v3 (6 nuclis) 10 GB DDR4 480 GB SSD 1 Gbps des de 19 dòlars o com compartir un servidor? (disponible amb RAID1 i RAID10, fins a 24 nuclis i fins a 40 GB DDR4).

Dell R730xd 2 vegades més barat al centre de dades Equinix Tier IV a Amsterdam? Només aquí 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6 GHz 14C 64 GB DDR4 4 x 960 GB SSD 1 Gbps 100 TV des de 199 $ als Països Baixos! Dell R420 - 2x E5-2430 2.2 Ghz 6C 128 GB DDR3 2 x 960 GB SSD 1 Gbps 100 TB - a partir de 99 $! Llegeix sobre Com construir infrastructure corp. classe amb l'ús de servidors Dell R730xd E5-2650 v4 per valor de 9000 euros per un cèntim?

Font: www.habr.com

Afegeix comentari