kubeadm 部署 Kubernetes 原理
本文是在尝试搭建 Kubernetes 学习环境过程中的对一些部署原理的整理
Kubernetes 的部署:
Kubernetes有很多组件,每个组件都是一个需要被执行的、单独的二进制文件。
- 一种部署方式:将这些二进制文件传输到指定的机器当中,然后编写控制脚本来启停这些组件。
- 另一种方式:将每个组件做一个容器镜像,然后在每台宿主机用docker run指令启动这些组件容器。
kubeadm 部署方式:
由于 kubelet 不仅要和容器运行时打交道,还需要直接操作宿主机,比如配置容器网络、管理容器数据卷等,所以容器里运行 kubelet 会很麻烦。
所以,kubeadm 把 kubelet 直接运行在宿主机上,然后使用容器部署其他的 Kubernetes 组件。
kubeadm 部署流程:
-
首先在机器上手动安装 docker、kubeadm、kubelet、kubectl 几个二进制文件;然后才能再容器化部署其他 Kubernetes 组件。
-
kubeadm init
(1)检查工作(Preflight Checks):检查内核版本、Cgroups模块可用性、组件版本、工作端口占用情况、Docker等依赖软件安装情况……
(2)生成对外提供服务的证书及对应的目录
(3)生成其他组件访问 kube-apiserver 所需的配置文件
(4)为 Master 组件生成 Pod 配置文件:利用这些配置文件,通过 Kubernetes 中特殊的容器启动方法“Static Pod”(kubelet 启动时自动加载固定目录的 Pod YAML 文件并启动)便可以 Pod 方式部署起 kube-apiserver、kube-controller-manager、kube-scheduler 三个 Master 组件了。后面还会生成 Etcd 的 Pod YAML 文件。
(5)为集群生成一个 bootstrap token :后面想要加入集群的机器想和 apiserver 打交道,需要获取相应的证书文件,所以 bootstrap token 到时候就扮演这样一个安全验证的角色。
(6)安装默认插件,如 kube-proxy 和 DNS,分别提供集群的服务发现和 DNS 功能。 -
kubeadm join
kubeadm init 生成 bootstrap token 之后,可以在任意一台安装了 kubelet 和 kubeadm 的机器上执行 kubeadm join 加入集群的了。
minikube :
用来快捷地在本地搭建一套单节点的 Kubernetes 集群,适合入门测试开发使用。
具体可以运行 minikube start 看看主要做了那些事:
- 创建虚拟机 VM (由于我这里是已经在 VM 中运行的 minikube,所以采用 --vm-driver=none 方式,便不需要格外的创建虚拟机了)
- 在虚拟机配置环境
- 下载 kubeadm 和 kubelet 工具
- 拉取镜像并启动 Kubernetes (这里是通过 kubeadm 部署实现)
- 配置主机环境,主要包括各组件访问授权、健康检查等工作
- 在用户操作系统配置 kubectl
如图:
具体关于 minikube 的搭建步骤可以查看:《VM中利用minikube搭建单节点Kubernetes集群(国内环境流畅)》
笔记《深入剖析Kubernetes - 张磊 | 极客时间》
参考:10 | Kubernetes一键部署利器:kubeadm