Home | 簡體中文 | 繁體中文 | 雜文 | 知乎專欄 | Github | OSChina 博客 | 雲社區 | 雲棲社區 | Facebook | Linkedin | 視頻教程 | 打賞(Donations) | About
知乎專欄多維度架構 微信號 netkiller-ebook | QQ群:128659835 請註明“讀者”

第 12 章 Kubernetes & Docker 實施中你會遇到的問題

目錄

12.1. 鏡像會遇到的問題
12.1.1. 鏡像使用的OS發行版不統一
12.1.2. 安裝位置不統一
12.1.3. Linux 系統也存在BUG
12.2. 容器會遇到的問題
12.2.1. 程序啟動的區別
12.2.2. 存儲面臨的問題
12.2.3. 內部域名DNS
12.2.4. 容器與網絡
12.2.5. 容器的管理
12.2.6. 容器與安全
12.2.6.1. 網絡安全
12.2.6.2. 掛馬風險
12.2.6.3. 隔離安全
12.2.7. 容器與監控
12.2.8. 容器與CI/CD
12.2.9.
12.3. 人員的問題
12.4. 最後總結





在項目中實施容器技術,你可以遇到下列問題。

12.1. 鏡像會遇到的問題

目前docker 鏡像,沒有統一標準,體現在以下幾個方面。

12.1.1. 鏡像使用的OS發行版不統一

在使用過程中會遇到過各種版本的 OS。包括 alpine, debian, ubuntu, centos, oraclelinux, redhat 等等……

經過裁剪的 OS 面目全非,不完整

即使是鏡像採用 CentOS 母版,很多鏡像製作者會給操作系統減肥。經過優化後,已經不是官方版本,在使用過程中你會遇到各種麻煩。例如調試的時候需要 curl,wget,telnet,nslookup 等工具在鏡像中沒有。甚至 ps, top, free, find, netstat, ifconfig 命令都沒有。

很多容器都不帶 iptables 所以,即使帶有iptables 在容器中修改規則也很麻煩。

12.1.2. 安裝位置不統一

傳統OS 以 CentOS為例,有嚴格的安裝規範,例如:

通常安裝位置是

  • /etc/example 配置檔案
  • /bin/sbin 二進制檔案
  • /var/lib/example 數據檔案
  • /var/log/example 日誌檔案
  • /var/run/example PID 檔案
  • /etc/sysconfig/example 啟動參數檔案
  • /etc/system.d/example 啟動腳本

或者被安裝在

  • /usr/local/etc 配置檔案
  • /usr/local/bin 執行檔
  • /usr/local/share 文檔

最後一種是獨立安裝在:

/usr/local/example

容器鏡像那可是五花八門,沒有統一標準,如果不看 Dockerfile 根本不知道作者將檔案安裝到了哪裡。

常常存儲目錄被放置在根目錄。例如 /data

12.1.3. Linux 系統也存在BUG

在我的20年執業生涯中是遇到過 Linux 系統有BUG的,還向 Redhat 提交過 BUG。如果你採用的鏡像有BUG,你想過怎麼去debug 嗎?