{"id":92073,"date":"2020-08-22T19:41:56","date_gmt":"2020-08-22T17:41:56","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/post-mortem-po-nedostupnosti-quay-io"},"modified":"2020-08-22T19:41:56","modified_gmt":"2020-08-22T17:41:56","slug":"post-mortem-po-nedostupnosti-quay-io","status":"publish","type":"post","link":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/post-mortem-po-nedostupnosti-quay-io","title":{"rendered":"Post Mortem over de uitval van Quay.io","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i><b>Opmerking vertaler.<\/b>: begin augustus heeft Red Hat publiekelijk gesproken over het oplossen van de beschikbaarheidsproblemen die de afgelopen maanden zijn opgetreden voor gebruikers van hun service. <noindex><a rel=\"nofollow\" href=\"http:\/\/quay.io\/\">Quay.io<\/a><\/noindex> (waarbij de basis een register voor containerafbeeldingen is, dat de onderneming verwierf met de aankoop van CoreOS). Ongeacht uw interesse in deze service, het pad dat de SRE-engineers van het bedrijf hebben afgelegd om de oorzaken van de storing te diagnosticeren en op te lossen, is leerzaam.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Post Mortem over de uitval van Quay.io\" src=\"\/wp-content\/uploads\/2020\/08\/67ef7fddee25448ae68ae7f4700bb25b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn de vroege ochtend van 19 mei (volgens de zomer tijdzone van het noordoostelijke Noord-Amerika, EDT) is de service quay.io uitgevallen. De storing trof zowel consumenten van quay.io als Open Source-projecten die quay.io gebruikten als platform voor de bouw en verspreiding van software. Red Hat hecht veel waarde aan het vertrouwen van beide groepen.<\/p>\n<p>Het team van SRE-engineers ging onmiddellijk aan de slag en probeerde de werking van de Quay-service zo snel mogelijk te stabiliseren. Terwijl zij hiermee bezig waren, verloren klanten echter de mogelijkheid om nieuwe afbeeldingen te pushen en lieten ze slechts af en toe bestaande afbeeldingen pullen. Om onbekende redenen werd de database van quay.io geblokkeerd na het opschalen van de service naar zijn volledige capaciteit.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>\u00ab<b>Wat is er veranderd?<\/b>\u00bb \u2014 dat is de eerste vraag die in dergelijke gevallen gesteld wordt. We hebben opgemerkt dat kort voor het probleem de OpenShift Dedicated-cluster (waarop quay.io draait) begon met het updaten naar versie 4.3.19. Aangezien quay.io draait op Red Hat OpenShift Dedicated (OSD), waren reguliere updates een alledaagse taak en leidde dit nooit tot problemen. Sterker nog, in de afgelopen zes maanden hebben we de Quay-clusters meerdere keren bijgewerkt zonder enige downtime.<\/p>\n<p>Terwijl we probeerden de werking van de service te herstellen, begonnen andere ingenieurs met het voorbereiden van een nieuwe OSD-cluster met de vorige versie van de software, zodat we in geval van problemen alles daarop konden uitrollen.<\/p>\n<h2>Analyse van de oorzaken<\/h2>\n<p>\nHet belangrijkste symptoom van de storing was een vloedgolf van tienduizenden verbindingen met de database, waardoor het MySQL-exemplaar feitelijk onbruikbaar werd. Hierdoor was het moeilijk om het probleem te diagnosticeren. We hebben een limiet ingesteld voor het maximale aantal verbindingen van klanten om het SRE-team te helpen bij het evalueren van het probleem. We hebben geen ongewoon verkeer naar de database waargenomen: in feite waren de meeste aanvragen leesverzoeken en slechts enkele schrijfverzoeken.<\/p>\n<p>We also attempted to identify a pattern in the database traffic that could have caused this avalanche. However, no patterns could be found in the logs. While awaiting the readiness of the new cluster with OSD 4.3.18, we continued attempts to launch the quay.io pods. Each time the cluster reached full power, the database would hang. This meant it was necessary to restart the RDS instance in addition to all the quay.io pods.<\/p>\n<p>Tegen de avond stabiliseerden we de service in een alleen-lezen modus en schakelden we zoveel mogelijk onbelangrijke functies uit (zoals het opruimen van ongebruikte ruimte), om de belasting op de database te verlagen. De vastlopers stopten, <b>maar de oorzaak werd nog steeds niet gevonden<\/b>. Het nieuwe OSD-cluster was gereed, en we hebben de service overgezet, het verkeer aangesloten en monitoring voortgezet.<\/p>\n<p>Quay.io functioneerde stabiel op het nieuwe OSD-cluster, dus keerden we terug naar de database-logs, maar we konden nog steeds geen correlatie ontdekken die de blokkeringen verklaarde. De ingenieurs van OpenShift werkten samen met ons om te begrijpen of wijzigingen in Red Hat OpenShift 4.3.19 problemen met Quay konden veroorzaken. Echter, er werd niets ontdekt, en <b>het bleek niet mogelijk om het probleem in een laboratoriumomgeving te reproduceren.<\/b>.<\/p>\n<h2>De tweede storing<\/h2>\n<p>\n28 mei, kort voor het middaguur EDT, viel quay.io opnieuw met dezelfde symptomen: de werking van de database werd geblokkeerd. En opnieuw zetten we al onze middelen in voor het onderzoek. In eerste instantie moest de service weer operationeel worden. Echter, <b>This time, restarting the RDS and the quay.io pods did not lead to any results.<\/b>Quay is geschreven in Python, en elke pod werkt als een enkele monolithische container. In de uitvoeringsomgeving van de container worden veel gelijktijdige taken uitgevoerd. We gebruiken de bibliotheek<\/p>\n<p>gevent <code>gunicorn<\/code> onder <code>voor het verwerken van webverzoeken. Wanneer Quay een verzoek ontvangt (via onze eigen API, of via de Docker API), wordt er een gevent worker toegewezen. Normaal gesproken moet deze worker verbinding maken met de database. Na de eerste storing ontdekten we dat de gevent workers verbinding maakten met de database met de standaardinstellingen.<\/code> To handle web requests. When a request comes to Quay (through our own API or via Docker's API), it is assigned a gevent worker. Usually, this worker should connect to the database. After the first failure, we found that gevent workers were connecting to the database using default settings.<\/p>\n<p>Given the significant number of Quay pods and thousands of incoming requests per second, a large number of connections to the database could theoretically overload the MySQL instance. Monitoring showed that Quay, on average, processes 5,000 requests per second. The number of connections to the database was approximately the same. 5,000 connections comfortably fit the capabilities of our RDS instance (which cannot be said for tens of thousands). <b>Om de een of andere reden waren er onverwachte pieken in het aantal verbindingen.<\/b>, maar we zagen geen enkele correlatie met de binnenkomende verzoeken.<\/p>\n<p>Deze keer hebben we ons vastbijgezet om de bron van het probleem te vinden en op te lossen, in plaats van alleen opnieuw op te starten. In de codebasis van Quay <b>Changes were made to limit the number of database connections for each worker.<\/b> gevent. Dit aantal werd een parameter in de configuratie: het werd mogelijk om het 'on the fly' te wijzigen, zonder een nieuw containerbeeld te hoeven opbouwen. Om te ontdekken hoeveel verbindingen werkelijk verwerkt konden worden, werden er verschillende tests uitgevoerd in de staging-omgeving, waarbij verschillende waarden werden ingesteld om te zien hoe dit invloed had op de belastingstestscenario's. Uiteindelijk werd ontdekt dat <b>Quay fouten 502 begint te geven wanneer het aantal verbindingen de 10.000 overschrijdt.<\/b><\/p>\n<p>We hebben deze nieuwe versie meteen in productie gebracht en de verbindingen met de database in de gaten gehouden. Eerder werd de database ongeveer na 20 minuten geblokkeerd. Na 30 probleemloze minuten hadden we hoop, en na een uur - zekerheid. We herstelden het schrijfverkeer op de site en begonnen met de postmortem-analyse.<\/p>\n<p>Door het probleem dat leidde tot de blokkade te omzeilen, <b>ontdekten we de werkelijke oorzaken ervan niet.<\/b>Het bleek dat het niet gerelateerd was aan veranderingen in OpenShift 4.3.19, aangezien hetzelfde gebeurde op versie 4.3.18, die eerder zonder problemen met Quay werkte.<\/p>\n<p>In de cluster moest er duidelijk nog iets anders verborgen zijn.<\/p>\n<h2>Diepgaand onderzoek<\/h2>\n<p>\nQuay.io heeft zes jaar lang de standaardinstellingen gebruikt voor de verbinding met de database zonder enige problemen. Wat is er veranderd? Het is duidelijk dat het verkeer naar quay.io gedurende deze tijd gestaag is gegroeid. In ons geval leek het alsof een drempelwaarde werd bereikt die een lawine aan verbindingen triggerde. We bleven de logs van de database onderzoeken na de tweede storing, maar ontdekten geen patronen of duidelijke verbanden.<\/p>\n<p>Ondertussen was het SRE-team bezig met verbeteringen op het gebied van de observatie van verzoeken in Quay en de algehele gezondheid van de service. <b>Nieuwe metrics en dashboards zijn uitgerold<\/b>, die laten zien welke delen van Quay het meest worden gevraag door klanten.<\/p>\n<p>Quay.io functioneerde normaal tot 9 juni. In de ochtend (in EDT) werden we opnieuw getuige van een significante toename van het aantal verbindingen met de database. <b>Deze keer vond er geen downtime plaats<\/b>, omdat een nieuwe parameter het aantal verbindingen beperkte en verhinderde dat de capaciteit van MySQL werd overschreden. Echter, voor ongeveer een half uur ervoeren veel gebruikers traagheden op quay.io. We verzamelden snel alle beschikbare gegevens door gebruik te maken van de toegevoegde monitoringtools. Plotseling verscheen er een patroon.<\/p>\n<p><b>Vlak voor de sprong in het aantal verbindingen ontvingen we een groot aantal verzoeken op de App Registry API<\/b>. App Registry is een minder bekende functie van quay.io. Het maakt het mogelijk om dingen zoals Helm charts en containers met rijke metadata op te slaan. De meeste gebruikers van quay.io maken geen gebruik van deze functie, maar ze wordt actief gebruikt door Red Hat OpenShift. OperatorHub binnen OpenShift slaat alle operators op in App Registry. Deze operators vormen de basis voor het ecosysteem van OpenShift-werloaden en het operationele model (in het kader van 'tweede dag'-operaties) gericht op partners.<\/p>\n<p>Each OpenShift 4 cluster uses operators from the built-in OperatorHub to publish a catalog of operators available for installation and provide updates for those already installed. With the growing popularity of OpenShift 4, the number of clusters running it has also increased globally. Each of these clusters loads the contents of operators to run the built-in OperatorHub, using the App Registry inside quay.io as the backend. <b>Bij het zoeken naar de oorzaak van het probleem hebben we gemist dat met de geleidelijke toename van de populariteit van OpenShift ook de belasting op een van de zelden gebruikte functies van quay.io toenam.<\/b>.<\/p>\n<p>We conducted an analysis of the App Registry request traffic and looked into the registry code. Immediately, shortcomings appeared that caused the database requests to be formed suboptimally. Under low load, they posed no issues, but as the load increased, they became a source of problems. The App Registry had two problematic endpoints that poorly responded to increased load: the first returned a list of all packages in the repository, the second returned all blobs for a package.<\/p>\n<h2>Oorzaakverwijdering<\/h2>\n<p>\nDe hele volgende week hebben we gewerkt aan het optimaliseren van de code van App Registry en zijn omgeving. Ineffectieve SQL-query's werden herzien, overbodige aanroepen van commando's werden verwijderd, <code>tar<\/code> (het werd gestart bij elke blob-extractie), er is caching toegevoegd waar mogelijk. Vervolgens is er een uitgebreide prestatietest uitgevoerd en is de snelheid van de App Registry voor en na de wijzigingen vergeleken.<\/p>\n<p><b>API-verzoeken die voorheen tot een halve minuut duurden, werden nu uitgevoerd in milliseconden.<\/b>. Volgende week hebben we de wijzigingen in productie uitgerold, en sindsdien werkt quay.io stabiel. Tijdens deze periode zijn er verschillende scherpe verkeerspieken waargenomen op de App Registry-endpoint, maar de aangebrachte verbeteringen hebben onderbrekingen van de database voorkomen.<\/p>\n<h2>Wat hebben we geleerd?<\/h2>\n<p>\nHet is duidelijk dat elke dienst probeert downtime te vermijden. In ons geval geloven we dat de recente storingen hebben geholpen om quay.io beter te maken. We hebben verschillende belangrijke lessen geleerd die we willen delen:<\/p>\n<ol>\n<li> <b>Gegevens over wie en hoe uw dienst wordt gebruikt zijn nooit overbodig.<\/b>Omdat Quay 'gewoon werkte', hebben we nooit de noodzaak gevoeld om tijd door te brengen aan het optimaliseren van verkeer en het beheren van belasting. Dit heeft een valse gevoel van veiligheid gecre\u00eberd dat de dienst eindeloos kon schalen.<\/li>\n<li> Wanneer de dienst uitvalt, <b>is het herstellen van de werking de hoogste prioriteit.<\/b>. Aangezien Quay bleef lijden onder een geblokkeerde database tijdens de eerste storing, hebben onze standaardprocedures niet het beoogde effect gehad en konden we de diensten niet herstellen met hun hulp. Dit leidde tot een situatie waarin tijd moest worden besteed aan analyse en gegevensverzameling in de hoop de hoofdoorzaak te vinden \u2014 in plaats van al onze inspanningen te richten op het herstellen van de functionaliteit.<\/li>\n<li> <b>Evalueer de impact van elke functie van de service.<\/b>. Klanten gebruikten App Registry zelden, waardoor het geen prioriteit was voor ons team. Wanneer bepaalde productfuncties bijna niet worden gebruikt, komen bugs zelden aan het licht en verliezen ontwikkelaars de aandacht voor de code. Het is gemakkelijk om slachtoffer te worden van de misvatting dat het zo moet zijn \u2014 totdat deze functie plotseling in het middelpunt van een grote storing komt te staan.<\/li>\n<\/ol>\n<p><\/p>\n<h2>Wat nu?<\/h2>\n<p>\nHet werk aan het waarborgen van de stabiliteit van de service stopt nooit en we verbeteren het voortdurend. Het verkeer op quay.io blijft groeien, en we beseffen dat we alles moeten doen om het vertrouwen van onze klanten te rechtvaardigen. Daarom werken we momenteel aan de volgende taken:<\/p>\n<ol>\n<li> Implementatie van alleen-lezen database-replicas om de service te helpen het relevante verkeer te verwerken in geval van problemen met de primaire RDS-instance.<\/li>\n<li> Bijwerken van de RDS-instance. De huidige versie is op zich geen probleem. We willen simpelweg een valse piste (die we tijdens de storing volgden) opruimen; het bijhouden van de software in actuele staat zal nog een factor wegnemen voor toekomstige onderbrekingen.<\/li>\n<li> Extra caching door het hele cluster. We blijven gebieden zoeken waar caching de belasting op de database kan verminderen.<\/li>\n<li> Toevoegen van een webapplicatie-firewall (WAF) om te zien wie en waarom verbinding maakt met quay.io.<\/li>\n<li> Vanaf de volgende release zullen Red Hat OpenShift-clusters App Registry afschaffen ten gunste van operator catalogi, gebaseerd op container images die beschikbaar zijn op quay.io.<\/li>\n<li> Een langdurige vervanger van App Registry kan de ondersteuning van de specificaties van Open Container Initiative (OCI) artifacts zijn. Dit wordt momenteel ge\u00efmplementeerd als native functionaliteit van Quay en zal beschikbaar zijn voor gebruikers zodra de specificatie definitief is goedgekeurd.<\/li>\n<\/ol>\n<p>\nAl het bovenstaande maakt deel uit van de voortdurende investeringen van Red Hat in quay.io terwijl we van een klein, \u2018startup-achtig\u2019 team overgaan naar een volwassen platform dat wordt beheerd door SRE. We weten dat veel van onze klanten op quay.io vertrouwen in hun dagelijkse werkzaamheden (inclusief Red Hat!) en we doen ons best om zo open mogelijk te zijn over recente storing en de voortdurende inspanningen om beter te worden.<\/p>\n<h2>P.S. van de vertaler<\/h2>\n<p>\nLees ook op onze blog:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/news\/t\/475716\/\/\">Red Hat heeft de code van de containerregister voor CoreOS-afbeeldingen - Quay - geopend.<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/510486\/\">Praktische verhalen uit ons SRE-levens. Deel 2<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/461807\/\">Hoe de prioriteiten van pods in Kubernetes leidde tot downtime bij Grafana Labs<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Bron: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/515932\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0430\u0432\u0433\u0443\u0441\u0442\u0430 Red Hat \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b\u0430 \u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438, \u0447\u0442\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u043b\u0438 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u043c\u0435\u0441\u044f\u0446\u044b \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0435\u0451 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 Quay.io (\u0432 \u0435\u0433\u043e \u043e\u0441\u043d\u043e\u0432\u0435 \u2014 \u0440\u0435\u0435\u0441\u0442\u0440 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432, \u0434\u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0439\u0441\u044f \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043f\u043e\u043a\u0443\u043f\u043a\u043e\u0439 CoreOS). \u0412\u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u0430\u0448\u0435\u0439 \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u0438 \u0432 \u044d\u0442\u043e\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u0435 \u043a\u0430\u043a \u0442\u0430\u043a\u043e\u0432\u043e\u043c, \u043f\u043e\u0443\u0447\u0438\u0442\u0435\u043b\u0435\u043d \u0441\u0430\u043c \u043f\u0443\u0442\u044c, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043f\u0440\u043e\u0448\u043b\u0438 SRE-\u0438\u043d\u0436\u0435\u043d\u0435\u0440\u044b \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":92074,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-92073","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u043c.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/post-mortem-po-nedostupnosti-quay-io\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"nl_NL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Post Mortem \u043f\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 Quay.io | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u043c.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/post-mortem-po-nedostupnosti-quay-io\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-08-22T17:41:56+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-08-22T17:41:56+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Post Mortem over de uitval van Quay.io | ProHoster","description":"Opmerking.","canonical_url":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/post-mortem-po-nedostupnosti-quay-io","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nl_NL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Post Mortem \u043f\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 Quay.io | ProHoster","og:description":"\u041f\u0440\u0438\u043c.","og:url":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/post-mortem-po-nedostupnosti-quay-io","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-08-22T17:41:56+00:00","article:modified_time":"2020-08-22T17:41:56+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"92073","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 12:15:36","updated":"2022-10-02 22:37:13","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/92073","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/comments?post=92073"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/92073\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media\/92074"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=92073"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=92073"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=92073"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}