أخطط اليوم لإخبارك بكيفية كتابة التطبيقات وما هي متطلبات تطبيقك للعمل بشكل جيد في 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 , .
- 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 .