1、kubeadm
kubeadm 是官方社区推出的一个用于快速部署 kubernetes 集群的工具。这个工具能通过两条指令完成一个 kubernetes 集群的部署:
1.1 创建一个 Master 节点$ kubeadm init
1.2 将一个 Node 节点加入到当前集群中$ kubeadm join <Master 节点的 IP 和端口 >
2、前置要求
- 一台或多台机器, 操作系统 CentOS7.x-86_x64
- 硬件配置: 2GB 或更多 RAM, 2 个 CPU 或更多 CPU, 硬盘 30GB 或更多
- 集群中所有机器之间网络互通可以访问外网, 需要拉取镜像
- 禁止 swap 分区
3、部署步骤
3.1.在所有节点上安装 Docker 和 kubeadm
3.2.部署 Kubernetes Master
3.3.部署容器网络插件
3.4.部署 Kubernetes Node, 将节点加入 Kubernetes 集群中5.部署 Dashboard Web 页面, 可视化查看 Kubernetes 资源
4、 环境准备
1、准备工作
- 我们可以使用 vagrant 快速创建三个虚拟机。 虚拟机启动前先设置 virtualbox 的主机网络。 现全部统一为 192.168.56.1, 以后所有虚拟机都是 56.x 的 ip 地址
1.设置虚拟机存储目录, 防止硬盘空间不足
2、 启动三个虚拟机
使用下面的Vagrantfile文件
Vagrant.configure("2") do |config|
(1..3).each do |i|
config.vm.define "k8s-node#{i}" do |node|
设置虚拟机的Box
node.vm.box = "centos/7"
设置虚拟机的主机名
node.vm.hostname="k8s-node#{i}"
设置虚拟机的IP
node.vm.network "private_network", ip: "192.168.56.#{99+i}", netmask: "255.255.255.0"
设置主机与虚拟机的共享目录
node.vm.synced_folder "~/Documents/vagrant/share", "/home/vagrant/share"
VirtaulBox相关配置
node.vm.provider "virtualbox" do |v|
设置虚拟机的名称
v.name = "k8s-node#{i}"
设置虚拟机的内存大小
v.memory = 4096
设置虚拟机的CPU个数
v.cpus = 4
end
end
end
end
- 将上面的Vagrantfile到非中文无空格目录下, 运行 vagrant up 启动三个虚拟机。
题外话:vagrant 完全可以一键部署全部 k8s 集群,可参照下面的地址去实现。
https://github.com/rootsongjc/kubernetes-vagrant-centos-cluster
- 进入三个虚拟机, 开启 root 的密码访问权限。
Vagrant ssh XXX(比如k8s-node1) 依次进入各个节点系统之后
su root 密码为 vagrant
vi /etc/ssh/sshd_config
修改 PasswordAuthentication yes/no
重启服务 service sshd restart
所有虚拟机设置为 4 核 4G
设置好 NAT 网络,设置各个节点网络地址不一样以便区分不同的节点,要不然各个节点网址一样就不好操作。
3、设置 linux 环境(各个节点都执行)
关闭防火墙:
systemctl stop firewalld
systemctl disable firewalld
关闭 selinux:
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0
临时关闭 swap:
swapoff -a
需设置为永久关闭
sed -ri 's/.*swap.*/#&/' /etc/fstab
验证,swap 必须为 0;
free -g
小tips:由于各个节点都要执行重复的命令,在xshell中,我们可以设置在一个节点输入并发送给所有打开的节点从而避免重复输入,只需在命令行区域右键,在弹出的窗口进行选择已连接的会话,当只需要把命令在当前节点执行时,切换到当前会话即可。

添加主机名与 IP 对应关系
vi /etc/hosts
10.0.2.15 k8s-node1
10.0.2.24 k8s-node2
10.0.2.25 k8s-node3
hostnamectl set-hostname <newhostname>: 指定新的 hostname
su 切换过来
将桥接的 IPv4 流量传递到 iptables 的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
然后执行sysctl --system命令让配置生效
如果执行sysctl --system遇到提示是只读的文件系统的问题,运行如下命令
mount -o remount rw /
5、 所有节点安装 Docker、 kubeadm、 kubelet、 kubectl
Kubernetes 默认 CRI(容器运行时) 为 Docker, 因此先安装 Docker。
1、 安装 docker
1、 卸载系统之前的 docker
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2、 安装 Docker-CE
安装必须的依赖
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
设置 docker repo 的 yum 位置
sudo yum-config-manager \
--add-repo \
由于docker镜像的原因,这一步执行可能会失败,如果失败配置阿里云的
安装 docker,以及 docker-cli
sudo yum install -y docker-ce docker-ce-cli containerd.io
3、配置 docker 加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"]
} EOF
sudo systemctl daemon-reloadsudo systemctl restart docker
4、启动 docker & 设置 docker 开机自启
systemctl enable docker
基础环境准备好, 可以给三个虚拟机备份一下; 为 node3 分配 16g, 剩下的 3g。 方便未来侧测试

2、添加阿里云 yum 源
$ cat > /etc/yum.repos.d/kubernetes.repo << EOF
kubernetes
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
3、安装 kubeadm, kubelet 和 kubectl
yum list|grep kube
yum install -y kubelet-1.17.3 kubeadm-1.17.3 kubectl-1.17.3
systemctl enable kubelet
systemctl start kubelet
注意:虽然执行了启动命令systemctl start kubelet,但一些配置尚未完成,此时启动失败是正常的。鉴于篇幅关系,关于配置在下一篇文章进行总结。