Vita speculatoria in Kubernetes periculosa esse potest

Nota. transl.: Ingenium plumbeum ab Zalando, Henning Jacobs, saepe animadvertisse problemata apud Kubernetes utentes ad cognoscendum propositum vivendi (et promptum) rimatur ac recte utendum. Propterea cogitationes suas in hac notula capacissima collegit, quae tandem in documentis K8s fiet.

Vita speculatoria in Kubernetes periculosa esse potest

Valetudo compescit, quae in Kubernetes notum est vita rimatur (i.e., literally, "viability probat" - approx. transl.satis esse periculosum. Eas si fieri potest cavendas commendo: hae exceptiones solae sunt quando vere necessariae sunt et probe cognitas earum usus particularium et consequentium. Haec publicatio de vita et alacritate compescit, et etiam in quibus casibus dicam costs et non debes eis utere.

Collegium meum Sandor nuper communicavit Twitter errores frequentissimos quos incidit, in iis quae ad usum promptitudinis / vitae rimantur:

Vita speculatoria in Kubernetes periculosa esse potest

recte configurati livenessProbe potest aggravare summus onus condiciones (viburnum shutdown + potentia longum continens / application startup tempus) et ducunt ad alias consequentias negativas ut dependentiam guttae; (vide quoque me recens articulum de limitando numero petitiones K3s + ACME iunctura). Peius etiam est, cum vita probe coniungitur cum perscriptio sanitatis, quae externa datorum est: unum DB defectum erit sileo omnia vasa!

Generalis nuntius "Noli uti vita rimatur" in hoc casu non multum adiuvat, ut inspiciamus quid praeparationis et vitae impedimentorum sint.

Nota: Pleraque e testi infra in documentis internis Zalando inclusa est.

Promptus et vita checks

Kubernetes duas machinas magnas vocatas praebet vita rimatur et animum rimatur. Intervenit actionem aliquam - ut petitionem HTTP mittens, nexum aperiens vel mandatum in vase exequens, ad confirmandum applicationis opus sicut expectatur.

Kubernetes usus promptum rimaturintelligere quando continens paratus est accipere negotiationis. Vasculum ad usum paratum habetur si omnia eius vasa parata sunt. Usus huius mechanismi unus est ad regendum qui siliquae in tergum ad officia Kubernetes adhibentur (et praesertim Ingress).

Vita speculatur auxilium Kubernetes intellegunt cum tempus est ut sileo continens. Exempli causa, talis perscriptio permittit te mortiferam intercipere cum applicatio in uno loco haesit. Restarting receptaculum in hoc statu adiuvat applicationes ad humum, licet erroribus, sed etiam ad defectiones lapsus (vide infra).

Si applicationem renovationis explicandae conaris quae vita deficit / promptitudo compescit, eius rollout stabulari erit sicut status observat Kubernetes Ready ab omni siliqua.

exempli gratia

Hic est exemplum prompti explorationis iter iniecta /health per HTTP per default occasus (spatium: 10 Secundi, timeout: secundus 1 ; victoria limina: 1, defectum limina: 3);

# Ρ‡Π°ΡΡ‚ΡŒ ΠΎΠ±Ρ‰Π΅Π³ΠΎ описания deployment'Π°/стСка
podTemplate:
  spec:
    containers:
    - name: my-container
      # ...
      readinessProbe:
        httpGet:
          path: /health
          port: 8080

suasiones

  1. Pro microservices cum HTTP endpoint (REST, etc.) semper definias promptum probequae inhibet num applicatio (pod) parata ad mercaturam accipiendam sit.
  2. Fac animum probe disponibilitate ipsam telam server portum operit:
    • utens portubus ad proposita administrativa, "admin" vel "administratio" (ex. gr. 9090), dicta readinessProbefac ut terminus tantum OK reddat si primus portus HTTP (sicut 8080) paratus est ad negotiationem recipiendam*;

      * Intellego saltem unum casum Zalando, ubi id non accidit, i.e. readinessProbe Portum "procurationis" compressi, sed ipsa server opus non incepit propter difficultates cella onerandas.

    • Applicatio prompti explorationis ad portum separatum ducere potest eo quod onerare in portu principali non potest reflecti in perscriptio sanitatis (hoc est, piscinae stamina in servo plena est, sed perscriptio sanitatis adhuc ostendit omnia bene esse. ).
  3. Fac quod dat promptitudinem probe datorum initialization / migratio;
    • Facillimus modus ad hoc assequendum est ut servo HTTP contactu tantum post initialization completum est (exempli gratia, migrans database e Flyway et sic porro.); hoc est, pro mutatione status sanitatis perscriptio, simpliciter non incipit interretialem server donec migratio datorum compleatur*.

      * Migrationes datorum etiam ab init vasis extra vasculum currere potes. Ego adhuc habeo applicationum auto contentorum, id est, in quibus applicatio continens scit dare datorum in statum desideratum sine coordinatione externa.

  4. usus httpGet pro promptu cohibet per typicam salutem reprehendo terminos (exempli gratia: /health).
  5. Intellegere default reprehendo parametri (interval: 10s, timeout: 1s, successThreshold: 1, failureThreshold: 3):
    • default options intelliguntur vasculum fiet non est paratum Post circiter XXX seconds (III defecit sanitas checks).
  6. Utere portu separato pro "admin" vel "administratio", si acervus technologiae (e.g. Java/Spring) id permittit, ut sanitatem et metri administrationem a negotiatione regulari distrahat;
    • sed noli oblivisci circa punctum II.
  7. Si opus est, promptitudo specillum adhiberi potest ad fovendum/loading latibulum et 503 status code remittit donec continens calefaciat;

cautiones adjecerimus

  1. Noli confidere externis clientibus (ut notitia apothecae) ​​cum currit promptum / vitam probat - hoc potest ducere defectis cascading:
    • Exempli gratia, tranquillam requiem capiamus cum 10 siliquis in una Postgres datorum pendentibus: cum perscriptio pendet in nexu operationis cum DB, siliquae omnes 10 deficiunt si mora in retis/DB parte - soleat. pejora omnia quam potuit;
    • Quaeso nota quod fons Data nexum datorum per defaltam coercet*;

      * Hic est defectus morum Veris Data Redis (saltem ultimo tempore compressi), quae ad defectum "casstrophicum" perduxit: cum Redis breviter pervulgatus est, siliquae "crepuerunt".

    • Externi in hoc sensu etiam aliae siliquae eiusdem applicationis significare possunt, id est, specimen perscriptio ne dependeat a statu aliarum siliquae eiusdem botri, ne fragores lapsus cadant;
      • eventus variari possunt ad applicationes cum statu distributo (exempli gratia in-memoria in siliquis).
  2. Nolite vivere probe siliquae enim (exceptiones sunt casus quando vere necessariae sunt et probe cognitas speciales et consequentias eorum usus);
    • Probatio viva auxilium recuperare potest vasis suspensis, sed cum plenam potestatem tuam applicationis habeas, res quasi processuum suspensorum et quasi claviculae non evenire deberent: optimum est, applicationes consulto fragore et ad priorem statum stabiliorem reducere;
    • incassum probatio vivendi causat continens ut sileo, ita potentialiter exacerbat effectus errores relatos violentiae: sileo continens in down tempore (saltem pro duratione applicationis startup, dic 30+ secundis), novos errores causans; augere onus in aliis vasis et augere defectum eorum, etc.;
    • vivacitas compescit cum externa dependentia coniunctae sunt pessimae iuncturae, lapsus minantes: levis mora in parte datorum ducet ut sileo omnium vasorum tuorum!
  3. Morbi vitae laoreet quam, et egestas risus oportet esse aliud:
    • eandem valetudinem explorare potes, sed altioris responsionis limen utere.failureThreshold) , verbi gratia, assignare statum non est paratum post III conatus et considera quod vita specillum defecerit post X conatus;
  4. Ne exec compescitcum quaestionibus notis coniunguntur quae ad apparentiam processuum zombii ducunt;

summary

  • Prompta utere rimatur, quando vasculum ad negotiationem recipiendam parata est.
  • Utere vita solum rimatur, cum opus est.
  • Improprius usus promptitudinis/vivitatis speculatoriae ad reducta disponibilitate et defectibus lapsis perducere potest.

Vita speculatoria in Kubernetes periculosa esse potest

Additional materiae in thema

Renovatio No. 1 ex 2019-09-29

De init continentia database migrationis: nota addita.

EJ admonuit me de PDB: una problematum ad vivacitatem coercet est defectus coordinationis inter siliquas. Kubernetes has Pod Disruption Budgets (PDB) ad numerum defectivorum concurrentium limitare applicationem experiri potest, attamen impedimenta non rationem habent PDB. Specimen, K8s indicare potuimus "Sileo unum vasculum si eius probatio fallit, sed ea omnia non sileo ut res pejores fiant".

Bryan posuit eam perfecte"Utere vita perspiciendi cum scis exacte quid" optimus res facere est applicationem occidere"(Rursus non auferantur).

Vita speculatoria in Kubernetes periculosa esse potest

Renovatio No. 2 ex 2019-09-29

De lectione documentorum ante usum: Et creata est petitio debita (pluma petitio) Documenta addere de speculatoria vita.

PS ab translator

Lege etiam in nostro diario:

Source: www.habr.com