使用 kubeadm 创建一个单主集群
因为您可以在不同类型的机器(比如笔记本、服务器和树莓派等)上安装 kubeadm,因此它非常适合与 Terraform 或 Ansible 这类自动化管理系统集成。
kubeadm 的简单便捷为大家带来了广泛的用户案例:
- 新用户可以从 kubeadm 开始来试用 Kubernetes。
- 熟悉 Kubernetes 的用户可以使用 kubeadm 快速搭建集群并测试他们的应用。
- 大型的项目可以将 kubeadm 和其他的安装工具一起形成一个比较复杂的系统。
kubeadm 的设计初衷是为新用户提供一种便捷的方式来首次试用 Kubernetes, 同时也方便老用户搭建集群测试他们的应用。 此外 kubeadm 也可以跟其它生态系统与/或安装工具集成到一起,提供更强大的功能。
您可以很方便地在支持 rpm 或 deb 软件包的操作系统上安装 _kubeadm_。对应 kubeadm 的 SIG, , 提供了预编译的这类安装包,当然您也可以自己基于源码为其它操作系统来构造安装包。
kubeadm 的整体功能目前还是 Beta 状态,然而很快在 2018 年就会转换成正式发布 (GA) 状态。 一些子功能,比如自托管或者配置文件 API 还在开发过程当中。 随着工具的发展,创建集群的方法可能会有所变化,但是整体部署方案还是比较稳定的。 在 下面的任何命令都只是 alpha 状态,目前只提供初期阶段的服务。
维护周期
Kubernetes 发布的版本通常只维护支持九个月,在维护周期内,如果发现有比较重大的 bug 或者安全问题的话, 可能会发布一个补丁版本。下面是 Kubernetes 的发布和维护周期,同时也适用于 kubeadm
。
Kubernetes 版本 | 发行月份 | 终止维护月份 |
---|---|---|
v1.6.x | 2017 年 3 月 | 2017 年 12 月 |
v1.7.x | 2017 年 6 月 | 2018 年 3 月 |
v1.8.x | 2017 年 9 月 | 2018 年 6 月 |
v1.9.x | 2017 年 12 月 | 2018 年 9 月 |
v1.10.x | 2018 年 3 月 | 2018 年 12 月 |
v1.11.x | 2018 年 6 月 | 2019 年 3 月 |
v1.12.x | 2018 年 9 月 | 2019 年 6 月 |
- 一个或者多个兼容 deb 或者 rpm 软件包的操作系统,比如 Ubuntu 或者 CentOS
- 主节点上 2 CPU 以上
- 集群里所有的机器有完全的网络连接,公有网络或者私有网络都可以
- 搭建一个单主 Kubernetes 集群或者高可用集群
- 在集群上安装 Pod 网络组件以便 Pod 之间可以互相通信
请查阅。
初始化您的主节点
主节点是集群里运行控制面的机器,包括 etcd (集群的数据库)和 API 服务(kubectl CLI 与之交互)。
- 选择一个 Pod 网络插件,并检查是否在 kubeadm 初始化过程中需要传入什么参数。这个取决于 您选择的网络插件,您可能需要设置
--Pod-network-cidr
来指定网络驱动的 CIDR。请参阅安装网络插件。 - (可选) 除非特别指定,kubeadm 会使用默认网关所在的网络接口广播其主节点的 IP 地址。若需使用其他网络接口,请 给
kubeadm init
设置--apiserver-advertise-address=<ip-address>
参数。如果需要部署 IPv6 的集群,则需要指定一个 IPv6 地址,比如 。
现在运行:
想了解更多关于 kubeadm init
的参数, 请参阅。
想了解完整的配置选项,请参阅配置文件。
如果想定制控制面组件,包括为活跃性探测和 etcd 服务提供 IPv6 支持以及为各组件提供额外参数,请参阅。
如果需要再次运行 kubeadm init
,您必须先卸载集群。
如果您需要将不同架构的节点加入您的集群,请单独在这类节点上为 kube-proxy
和 kube-dns
创建 Deployment 或 DaemonSet。 这是因为这些组件的 Docker 镜像并不支持多架构。
如果需要让普通用户可以运行 kubectl,请运行如下命令,其实这也是 kubeadm init
输出的一部分:
或者,如果您是 root
用户,则可以运行:
请备份好 kubeadm init
输出中的 kubeadm join
命令,因为您会需要这个命令来。
令牌是主节点和新添加的节点之间进行相互身份验证的,因此请确保其安全。任何人只要知道了这些令牌,就可以随便给您的集群添加节点。 可以使用 kubeadm token
命令来列出、创建和删除这类令牌。 请参阅kubeadm 参考指南。
安装 Pod 网络插件
警告: 注意: 这一节包含了安装和部署顺序的重要信息,执行之前请仔细阅读。
您必须先安装 Pod 网络插件,以便您的 Pod 可以互相通信。
网络必须在部署任何应用之前部署好。此外,在网络安装之前是 CoreDNS 不会启用的。 kubeadm 只支持基于容器网络接口(CNI)的网络而且不支持 kubenet 。
有一些项目为 Kubernetes 提供使用 CNI 的 Pod 网络,其中一些也支持. 请参阅插件页面了解可用网络插件的完整列表。 - 也提供了 IPv6 的支持。 - CNI 网桥 和 是 Kubernetes 1.9 版本里提供的唯一支持 IPv6 的网络插件。
您可以使用下列命令安装网络插件: