Өнөө шөнө
Энэ материалыг бэлтгэхэд ашигласан мэдээллийг эндээс авсан болно
SIG кластерийн амьдралын мөчлөгийн чухал танилцуулгаас эхэлцгээе: динамик бүтэлгүйтлийн кластерууд Kubernetes (эсвэл илүү нарийвчлалтайгаар, өөрөө зохион байгуулсан HA байршуулалт) одоо байна kubeadm
(init
и join
). Товчхондоо, үүний тулд:
- кластерт ашигласан гэрчилгээг нууцад шилжүүлсэн;
- K8s кластер дотор etcd кластер ашиглах боломжийн хувьд (жишээ нь өмнө нь байсан гадаад хамаарлаас ангижрах)
etcd-оператор ; - Гадны ачаалал тэнцвэржүүлэгчийн санал болгож буй тохиргоог баримтжуулсан бөгөөд энэ нь алдааг тэсвэрлэх чадвартай тохиргоог хангадаг (ирээдүйд энэ хамаарлыг арилгахаар төлөвлөж байгаа боловч энэ үе шатанд биш).
kubeadm ашиглан бүтээсэн Kubernetes HA кластерын архитектур
Хэрэгжилтийн талаарх дэлгэрэнгүй мэдээллийг эндээс авах боломжтой
API
баг apply
ерөнхийдөө ярих тунхаглалын объектын удирдлага kubectl
apiserver дээр. Хөгжүүлэгчид өөрсдөө ийм байдлаар шийдвэрээ товч тайлбарлав kubectl apply
- Kubernetes дахь тохиргоотой ажиллах үндсэн хэсэг боловч "энэ нь алдаануудаар дүүрэн бөгөөд засахад хэцүү" тул энэ функцийг хэвийн байдалд оруулж, хяналтын хавтгайд шилжүүлэх шаардлагатай байна. Өнөөдөр байгаа асуудлуудын энгийн бөгөөд тодорхой жишээнүүд:
Хэрэгжилтийн талаар дэлгэрэнгүй мэдээлэл байна
Альфа хувилбарт ашиглах боломжтой kubectl
) баталгаажуулалтыг өөрийн талд (дотор kubectl create
и kubectl apply
) ба схемийн дагуу баримт бичгийг гаргах (kubectl explain
). Дэлгэрэнгүй - дотор
Өмнө нь байгаа бүртгэлүүд O_APPEND
(гэхдээ үгүй O_TRUNC
) зарим тохиолдолд логоо алдахаас сэргийлж, эргэлтэнд зориулсан гадаад хэрэгслүүдээр логуудыг тайрахад хялбар болгох.
Мөн Kubernetes API-ийн хүрээнд үүнийг тэмдэглэж болно PodSandbox
и PodSandboxStatus
runtime_handler
тухай мэдээллийг бүртгэх RuntimeClass
хонхорцог (энэ тухай текстээс дэлгэрэнгүй уншина уу AdmissionReview
тэд дэмждэг. Эцэст нь, Элсэлтийн Webhooks дүрэм одоо байна
Хадгалах
PersistentLocalVolumes
subPath
subPathExpr
, энэ нь одоо хүссэн лавлах нэрийг тодорхойлоход хэрэглэгддэг. Энэ функц нь анх Kubernetes 1.11-д гарч ирсэн боловч 1.14-т альфа хувилбарын төлөвт байсан.
Kubernetes-ийн өмнөх хувилбарын нэгэн адил идэвхтэй хөгжиж буй CSI (Container Storage Interface)-д олон чухал өөрчлөлтүүдийг оруулсан болно:
CSI
Боломжтой болсон (альфа хувилбарын нэг хэсэг болгон) ExpandCSIVolumes
, түүнчлэн тодорхой CSI драйвер дээр энэ үйлдлийг дэмжих дэмжлэг байгаа эсэх.
Альфа хувилбар дахь CSI-ийн өөр нэг онцлог - CSIInlineVolume
онцлог хаалга.
CSI-тай холбоотой Kubernetes-ийн "дотоод" хэсэгт мөн ахиц дэвшил гарсан бөгөөд энэ нь эцсийн хэрэглэгчдэд (системийн администраторуудад) тийм ч харагдахгүй байна ... Одоогоор хөгжүүлэгчид хадгалах залгаас бүрийн хоёр хувилбарыг дэмжихээс өөр аргагүйд хүрч байна: нэг - "д хуучин арга", K8s кодын дотор (мод дотор), хоёр дахь нь - шинэ CSI-ийн нэг хэсэг болгон. (жишээлбэл, энэ талаар дэлгэрэнгүй уншина уу
Энэ бүхэн альфа хувилбарт хүрэхэд хүргэсэн
Нэмж дурдахад CSI бүхий блок төхөөрөмжүүдийн дэмжлэг (CSIBlockVolume
)
Зангилаа/Кубелет
Альфа хувилбарыг танилцууллаа /metrics/resource/v1alpha1
. Хөгжүүлэгчдийн урт хугацааны стратеги
Маш сонирхолтой нюанс: Prometheus форматыг ашиглах янз бүрийн тохиолдлуудтай харьцуулахад gRPC төгсгөлийн цэгийн гүйцэтгэлийн тодорхой давуу талыг үл харгалзан (доорх жишиг үзүүлэлтүүдийн аль нэгний үр дүнг харна уу), Зохиогчид энэхүү хяналтын системийг нийгэмд тодорхой удирдаж байсан тул Prometheus-ийн текстийн форматыг илүүд үздэг.
“gRPC нь гол хяналтын шугам хоолойтой нийцэхгүй байна. Төгсгөлийн цэг нь зөвхөн хэмжигдэхүүнийг Metrics Server-д хүргэх эсвэл түүнтэй шууд нэгдсэн хяналтын бүрэлдэхүүн хэсгүүдэд хэрэгтэй болно. Metrics Server дээр кэш ашиглах үед Prometheus текст форматын гүйцэтгэл хангалттай сайн нийгэмд Prometheus-ийг өргөнөөр үрчилж авснаар бид Prometheus-ийг gRPC-ээс илүүд үзэх хэрэгтэй. OpenMetrics формат илүү тогтвортой болмогц бид proto-д суурилсан форматаар gRPC гүйцэтгэлд хандах боломжтой болно."
Хэмжилтийн шинэ Kubelet төгсгөлийн цэгт gRPC болон Prometheus форматыг ашиглах гүйцэтгэлийн харьцуулсан тестүүдийн нэг. График болон бусад дэлгэрэнгүй мэдээллийг эндээс авах боломжтой
Бусад өөрчлөлтүүдийн дунд:
- Кубелет одоо (нэг удаа)
зогсоохыг хичээдэг дахин эхлүүлэх болон устгах үйлдлүүдийн өмнө үл мэдэгдэх төлөвт байгаа контейнер. - Хэрэглэхдээ
одоо init сав рууPodPresets
нэмсэн энгийн савтай ижил мэдээлэл. - Кубелет
ашиглаж эхэлсэн usageNanoCores
CRI статистикийн үйлчилгээ үзүүлэгчээс болон Windows дээрх зангилаа болон контейнерийн хувьднэмсэн сүлжээний статистик. - Үйлдлийн систем болон архитектурын мэдээллийг шошгон дээр тэмдэглэсэн
kubernetes.io/os
иkubernetes.io/arch
Зангилааны объектууд (бета хувилбараас GA руу шилжүүлсэн). - Под дахь контейнеруудад зориулсан системийн хэрэглэгчийн тодорхой бүлгийг тодорхойлох чадвар (
RunAsGroup
, онд гарч ирэвK8s 1.11 )дэвшилтэт бета хувилбараас өмнө (өгөгдмөлөөр идэвхжсэн). - du болон cAdvisor-д ашигласан олох,
сольсон on Go хэрэгжилт.
CLI
Cli-runtime болон kubectl-д
Энгийн файлын хэрэглээний жишээ
Үүнээс гадна:
-
Нэмсэн шинэ багkubectl create cronjob
, нэр нь өөрөө ярьдаг. - В
kubectl logs
одоо та чаднанэгтгэх тугнууд-f
(--follow
урсгалын лог) болон-l
(--selector
шошгоны асуулгын хувьд). - кубектл
заасан зэрлэг картаар сонгосон файлуудыг хуулах. - Багийнханд
kubectl wait
нэмсэн туг--all
заасан нөөцийн төрлийн нэрийн талбар дахь бүх нөөцийг сонгох.
Бусад
Дараах чадварууд тогтвортой (GA) статусыг авсан:
-
, хонгилын бэлэн байдалд харгалзан үзсэн нэмэлт нөхцөлийг тодорхойлохын тулд pod-ийн тодорхойлолтод ашигласан;ReadinessGate
- Том хуудасны дэмжлэг (онцлогын хаалга гэж нэрлэдэг
);HugePages
-
CustomPodDNS ; - PriorityClass API
Pod Priority & Preemption .
Kubernetes 1.14-д оруулсан бусад өөрчлөлтүүд:
- Өгөгдмөл RBAC бодлого нь API хандалтыг зөвшөөрөхгүй
discovery
иaccess-review
баталгаажуулалтгүй хэрэглэгчид (баталгаагүй). - Албан ёсны CoreDNS дэмжлэг
баталгаажсан Зөвхөн Линукс, тиймээс үүнийг (CoreDNS) кластерт байрлуулахдаа kubeadm ашиглах үед зангилаанууд зөвхөн Линукс дээр ажиллах ёстой (энэ хязгаарлалтад nodeSelectors ашигладаг). - Өгөгдмөл CoreDNS тохиргоо одоо байна
ашигладаг урагшлах залгаас проксины оронд. Мөн CoreDNS дээрнэмсэн ReadinessProbe нь тохирох (үйлчилгээнд бэлэн биш) pods дээр ачааллыг тэнцвэржүүлэхээс сэргийлдэг. - kubeadm-д, үе шатууд дээр
init
буюуupload-certs
,боломжтой болсон Шинэ удирдлагын онгоцыг kubeadm-certs нууцтай холбоход шаардагдах гэрчилгээг ачаална уу (туг ашиглана уу.--experimental-upload-certs
). - Windows суулгацын альфа хувилбар гарч ирэв
дэмжлэг gMSA (Group Managed Service Account) - Active Directory дахь тусгай дансуудыг контейнерт ашиглах боломжтой. - G.C.E-ийн хувьд
идэвхжүүлсэн etcd болон kube-apiserver хооронд mTLS шифрлэлт. - Ашигласан/хамааралтай програм хангамжийн шинэчлэлтүүд: Go 1.12.1, CSI 1.1, CoreDNS 1.3.1, kubeadm дахь Docker 18.09 дэмжлэгтэй, хамгийн бага дэмжигдсэн Docker API хувилбар нь одоо 1.26 байна.
PS
Мөн манай блог дээрээс уншина уу:
- «
Kubernetes 1.13: үндсэн инновацийн тойм "; - «
Kubernetes 1.12: үндсэн инновацийн тойм "; - «
Kubernetes 1.11: үндсэн инновацийн тойм "; - «
Kubernetes 1.10: үндсэн инновацийн тойм ".
Эх сурвалж: www.habr.com