使用 kubeadm 搭建 kubernetes 集群
kubeadm 简介
kubeadm 是 k8s 官方提供的用于快速部署 k8s 集群的命令行工具,也是官方推荐的最小化部署 k8s 集群的最佳实践,比起直接用二进制部署能省去很多工作,因为该方式部署的集群的各个组件以 docker 容器的方式启动,而各个容器的启动都是通过该工具配自动化启动起来的。
kubeadm 不仅仅能部署 k8s 集群,还能很方便的管理集群,比如集群的升级、降级、集群初始化配置等管理操作。
kubeadm 的设计初衷是为新用户提供一种便捷的方式来首次试用 Kubernetes, 同时也方便老用户搭建集群测试他们的应用。
kubeadm 的使用案例:
- 新用户可以从 kubeadm 开始来试用 Kubernetes。
- 熟悉 Kubernetes 的用户可以使用 kubeadm 快速搭建集群并测试他们的应用。
- 大型的项目可以将 kubeadm 和其他的安装工具一起形成一个比较复杂的系统。
安装环境要求
- 一台或多台运行着下列系统的机器:
- Ubuntu 16.04+
- Debian 9
- CentOS 7
- RHEL 7
- Fedora 25/26
- HypriotOS v1.0.1+
- Container Linux (针对1800.6.0 版本测试)
- 每台机器 2 GB 或更多的 RAM (如果少于这个数字将会影响您应用的运行内存)
- 2 CPU 核心或更多(节点少于 2 核的话新版本 kubeadm 会报错)
- 集群中的所有机器的网络彼此均能相互连接(公网和内网都可以)
- 禁用 Swap 交换分区。(Swap 分区必须要禁掉,否则安装会报错)
准备环境
本文使用 kubeadm 部署一个 3 节点的 k8s 集群:1 个 master 节点,2 个 node 节点。各节点详细信息如下:
Hostname | IP | OS 发行版 | 内存(GB) | CPU(核) |
---|---|---|---|---|
k8s-master | 192.168.10.100 | Centos7 | 2 | 2 |
k8s-node-1 | 192.168.10.101 | Centos7 | 2 | 2 |
k8s-node-2 | 192.168.10.102 | Centos7 | 2 | 2 |
kubeadm 安装 k8s 集群完整流程
- 使用 Vagrant 启动 3 台符合上述要求的虚拟机
- 调整每台虚拟机的服务器参数
- 各节点安装 docker、kubeadm、kubelet、kubectl 工具
- 使用 kubeadm 部署 master 节点
- 安装 Pod 网络插件(CNI)
- 使用 kubeadm 部署 node 节点
接下来我们依次介绍每步的具体细节:
使用 Vagrant 启动 3 台符合上述要求的虚拟机
Vagrant 的使用在这里不具体介绍了,如需了解请点击这里。
本文用到的 Vagrantfile:
# -*- mode: ruby -*-
# vi: set ft=ruby :
# author: qhh0205
$num_nodes = 2
Vagrant.configure("2") do |config|
# k8s 主节点定义及初始化配置
config.vm.define "k8s-master" do | k8s_master |
k8s_master.vm.box = "Centos7"
k8s_master.vm.hostname = "k8s-master"
k8s_master