Home | 简体中文 | 繁体中文 | 杂文 | 知乎专栏 | 视频教程 | bilibili | Github | OSChina 博客 | 云社区 | 云栖社区 | Facebook | Linkedin | 打赏(Donations) | About
知乎专栏多维度架构 | 微信号 netkiller-ebook | 51CTO:视频教程

第 13 章 Kubernetes & Docker 实施中你会遇到的问题

目录

13.1. 镜像会遇到的问题
13.1.1. 镜像使用的OS发行版不统一
13.1.2. 安装位置不统一
13.1.3. Linux 系统也存在BUG
13.2. 容器会遇到的问题
13.2.1. 程序启动的区别
13.2.2. 存储面临的问题
13.2.3. 内部域名DNS
13.2.4. 容器与网络
13.2.5. 容器的管理
13.2.6. 容器与安全
13.2.6.1. 网络安全
13.2.6.2. 挂马风险
13.2.6.3. 隔离安全
13.2.7. 容器与监控
13.2.8. 容器与CI/CD
13.2.9.
13.3. 人员的问题
13.4. 最后总结





在项目中实施容器技术,你可以遇到下列问题。

13.1. 镜像会遇到的问题

目前docker 镜像,没有统一标准,体现在以下几个方面。

13.1.1. 镜像使用的OS发行版不统一

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

经过裁剪的 OS 面目全非,不完整

即使是镜像采用 CentOS 母版,很多镜像制作者会给操作系统减肥。经过优化后,已经不是官方版本,在使用过程中你会遇到各种麻烦。例如调试的时候需要 curl,wget,telnet,nslookup 等工具在镜像中没有。甚至 ps, top, free, find, netstat, ifconfig 命令都没有。

很多容器都不带 iptables 所以,即使带有iptables 在容器中修改规则也很麻烦。

13.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

13.1.3. Linux 系统也存在BUG

在我的20年执业生涯中是遇到过 Linux 系统有BUG的,还向 Redhat 提交过 BUG。如果你采用的镜像有BUG,你想过怎么去debug 吗?

网站:http://www.netkiller.cn/ | 知乎:netkiller | 51CTO:视频教程 | Bilibili:netkiller | Github:netkiller