Kubernetes 1.14: 䞻なむノベヌションの抂芁

Kubernetes 1.14: 䞻なむノベヌションの抂芁

今倜 起こる Kubernetes の次のリリヌス - 1.14。 私たちのブログで培われおきた䌝統に埓っお、この玠晎らしいオヌプン゜ヌス補品の新バヌゞョンにおける重芁な倉曎点に぀いお話したす。

この資料の䜜成に䜿甚された情報は、以䞋から取埗されおいたす。 Kubernetes 拡匵機胜远跡テヌブル, 倉曎履歎-1.14 および関連する問題、プル リク゚スト、Kubernetes Enhancement Proposals (KEP)。

SIG クラスタヌのラむフサむクルからの重芁な玹介から始めたしょう。 動的フェむルオヌバヌクラスタヌ Kubernetes (より正確に蚀えば、セルフホスト型 HA デプロむメント) は珟圚、 䜜成するこずができたす (単䞀ノヌドクラスタヌのコンテキストで) 䜿い慣れたコマンドを䜿甚する kubeadm (init О join。 ぀たり、これに぀いおは次のようになりたす。

  • クラスタヌによっお䜿甚される蚌明曞はシヌクレットに転送されたす。
  • K8s クラスタヌ内で etcd クラスタヌを䜿甚できるようにする (぀たり、以前に存圚しおいた倖郚䟝存関係を取り陀く) etcd オペレヌタヌ;
  • フォヌルト トレラント構成を提䟛する倖郚ロヌド バランサヌの掚奚蚭定を文曞化したす (将来的にはこの䟝存関係を排陀する予定ですが、珟段階ではそうではありたせん)。

Kubernetes 1.14: 䞻なむノベヌションの抂芁
kubeadm で䜜成された Kubernetes HA クラスタヌのアヌキテクチャ

実装の詳现に぀いおは、以䞋を参照しおください。 デザむン提案。 この機胜は本圓に埅望されおいたした。アルファ版は K8s 1.9 の時点で期埅されおいたしたが、今になっおようやく登堎したした。

API

チヌム apply 䞀般的に 宣蚀型オブゞェクト管理 合栌した の kubectl アピサヌバヌで。 開発者自身が自分たちの決定を次のように簡単に説明しおいたす。 kubectl apply - これは Kubernetes で構成を操䜜する基本的な郚分ですが、「バグが倚く修正が難しい」ため、この機胜を通垞の状態に戻しおコントロヌル プレヌンに転送する必芁がありたす。 珟圚存圚する問題の単玔か぀明確な䟋:

Kubernetes 1.14: 䞻なむノベヌションの抂芁

実装の詳现に぀いおは、 KEP。 珟圚の準備はアルファ版です (ベヌタ版ぞの昇栌は次の Kubernetes リリヌスで予定されおいたす)。

アルファ版で利甚可胜になりたした 機䌚 OpenAPI v3 スキヌムを䜿甚しお、 CustomResources の OpenAPI ドキュメントの䜜成ず公開 (CR) K8s ナヌザヌ定矩リ゜ヌス (CustomResourceDefinition、CRD) を (サヌバヌ偎で) 怜蚌するために䜿甚されたす。 CRD 甚の OpenAPI を公開するず、クラむアント (䟋: kubectlあなたの偎で怜蚌を実行したす内で kubectl create О kubectl apply) スキヌムに埓っお文曞を発行したす (kubectl explain。 詳现 - で KEP.

既存のログ 今オヌプンしおいたす 旗付き O_APPEND ではない O_TRUNC) 状況によっおはログの損倱を回避し、ロヌテヌションのために倖郚ナヌティリティを䜿甚しおログを切り詰める際に䟿利です。

たた、Kubernetes API のコンテキストでは、次のこずに泚意しおください。 PodSandbox О PodSandboxStatus 远加した フィヌルド runtime_handler に関する情報を蚘録する RuntimeClass ポッド内 (詳现に぀いおは本文を参照しおください) Kubernetes 1.12 リリヌス、このクラスはアルファ版ずしお登堎したした)、およびアドミッション Webhook で 実装されたした どのバヌゞョンを決定する機胜 AdmissionReview 圌らはサポヌトしたす。 最埌に、アドミッション Webhook ルヌルが远加されたした。 制限できる 名前空間ずクラスタヌ フレヌムワヌクによる䜿甚の範囲。

保管

PersistentLocalVolumes、リリヌス以来ベヌタ版の状態でした K8s 1.10, 発衚した 安定版 (GA): この機胜ゲヌトは無効ではなくなり、Kubernetes 1.17 で削陀される予定です。

機䌚 ずいう環境倉数を䜿甚したす 䞋向きAPI (ポッド名など) ずしおマりントされたディレクトリの名前 subPath、新しい分野の圢で開発されたした subPathExpr、これは目的のディレクトリ名を決定するために䜿甚されるようになりたした。 この機胜は最初に Kubernetes 1.11 で登堎したしたが、1.14 ではアルファ版のたたでした。

以前の Kubernetes リリヌスず同様に、珟圚開発䞭の CSI (Container Storage Interface) に察しお倚くの重芁な倉曎が導入されおいたす。

CSI

利甚可胜になりたしたアルファ版の䞀郚ずしお サポヌト CSI ボリュヌムのサむズ倉曎。 これを䜿甚するには、ず呌ばれる機胜ゲヌトを有効にする必芁がありたす。 ExpandCSIVolumes、および特定の CSI ドラむバヌでのこの操䜜のサポヌトの存圚。

アルファ版の CSI のもう XNUMX ぀の機胜 - 機䌚 ポッド仕様内の CSI ボリュヌムを盎接 (぀たり、PV/PVC を䜿甚せずに) 参照したす。 これ 排他的なリモヌト デヌタ ストレヌゞずしおの CSI の䜿甚に関する制限を削陀したす。、圌らに䞖界ぞの扉を開く ロヌカル䞀時ボリュヌム。 䜿甚する堎合ドキュメントからの䟋) を有効にする必芁がありたす CSIInlineVolume 特城的なゲヌト。

CSI に関連する Kubernetes の「内郚」でも進歩がありたしたが、゚ンド ナヌザヌ (システム管理者) にはあたり芋えたせん... 珟圚、開発者は各ストレヌゞ プラグむンの 8 ぀のバヌゞョンをサポヌトする必芁がありたす。叀い方法」、KXNUMXs コヌドベヌス内 (ツリヌ内)、および XNUMX 番目 - 新しい CSI の䞀郚ずしお (詳现に぀いおは、たずえば、 ここで)。 これにより、圓然の䞍郜合が生じたすが、CSI 自䜓が安定するに぀れお察凊する必芁がありたす。 内郚 (ツリヌ内) プラグむンの API を単玔に非掚奚にするこずはできたせん。 関連する Kubernetes ポリシヌ.

これらすべおが、アルファ版が到達したずいう事実に぀ながりたした。 移行プロセス 内郚プラグむンコヌド、CSI プラグむンのツリヌ内ずしお実装されたす。これにより、開発者の心配はプラグむンの 1.15 ぀のバヌゞョンをサポヌトするこずで軜枛され、叀い API ずの互換性は維持され、通垞のシナリオでは叀い API であるず宣蚀できたす。 Kubernetes の次のリリヌス (8) たでに、すべおのクラりド プロバむダヌ プラグむンが移行され、実装はベヌタ ステヌタスを取埗し、KXNUMXs むンストヌルでデフォルトでアクティブ化されるこずが予想されたす。 詳现に぀いおは、を参照しおください。 デザむン提案。 この移行により、次のような結果も埗られたした。 倱敗 特定のクラりドプロバむダヌ (AWS、Azure、GCE、Cinder) によっお定矩されたボリュヌム制限から。

さらに、CSI によるブロック デバむスのサポヌト (CSIBlockVolume) 転送された ベヌタ版ぞ。

ノヌド/Kubelet

アルファ版が発衚されたした 新しい゚ンドポむント Kubelet で、のために蚭蚈されおいたす 䞻芁なリ゜ヌスのメトリクスを返す。 䞀般的に蚀えば、以前 Kubelet が cAdvisor からコンテナの䜿甚状況に関する統蚈を受け取っおいた堎合、珟圚ではこのデヌタは CRI (Container Runtime Interface) を介しおコンテナ ランタむム環境から取埗されたすが、叀いバヌゞョンの Docker ず連携するための互換性も維持されたす。 以前は、Kubelet で収集された統蚈は REST API 経由で送信されおいたしたが、珟圚ぱンドポむントが次の堎所にありたす。 /metrics/resource/v1alpha1。 開発者の長期戊略 から成る Kubelet によっお提䟛されるメトリクスのセットを最小限に抑えるこずです。 ちなみに、これらの指暙自䜓は 今圌らは電話をかけたす 「コアメトリクス」ではなく「リ゜ヌスメトリクス」であり、「CPUやメモリなどの第䞀玚のリ゜ヌス」ずしお説明されたす。

非垞に興味深いニュアンス: Prometheus 圢匏を䜿甚するさたざたなケヌスず比范しお、gRPC ゚ンドポむントのパフォヌマンス䞊の明らかな利点にもかかわらず (以䞋のいずれかのベンチマヌクの結果を参照しおください)、コミュニティにおけるこの監芖システムの明確なリヌダヌシップにより、著者らは Prometheus のテキスト圢匏を奜みたした。

「gRPC は䞻芁な監芖パむプラむンず互換性がありたせん。 ゚ンドポむントは、メトリクスを Metrics Server に配信する堎合、たたは Metrics Server ず盎接統合するコンポヌネントを監芖する堎合にのみ圹立ちたす。 Metrics Server でキャッシュを䜿甚する堎合の Prometheus テキスト圢匏のパフォヌマンス 十分です コミュニティで Prometheus が広く採甚されおいるため、私たちは gRPC よりも Prometheus を優先したす。 OpenMetrics 圢匏がより安定するず、プロトベヌスの圢匏で gRPC のパフォヌマンスにアプロヌチできるようになりたす。」

Kubernetes 1.14: 䞻なむノベヌションの抂芁
メトリクス甚の新しい Kubelet ゚ンドポむントで gRPC ず Prometheus 圢匏を䜿甚した堎合の比范パフォヌマンス テストの XNUMX ぀。 その他のグラフやその他の詳现に぀いおは、次のサむトを参照しおください。 KEP.

その他の倉曎点は次のずおりです。

  • Kubelet の珟圚 (XNUMX 回) 止めようずしおいる 再起動および削陀操䜜の前に、コンテナヌは䞍明な状態にありたす。
  • 䜿甚しおいる堎合 PodPresets 今床は初期化コンテナに移動したす 远加されたす 通垞のコンテナず同じ情報です。
  • クベレット 䜿い始めた usageNanoCores CRI 統蚈プロバむダヌから、および Windows 䞊のノヌドずコンテナヌから 远加した ネットワヌク統蚈。
  • オペレヌティング システムずアヌキテクチャの情報がラベルに蚘録されるようになりたした kubernetes.io/os О kubernetes.io/arch ノヌド オブゞェクト (ベヌタ版から GA に転送)。
  • ポッド内のコンテナヌに特定のシステム ナヌザヌ グルヌプを指定する機胜 (RunAsGroup、 に登堎 K8s 1.11) 高床 ベヌタ版の前 (デフォルトで有効)。
  • cAdvisor で䜿甚される du ず find、 ず取り換える Go の実装。

CLI

cli-runtime ず kubectl の堎合 远加されたした ずの統合のための -k フラグ カスタマむズする (ちなみに、その開発は珟圚別のリポゞトリで実行されおいたす)、぀たり特別な kustomization ディレクトリから远加の YAML ファむルを凊理したす (䜿甚方法の詳现に぀いおは、「 KEP):

Kubernetes 1.14: 䞻なむノベヌションの抂芁
簡単なファむルの䜿甚䟋 カスタマむズ (kusTOMize のより耇雑なアプリケヌションは、 オヌバヌレむ)

さらに

  • 远加した 新しいチヌム kubectl create cronjob、その名前自䜓が物語っおいたす。
  • В kubectl logs 今できる 組み合わせる フラグ -f (--follow ストリヌミング ログの堎合および -l (--selector ラベルク゚リの堎合)。
  • キュヌブクル 教えた ワむルドカヌドで遞択したファむルをコピヌしたす。
  • チヌムに kubectl wait 远加した フラグ --all 指定したリ゜ヌス タむプの名前空間内のすべおのリ゜ヌスを遞択したす。

他人

次の機胜は安定版 (GA) ステヌタスを取埗しおいたす。

Kubernetes 1.14 で導入されたその他の倉曎:

  • デフォルトの RBAC ポリシヌでは API アクセスが蚱可されなくなりたした discovery О access-review 認蚌のないナヌザヌ (未認蚌).
  • 公匏 CoreDNS サポヌト によっお提䟛された Linux のみ。そのため、kubeadm を䜿甚しおクラスタヌ内にデプロむ (CoreDNS) する堎合、ノヌドは Linux 䞊でのみ実行する必芁がありたす (この制限のために nodeSelector が䜿甚されたす)。
  • デフォルトの CoreDNS 構成は次のずおりです 䜿甚する フォワヌドプラグむン プロキシの代わりに。 たた、CoreDNSでは 远加した readinessProbe。適切な (サヌビスの準備ができおいない) ポッドでのロヌド バランシングを防ぎたす。
  • kubeadm では、フェヌズに぀いお init たたは upload-certs, 可胜になった 新しいコントロヌルプレヌンを kubeadm-certs シヌクレットに接続するために必芁な蚌明曞をロヌドしたす (フラグを䜿甚したす) --experimental-upload-certs).
  • Windows むンストヌル甚のアルファ版が登堎したした サポヌト gMSA (グルヌプ管理サヌビス アカりント) - コンテナヌでも䜿甚できる 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

私たちのブログもお読みください:

出所 habr.com

コメントを远加したす