(接上篇)
部署 docker
本书环境使用的操作系统都是CentOS7+,所以部署docker的步骤也是针对CentOS7+操作环境。
1) 安装需要的依赖包,命令如下:
# yum install yum-utils device-Mapper-persistent-data lvm2
2) 增加安装docker所需的repository,命令如下:
# yum-config-manager --add-repo \
download.docker.com/linux/cento…
3) 安装制定版本的docker,命令如下:
# yum update && yum install containerd.io-1.2.10 docker-ce-19.03.4 docker-ce-cli-19.03.4,命令如下:
4) 安装制定版本的docker,命令如下:
# yum update && yum install containerd.io-1.2.10 docker-ce-19.03.4 docker-ce-cli-19.03.4
5) 设置docker的配置文件。
创建配置文件目录:#mkdir /etc/docker
设置docker配置文件:# cat > /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
]
}
EOF
6) 启动docker,命令如下:
# mkdir -p /etc/systemd/system/docker.service.d
systemctl daemon-reload
systemctl restart docker
至此,docker容器运行时就安装成功了。接下来,分析docker配置相关的注意事项。
7) docker配置。
docker的相关配置在/etc/docker/daemon.json文件中进行设置,在daemon.json文件可以设置私有仓库、DNS解析服务器、docker运行时使用的路径、镜像加速地址、日志输出、Cgroup Driver、docker主机的标签等。本节重点介绍Cgroup Driver的设置。
在Linux操作系统发行版本中使用 systemd 作为其初始化系统,初始化进程生成并使用一个 root 控制组件 (cgroup),并将其当作 cgroup 管理器。systemd 与 cgroup 集成紧密,为每个进程分配 cgroup。docker容器运行时默认的cgroup 管理器是cgroupfs,也就是 Kubelet 使用 cgroupfs来管理cgroup。这样就造成在同一台主机上同时使用 systemd和cgroupfs两种cgroup 管理器来对cgroup 进行管理。
cgroup用来约束分配给进程的资源。单个 cgroup 管理器能够简化分配资源的视图,并且默认情况下在管理可用资源和使用中的资源时使用一致的视图。当有两个cgroup管理器时,最终产生两种视图。我们已经看到某些案例中的节点配置让使Kubelet 和 docker 使用 cgroupfs管理器,而节点上运行的其余进程则使用 systemd,这类节点在资源压力下会变得不稳定。
更改设置,令容器运行时和 Kubelet 使用 systemd 作为 cgroup 驱动,以便系统更稳定。 请注意在/etc/docker/daemon.json文件中设置 native.cgroupdriver=systemd 选项。具体如下:
# vi /etc/docker/daemon.json
{
...
"exec-opts": ["native.cgroupdriver=systemd"],
...
}
Kubernetes 的学习环境部署
本节对部署Kubernetes学习环境的相关工具进行梳理,并对不同工具从安装方法、使用方法、相应原理的维度进行横向和纵向对比,如表2-2所示。
表2-2 搭建Kubernetes学习环境的工具
| 部署工具 | 依赖 | 原理 | 备注 |
|---|---|---|---|
| Minikube | 操作系统对虚拟化的支持、一款Hypervisor KVM/VirtualBox、安装并配置了kubectl | 创建一台虚拟机,在虚拟机里运行Kubernetes集群 | 只适用于学习和测试Kubernete的场景 |
| Kind(Kubernetes in docker) | docker容器运行时、在容器里运行Kubernetes集群的基础镜像node image | 创建一个docker容器,并在该容器里运行一个Kubernetes集群 | 只适用于学习和测试Kubernete的场景 |
从搭建Kubernetes学习环境的工具列表可知,Minikube、Kind(Kubernetes in docker)都可以搭建Kubernetes的学习环境,但两者所需要的依赖和原理各不相同。由于Minikube和Kind(Kubernetes in docker)都是用于搭建Kubernetes学习环境的工具,所以两者的安装步骤和使用方法相对比较简单。接下来,笔者对两者的安装步骤和使用方法进行详细说明。 「未完待续……」 点击下方标题可阅读技术文章