By 胡涛 (@daniel-hutao) | 18.04.2022
从零开始?从零开始!
var 零=99 // 别紧张,Just a jok。
Let’s Get Started!
概述
“Kubernetes 集群部署”严格来说是一个复杂的技术活,有很多的可选方案。要交付一套靠拢“最佳实践”的高可用集群有很多需要考虑的技术细节。关于如何部署“真正高可用的 Kubernetes 集群”不在本文的讨论范围,所以今天我们的目标是使用一种简单的方式快速部署一个可用的 Kubernetes 环境。这套环境主要用于满足 DevStream 的开发测试需求。
快速部署 Kubernetes 有好几种可选方案,比如 Minikube 和 Kind。 Minikube最先基于虚拟化实现(新版本也支持容器化实现了),也就是通过 virtualbox 或者 kvm 等工具在本地创建若干虚拟机,然后在虚拟机中运行 Kubernetes 集群,一个节点也就对应一台虚拟机。Kind 通过容器化实现,也就是通过 Docker 在本地启动若干容器,每个容器充当 Kubernetes 的一个节点,在容器内再运行容器化应用。本文我们选择用 Kind 这种“容器中跑容器”的方式来搭建 Kubernetes 环境。当然如果大家有其他擅长的工具,也完全可以用,我们的目的仅仅是快速部署一套可用的 Kubernetes 集群环境。
本文以 macOS 作为开发环境,使用 Linux 或者 Windows 系统作为开发环境的同学可以参考本文的方法,相应地做一些灵活调整。
Docker 的安装
在 Linux 下安装 Docker 是一件非常简单的事情,Docker 的核心原理就是基于 Linux 的 Namespace 和 Cgroup 等机制。不过在 macOS 和 Windows 下就需要通过虚拟化技术间接使用 Docker 了。当然我们现在已经不需要先安装虚拟化软件然后自己安装 Linux 虚拟机,再使用 Docker 了。我们可以直接在 docker.com 下载 Docker Desktop 来跑 Docker 程序。
我们在 https://www.docker.com/products/docker-desktop 寻找合适的 Docker Desktop 版本,主要是看清楚 cpu 架构是 Intel Chip 还是 Apple Chip,前者对应 amd64 架构版本 Mac,后者是 arm 架构的 M1 芯片版本 Mac。 下载页面大致如下:
下载完成后双击 Docker.dmg 文件,可以看到安装页面:
我们把 Docker 图标拖到 Applications 里,稍等不到半分钟,就可以在“启动台”里看到 Docker 图标了,然后点击“启动台”里的 Docker 打开 Docker Desktop:
稍等几秒钟,就可以看到启动页面了:
我们可以点击右上角的“齿轮⚙️”按钮来修改 Docker Desktop 的一些配置,比如调整 Docker 可以使用的资源等。如果后面我们需要启动的容器稍多一些,内存不够用了,可以回到这里来调整,比如我这里把 Memory 调大到 4.00 GB:
修改后记得点击右下角的“Apply & Restart”才会生效。
Kind 介绍
Kind(Kubernetes-in-docker) 是一个使用 Docker 容器作为“节点”实现部署 Kubernetes 集群环境的工具。Kind 工具主要用于 Kubernetes 本身的测试,目前在很多需要部署到 Kubernetes 环境测试的项目在 ci 流程中都会选择用 Kind 来快速拉起一个 Kubernetes 环境,然后运行相关测试用例。
Kind 本身很简单,只包含一个简单的命令行工具“kind”和一个用来启动 Kubernetes 和 systemd等的 Docker 镜像。我们可以这样理解 Kind 的原理:它通过 Host 主机上的 Docker 使用封装了 Kubernetes 等工具的容器镜像拉起一个容器,这个容器里运行了 systemd,容器中的 systemd 进一步可以运行 Docker 和 Kubelet 等 Kubernetes 节点所需基础进程,然后这些进程就可以进一步运行 kube-apiserver、kube-controller-manager、kube-sche