متطلبات تطوير تطبيق في Kubernetes

أخطط اليوم لإخبارك بكيفية كتابة التطبيقات وما هي متطلبات تطبيقك للعمل بشكل جيد في Kubernetes. حتى لا يكون هناك صداع مع التطبيق ، بحيث لا تضطر إلى ابتكار وبناء نوع من "العكازات" حوله - وسير كل شيء بالطريقة التي أرادها Kubernetes نفسها.



هذه المحاضرة جزء من مدرسة Slurm Night School في Kubernetes . يمكنك مشاهدة المحاضرات النظرية المفتوحة للمدرسة المسائية على يوتيوب ، مجمعة في قائمة تشغيل . بالنسبة لأولئك الذين يشعرون براحة أكبر مع النص وليس الفيديو ، قمنا بإعداد هذه المقالة.



اسمي بافيل سيليفانوف ، في الوقت الحالي أنا مهندس DevOps الرئيسي في Mail.ru Cloud Solutions ، نقوم بإنشاء "cloud" ، ونقوم بإدارة kubernetis وما إلى ذلك. تتضمن مهامي الآن المساعدة في التطوير ، ونشر هذه السحابات ، وطرح التطبيقات التي نكتبها ، وتطوير الأدوات التي نقدمها لمستخدمينا مباشرة.





لقد كنت أعمل DevOps ، أعتقد أنه على مدار السنوات الثلاث الماضية ، على الأرجح. ولكن ، من حيث المبدأ ، ما تفعله DevOps ، ما كنت أفعله ، ربما منذ خمس سنوات بالفعل. قبل ذلك ، كنت أقوم بالمزيد من مهام الإدارة. لقد بدأت العمل مع Kubernetes منذ وقت طويل جدًا - ربما مرت أربع سنوات تقريبًا منذ أن بدأت العمل معها.



, Kubernetes 1.3, , 1.2 — . — , , Kubernetes . . , , .



, , , (TL;DR) – «too long; don’t read». .





, , , , , , - .



— «ctrl+c, ctrl+v», , DevOps, : «, Kubernetes, ».



. . , .



:



  • , -, ( ?), Kubernetes, , ;
  • Kubernetes, Kubernetes - ;
  • , , ;
  • , graceful shutdown;
  • ;
  • ;
  • , cloud-native . Cloudnativeness, .




— , Kubernetes . Kubernetes . , - . , . - /var/log.





, , - , — rsyslog , - , , , , , , , -. , , - , , ( ?) . , , - .



Kubernetes , , – , , , .



, Kubernetes, , - - , Stdout/Stderr, , . , , . , Stdout/Stderr, Kubernetes, . JSON .



, . , , kubectl logs «». , , — - .



, , , . , Kubernetes, , , .



- , -, , , - . , Kubernetes DaemonSet - – , , , . - , , - , - , , -. . , , Elasticsearch, , . , Kibana, , , .



, , , , , Kubernetes, – .



-, . , exec, . – , , . , , . , , , , , . , — . , .



– , – . , , . , , , , . , -, , , — , , . , , , , Kubernetes, – .



, – , , , , . , Kubernetes, DevOps. – Dev Ops, .



, , JSON . - , , - print - , - , - , ; JSON, JSON , .



JSON - , , , . , , , , , - nginx, , , , , . nginx instance , -. , , , nginx instance , . .



, , , . , - , , , , , , . , , , , -, . -, .





stack trace — . , – , . - Elasticsearch , - , stack trace – , - , . stack trace - , .



( Sentry), , stack trace. , -, , , . , , , , -, .





Kubernetes: Kubernetes . , , – . , – , , . , .



, , . : , .





— , — ENV (environment) , , . , , JAVA, Python, Go, Perl , database host, database user, database password, . . .



ENV . Kubernetes, ENV Deployment. , , ENV ( ..), , ENV Deployment , , database password . Kubernetes. . , . DevOps, : «, , . ».



, . , postgres database, database name, database -, dbn - , , , .



, , Deployment — . , — . , . , .



, – , . Config.pi – , . - , – , .



, , , , .yaml. , , , , .



, YAML, , , JSON, , YAML . . , - ini. , , , , - , ini .



, , , Kubernetes — . Kubernetes, ConfigMap. configmap - , configmap , . , , , , . - , .



configmap, , , , configmap, . .



, , — , , . . , , , git. , git, git, – . , , git .



Health check



– , Health check. , Health check – , . -, , , ( ) - URL, , /health.



URL, , «, , 200» «, , - 500». , http, -, - , , . , , http, . -, daemon - , , daemon status, «, , daemon , ».



? , , — , , . , , , , , . , , , , — « , ..., , ».



— - , . . . Kubernetes, , , , , , . - java- , , , , . , , .



, , , Kubernetes, , , , .





, , Readiness/Liveness Kubernetes, , readiness - . readiness , , . readiness , , instance, , , . , Liveness Kubernetes , , «», «». liveness , Kubernetes, , .



, , , - readiness , liveness . readiness, liveness , Kubernetes , , – . . – , . , -, - , , , - . , . , , REST API . , , «200, , », , «200, , » — . .



, , /health, , «200, », , , , , - , , , . , «200, ». , , , .



, , Readiness/Liveness — readiness , liveness . , , , instance instance , . readiness , , , , «» , .



liveness , , , Kubernetes , liveness- . , . , , . , JS Mongo. - , Kubernetes, readiness, liveness , Kubernetes — . , - Mongo «» . , «».



, «», , , . «» — , — - , , - , - , . , , instance. , , , , , , , , . , , . , . – , instance , instances.



liveness , , . , «». , , , , . , , , , – , .



, readiness liveness , , , , , , . readiness . liveness , , , , liveness , .



liveness «». - — . — .



, , , . . , , , — , , «200». , . « -».



— . , «, » . .



- , - , - . , -.



, . , . , , : 204, 5, 10, 15, . , « ». , . , , , . , 502 – , - .



, . , , , — . , , « » — , . , . . , , , - , - , , — . .



, , . , , REST API, , , .



, , - , , , — , , - .



.



, Kubernetes , , - DevOps , Kubernetes. , (graceful) Kubernetes. Kubernetes , Kubernetes .



Graceful Shutdown



, Graceful Shutdown . , - , app stop — , , , - . , , SIGTERM «SIGTERM, , , ». .





, SIGTERM « , , , , , SIGTERM, ». .



? , . – - , , SIGTERM.



SIGTERM – , , , , , , , , , .



Kubernetes, . , Kubernetes, «, , » , , Kubernetes — Kubernetes - SIGTERM, - , , , , , Graceful ShutdownTimeout. , .



, , SIGTERM , - , «» — SIGKILL, , . , , - , . , , , 30 . , SIGTERM, , SIGTERM 30 . , , 45 , SIGTERM. 45 . , . , , , , — . 45 , , .



, , 2 . -, , , , - , SIGTERM, . . . , , , , - , - , -. , , , — , , . , , SIGTERM . , SIGTERM. , . , . , - websocket, , , , , . , .



, - exit-. , , , - exit- 1,5,255 . , , Linux , , . , . , -, , 0 . - , 0 . .



. , , . , . , . , , , . , , . — , — . websocket`, , .



- , , , websocket . - , , reload. , . : «, , !». : « ? ?». : «, , ». , . . , , websocket, . .





, . . , .



, , - , , Kubernetes . , … - : « ». , , , . , - . : «- , ». : « ?». , Kubernetes, , , . , : « , . ». . . , , .



? Kubernetes 2 . , – . , . , Kubernetes.



. , , 1 , 1 . , , oom killer, out of memory , — . CPU . CPU, , , , CPU . . – .



. – , Kubernetes , Kubernetes . – commit . , : « , CPU ». . node, , , 8 CPU. , 1 CPU, 7 CPU. , , 8 , 1 — , Kubernetes, CPU . CPU , Kubernetes , , , CPU.



, , Kubernetes ? , . , Kubernetes , , . , , . - . , . , . , , . , , (). , , , . . , , . , .



, , , Kubernetes. Kubernetes , , . . . , .





. , persistence Kubernetes?



, , , Kubernetes . , , : « Kubernetes ?». -, , , , , Kubernetes , .



. , , , , , cloud native . , , . , , , . . .



, , - , , - , , , ? Kubernetes ?



, , , Kubernetes stateless . , . .



, , , . ? – - S3, , , - . — S3. , « , , S3 ». , : « S3 ». .



- , , , , - , S3 , . - - , Kubernetes. Ceph - , , . Ceph, , . , , - Ceph, . , , Ceph , . Ceph , .



Ceph, .



- NFS . Kubernetes , NFS — . , , , , NFS - , , , , , . , - .



, , , - . , , , - , - , . . , , . , . , , - , -, , - . , , . . Kubernetes . , instance . , . . Kubernetes , , instances. Kubernetes . , , , . . instance - . , , , . , , , , . , , , .



, Kubernetes , volume. , volume empty dir. Kubernetes , , . , . . , , . Kubernetes empty dirs . , empty dir, . , empty dir . — . - , , . , , empty dir, , empty dir .



empty dir? , . , - , . , , , -, , , . Empty dir Kubernetes . , — . empty dir , , , , . - . , , , . Kubernetes.



Minio ? Minio – , , , - , - , . , Ceph. Minio - . HTTP . , S3. . , , buckets , , , – , , .



Empty dir ? . , , , . empty dir , . . , , kubernetes, , , empty dir. , , - , - , - empty dir .



Cloudnativeness



, Cloudnative. . Cloudnativeness .



, , . , , Cloudnative . , , , , . , , .





Kubernetes. Kubernetes. , , -. Kubernetes . - , . Kubernetes . ? , , , - Kubernetes, .



, . , , . - , Kubernetes — Kubernetes . - , , , - . , , . , Kubernetes. Kubernetes , - . - , , . Kubernetes , .



, Kubernetes. - Kubernetes — , - . , , , , , . , . , , . , . , -, , , . , Kubernetes .



. Kubernetes . , , , — Kubernetes . , . , Kubernetes , , . . . , , , , .



, , . Cloudnative . , . 9 , , , Cloudnative, , , , , , . 8 6 , Kubernetes , . 30 . , , .



, 30 - , Kubernetes, . . , , , , , .



, . , , Cloudnative, - , Infrastructure as a Code. , , , , . , , , git, CI\CD .



, , -, , . -, , . -, , , . -, . , , , : «, , , , ». . - , Cloudnative Infrastructure as a Code, , , , , . .



Kubernetes: , , . . , Kubernetes, 1-2 .




All Articles