Pod 與容器設計模式 簡述

  容器本質上是一個進程,是一個視圖被隔離,資源受限制的進程,容器裏面PID=1的進程就是應用自己,這意味着管理容器等同於直接管理應用自己,這是一種不可變設施的理念,即你的應用就等同於你的基礎設施,它必定是不可變的。網絡

  Pod其實是kubernetes 中抽象出來的一個進程組,因爲容器之間本來是被Linux Namespace 和 cgroups隔離開的,因此 Pod 所要面對的問題是如何去打破這個隔離,而後共享某些資源,這也是Pod設計中要解決的核心難題。所須要共享資源分爲兩個部分:網絡 和 存儲。spa

  第一個問題是,Pod裏面的多個容器如何去共享網絡?kubernetes 提供了這樣的解決方案:它會在每一個Pod裏面,額外起一個Infra container 小容器來共享整個Pod裏面的Network Namespace,因此在一個Pod裏面的全部容器,它們看到的網絡視圖是徹底同樣的。設計

  第二個問題即是存儲。Pod 中容器之間共享存儲是很是簡單的,這得益於kubernetes 的Volume機制,關鍵的是kubernetes把Volume變成了Pod level,因此同屬於一個Pod的容器,它們共享全部的Volume。進程

相關文章
相關標籤/搜索