前言
Kubernetes (音 kubə'netis) 这个名字来自希腊语,意思是「舵手」或「领航员」,它是一个起源于 Google 的开源项目,允许自动化部署、管理和扩容容器化应用,它现在已成为容器编排的事实标准。
其实 Kubernetes 的简称 k8s 存在感更强,这个简称缘由是单词中间刚好是 8 个字母,这是一种数字缩写 (Numeronym) 方式。类似的如 internationalization
(国际化) 叫做 i18n
、 accessibility
叫做 a11y
等。以下如无特别原因均使用它的简称 k8s。
接下来几篇文章将分享我学习和使用它的一些经验,今天是第一篇,先了解 k8s 的架构、核心概念和基本用法。
在 macOS 上安装 Kubernetes
首先需要安装 Kubernetes。有 3 个方法:
Docker Desktop for Mac
在 macOS 上最简单的方法就是安装「Docker Desktop for Mac」,并开启 Kubernetes 支持,可以通过延伸阅读链接 1 的地址下载它,开启 Kubernetes 支持的方法非常简单,需要 2 步:
- 使用代理。众所周知,安装过程会请求一些会超时的网站页面,需要设置代理。右键点 Docker 图标选: Preferences -> Proxies,选择手动指定,输入你的代理地址,然后点
Apply && Restart
重启 Docker - 开启 Kubernetes 支持。重启后,右键点 Docker 图标选: Preferences -> Kubernetes Tab,给
Enable Kubernetes
等项打勾再点Apply
,再点弹出窗口的「Install」项等待完成完成即可
P.S 安装过程中如果有任何问题可以使用延伸阅读链接 2 的检查日志方法去做故障排错,根据日志输出再搜索解决方案。
通过 k8s-docker-desktop-for-mac
可以用我厂平台同学搞的 k8s-docker-desktop-for-mac 项目完成安装~
命令行安装
如果你没有好用的代理,也不想尝试:point_up_2:这个项目,兜底方案是手动安装。第一步先安装 Kubernetes 的命令行客户端 kubectl,再安装一个可以在本地跑起来的 Kubernetes 环境 Minikube、以及给 Minikube 使用的虚拟化引擎 HyperKit:
❯ brew cask install minikube ❯ brew install docker-machine-driver-hyperkit ❯ sudo chown root:wheel /usr/local/bin/docker-machine-driver-hyperkit # 文件路径可以不同,注意终端输出 ❯ sudo chmod u+s /usr/local/bin/docker-machine-driver-hyperkit ❯ minikube start --vm-driver hyperkit --image-mirror-country cn # 使用国内镜像
Minikube 默认的虚拟化引擎是 VirtualBox,Hyperkit 是一个更快更轻量的替代。Minikube 自带了 Docker 引擎,所以我们需要重新配置客户端,让 docker 命令行与 Minikube 中的 Docker 进程通讯:
❯ eval $(minikube docker-env)
现在 k8s 就安装完成啦。我们进入正题~
Kubernetes 架构
典型 Kubernetes 集群包含一个 Master 和多个 Node,简单架构如下图所示 (未来 3 张图来源于延伸阅读链接 3):
Master 节点
Master 是集群的控制节点,它负责整个集群的管理和控制 (调度)。这个节点上运行着多个组件,核心的如下:
- API 服务器 (kube-apiserver)。API Server 对外暴露了 k8s API,提供 HTTP REST 服务。提供了认证、授权、访问控制、API 注册和发现等机制
- etcd。是一个高可用的键值对存储系统,被用作 k8s 的后端存储,所有集群配置数据都存储在里面,用于服务发现和集群管理,可以说是存了整个集群的状态
- 控制管理器 (kube-controller-manager)。Controller 负责维护集群的状态,比如故障检测、自动扩展、滚动更新等
- 调度器 (kube-scheduler)。Scheduler 负责资源的调度,按照预定的调度策略将 Pod 调度到相应的机器上
看一下 Mater 节点的组件架构效果图: