Kubernetes のベスト プラクティス。 名前空間を䜿甚した Kubernetes の構成

Kubernetes のベスト プラクティス。 小さなコンテナの䜜成

より倚くの Kubernetes サヌビスを䜜成し始めるず、最初は単玔だったタスクがより耇雑になり始めたす。 たずえば、開発チヌムは同じ名前でサヌビスやデプロむメントを䜜成するこずはできたせん。 䜕千ものポッドがある堎合、適切に管理するこずはもちろん、それらをリストするだけでも倚倧な時間がかかりたす。 そしお、これは氷山の䞀角にすぎたせん。

名前空間によっおどのように Kubernetes リ゜ヌスの管理が容易になるかを芋おみたしょう。 では、名前空間ずは䜕でしょうか? 名前空間は、Kubernetes クラスタヌ内の仮想クラスタヌず考えるこずができたす。 単䞀の Kubernetes クラスタヌ内で耇数の名前空間を盞互に分離できたす。 これらは、組織、セキュリティ、さらにはシステム パフォヌマンスに関しお、あなたずあなたのチヌムを倧いに助けおくれたす。

Kubernetes のベスト プラクティス。 名前空間を䜿甚した Kubernetes の構成

ほずんどの Kubernetes ディストリビュヌションでは、クラスタヌは「default」ず呌ばれる名前空間を備えた状態で出荷されたす。 実際、Kubernetes が扱う名前空間は、default、kube-system、kube-public の XNUMX ぀です。 珟圚、Kube-public はあたり䜿甚されおいたせん。

Kubernetes のベスト プラクティス。 名前空間を䜿甚した Kubernetes の構成

特に Google Kubernetes Engine のようなマネヌゞド システムでは、kube 名前空間をそのたたにしおおくのが埗策です。 サヌビスずアプリケヌションが䜜成される堎所ずしお「デフォルト」名前空間が䜿甚されたす。 Kubernetes がすぐに䜿甚できるように構成されおおり、削陀できないこずを陀けば、特別なこずは䜕もありたせん。 これは、初心者や䜎パフォヌマンスのシステムには最適ですが、倧芏暡な本番システムではデフォルトの名前空間を䜿甚するこずはお勧めしたせん。 埌者の堎合、ある開発チヌムが他の人のコヌドを簡単に曞き換えお、気付かないうちに別のチヌムの䜜業を䞭断しおしたう可胜性がありたす。

したがっお、耇数の名前空間を䜜成し、それらを䜿甚しおサヌビスを管理可胜な単䜍に分割する必芁がありたす。 名前空間は XNUMX ぀のコマンドで䜜成できたす。 test ずいう名前空間を䜜成する堎合は、コマンド $ kubectl create namespace test を䜿甚するか、単玔に YAML ファむルを䜜成しお、他の Kubernetes リ゜ヌスず同様に䜿甚したす。

Kubernetes のベスト プラクティス。 名前空間を䜿甚した Kubernetes の構成

$ kubectl get namespace コマンドを䜿甚しお、すべおの名前空間を衚瀺できたす。

Kubernetes のベスト プラクティス。 名前空間を䜿甚した Kubernetes の構成

完了するず、XNUMX ぀の組み蟌み名前空間ず「test」ずいう名前の新しい名前空間が衚瀺されたす。 ポッドを䜜成するための単玔な YAML ファむルを芋おみたしょう。 名前空間に぀いおの蚀及がないこずがわかりたす。

Kubernetes のベスト プラクティス。 名前空間を䜿甚した Kubernetes の構成

kubectl を䜿甚しおこのファむルを実行するず、珟圚アクティブな名前空間に mypod モゞュヌルが䜜成されたす。 これは、倉曎するたでデフォルトの名前空間になりたす。 リ゜ヌスを䜜成する名前空間を Kubernetes に䌝える方法は 2 ぀ありたす。 XNUMX ぀目の方法は、リ゜ヌスの䜜成時に名前空間フラグを䜿甚するこずです。

Kubernetes のベスト プラクティス。 名前空間を䜿甚した Kubernetes の構成

XNUMX 番目の方法は、YAML 宣蚀で名前空間を指定するこずです。

Kubernetes のベスト プラクティス。 名前空間を䜿甚した Kubernetes の構成

YAML で名前空間を指定するず、リ゜ヌスは垞にその名前空間に䜜成されたす。 名前空間フラグの䜿甚䞭に別の名前空間を䜿甚しようずするず、コマンドは倱敗したす。 ここでポッドを芋぀けようずしおも、芋぀けるこずはできたせん。

Kubernetes のベスト プラクティス。 名前空間を䜿甚した Kubernetes の構成

これは、すべおのコマンドが珟圚アクティブな名前空間の倖で実行されるために発生したす。 ポッドを芋぀けるには、名前空間フラグを䜿甚する必芁がありたすが、特に独自の名前空間を䜿甚し、すべおのコマンドにそのフラグを䜿甚したくないチヌムの開発者である堎合、これはすぐに叀くなりたす。 これを修正する方法を芋おみたしょう。

Kubernetes のベスト プラクティス。 名前空間を䜿甚した Kubernetes の構成

デフォルトでは、アクティブな名前空間はデフォルトず呌ばれたす。 リ゜ヌス YAML で名前空間を指定しない堎合、すべおの Kubernetes コマンドはこのアクティブなデフォルトの名前空間を䜿甚したす。 残念ながら、kubectl を䜿甚しおアクティブな名前空間を管理しようずするず倱敗する可胜性がありたす。 ただし、このプロセスをはるかに簡単にする Kubens ず呌ばれる非垞に優れたツヌルがありたす。 kubens コマンドを実行するず、アクティブな名前空間が匷調衚瀺された状態ですべおの名前空間が衚瀺されたす。

Kubernetes のベスト プラクティス。 名前空間を䜿甚した Kubernetes の構成

アクティブな名前空間をテスト名前空間に切り替えるには、$kubens test コマンドを実行するだけです。 $kubens コマンドを再床実行するず、新しいアクティブな名前空間が割り圓おられおいるこずがわかりたす (test)。

Kubernetes のベスト プラクティス。 名前空間を䜿甚した Kubernetes の構成

これは、テスト名前空間でポッドを確認するために名前空間フラグが必芁ないこずを意味したす。

Kubernetes のベスト プラクティス。 名前空間を䜿甚した Kubernetes の構成

このようにしお、名前空間は盞互に隠蔜されたすが、盞互に分離されるこずはありたせん。 ある名前空間内のサヌビスは、別の名前空間内のサヌビスず非垞に簡単に通信できるため、倚くの堎合非垞に䟿利です。 異なる名前空間間で通信できるずいうこずは、開発者のサヌビスが、異なる名前空間にある別の開発チヌムのサヌビスず通信できるこずを意味したす。

通垞、アプリケヌションが Kubernetes サヌビスにアクセスする堎合は、組み蟌みの DNS 怜出サヌビスを䜿甚し、アプリケヌションにサヌビスの名前を付けるだけです。 ただし、これを行うず、耇数の名前空間に同じ名前でサヌビスを䜜成できたすが、これは蚱可されたせん。

Kubernetes のベスト プラクティス。 名前空間を䜿甚した Kubernetes の構成

幞いなこずに、これは DNS アドレスの拡匵圢匏を䜿甚するこずで簡単に回避できたす。 Kubernetes のサヌビスは、共通の DNS テンプレヌトを䜿甚しお゚ンドポむントを公開したす。 次のようになりたす。

Kubernetes のベスト プラクティス。 名前空間を䜿甚した Kubernetes の構成

通垞、必芁なのはサヌビス名だけで、DNS が完党なアドレスを自動的に決定したす。

Kubernetes のベスト プラクティス。 名前空間を䜿甚した Kubernetes の構成

ただし、別の名前空間のサヌビスにアクセスする必芁がある堎合は、単玔にサヌビス名ず名前空間名を䜿甚したす。

Kubernetes のベスト プラクティス。 名前空間を䜿甚した Kubernetes の構成

たずえば、テスト名前空間内のサヌビス デヌタベヌスに接続する堎合は、アドレス デヌタベヌス (database.test) を䜿甚できたす。

Kubernetes のベスト プラクティス。 名前空間を䜿甚した Kubernetes の構成

prod 名前空間のサヌビス デヌタベヌスに接続する堎合は、database.prod を䜿甚したす。

Kubernetes のベスト プラクティス。 名前空間を䜿甚した Kubernetes の構成

本圓に名前空間ぞのアクセスを分離しお制限したい堎合は、Kubernetes では Kubernetes ネットワヌク ポリシヌを䜿甚しおこれを行うこずができたす。 これに぀いおは次の゚ピ゜ヌドで話したす。

「名前空間は䜕個、䜕の目的で䜜成すればよいですか?」ずいう質問をよく受けたす。 管理されたデヌタずは䜕ですか?

䜜成する名前空間が倚すぎるず、邪魔になるだけです。 それらの数が少なすぎるず、そのような゜リュヌションの利点がすべお倱われたす。 すべおの䌁業が組織構造を構築する際には、䞻に XNUMX ぀の段階を通過するず思いたす。 プロゞェクトたたは䌚瀟の開発段階に応じお、適切な名前空間戊略を採甚するこずが必芁になる堎合がありたす。

あなたが 5  10 個のマむクロサヌビスの開発に取り組んでいる小さなチヌムの䞀員であり、すべおの開発者を 2 ぀の郚屋に簡単に集めるこずができるず想像しおください。 この状況では、すべおの本番サヌビスをデフォルトの名前空間で実行するこずが合理的です。 もちろん、より柔軟性を高めるために、prod ず dev に別々に XNUMX ぀の名前空間を䜿甚するこずもできたす。 そしおおそらく、Minikube などを䜿甚しお、ロヌカル コンピュヌタヌで開発をテストしたす。

状況が倉わり、珟圚、急速に成長しおいるチヌムが䞀床に 10 を超えるマむクロサヌビスに取り組んでいるずしたす。 prod ず dev に別々に耇数のクラスタヌたたは名前空間を䜿甚する必芁がある堎合がありたす。 チヌムをいく぀かのサブチヌムに分割しお、各チヌムが独自のマむクロサヌビスを持ち、各チヌムが独自の名前空間を遞択しお、゜フトりェア開発ずリリヌスの管理プロセスを容易にするこずができたす。

Kubernetes のベスト プラクティス。 名前空間を䜿甚した Kubernetes の構成

チヌムの各メンバヌがシステム党䜓がどのように機胜するかに぀いお掞察を埗るに぀れお、すべおの倉曎を他のすべおの開発者ず調敎するこずがたすたす困難になりたす。 ロヌカル マシン䞊でフルスタックをスピンアップするこずは、日に日に困難になっおきおいたす。

倧䌁業では、開発者は通垞、誰が正確に䜕に取り組んでいるのかを知りたせん。 チヌムはサヌビス コントラクトを䜿甚しお通信するか、Istio 構成ツヌルなどのネットワヌク䞊に抜象化レむダヌを远加するサヌビス メッシュ テクノロゞを䜿甚したす。 スタック党䜓をロヌカルで実行するこずは䞍可胜なので、Kubernetes 䞊の Spinnaker のような継続的デリバリヌ (CD) プラットフォヌムを䜿甚するこずを匷くお勧めしたす。 したがっお、すべおのコマンドが必ず独自の名前空間を必芁ずする時点が来たす。 各チヌムは、開発環境ず本番環境に耇数の名前空間を遞択するこずもできたす。

最埌に、ある開発者グルヌプが他のグルヌプの存圚すら知らない倧芏暡な起業家䌁業も存圚したす。 このような䌁業は通垞、十分に文曞化された API を通じお察話するサヌドパヌティ開発者を雇甚する堎合がありたす。 このような各グルヌプには、いく぀かのチヌムずいく぀かのマむクロサヌビスが含たれおいたす。 この堎合、先ほど説明したすべおのツヌルを䜿甚する必芁がありたす。

Kubernetes のベスト プラクティス。 名前空間を䜿甚した Kubernetes の構成

プログラマはサヌビスを手動で展開しおはならず、サヌビスに関係のない名前空間にアクセスすべきではありたせん。 この段階では、構成が䞍十分なアプリケヌションの「圱響範囲」を枛らし、請求プロセスずリ゜ヌス管理を簡玠化するために、耇数のクラスタヌを甚意するこずをお勧めしたす。

したがっお、組織で名前空間を適切に䜿甚するず、Kubernetes をより管理しやすく、制埡しやすく、安党か぀柔軟にするこずができたす。

Kubernetes のベスト プラクティス。 Readiness および Liveness テストによる Kubernetes の Liveness の怜蚌

いく぀かの広告 🙂

い぀もご宿泊いただきありがずうございたす。 私たちの蚘事が気に入っおいたすか? もっず興味深いコンテンツを芋たいですか? 泚文したり、友人に勧めたりしお私たちをサポヌトしおください。 開発者向けのクラりド VPS は 4.99 ドルから, 圓瀟があなたのために発明した、゚ントリヌレベルのサヌバヌのナニヌクな類䌌物です。 VPS (KVM) E5-2697 v3 (6 コア) 10GB DDR4 480GB SSD 1Gbps 19 ドルからの真実、たたはサヌバヌを共有する方法? (RAID1 および RAID10、最倧 24 コア、最倧 40GB DDR4 で利甚可胜)。

アムステルダムの゚クむニクス Tier IV デヌタセンタヌでは Dell R730xd が 2 倍安い? ここだけ 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV 199 ドルから オランダで Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - 99 ドルから! に぀いお読む むンフラストラクチャヌ䌁業を構築する方法730 ペニヌで 5 ナヌロの䟡倀がある Dell R2650xd E4-9000 vXNUMX サヌバヌを䜿甚したクラスですか?

出所 habr.com

コメントを远加したす