准备工作

Kubeadm 简介

Kubeadm 是一个工具,它提供了 kubeadm init 以及 kubeadm join 这两个命令作为快速创建 kubernetes 集群的最佳实践。

kubeadm 通过执行必要的操作来启动和运行一个最小可用的集群。它被故意设计为只关心启动集群,而不是之前的节点准备工作。同样的,诸如安装各种各样值得拥有的插件,例如 Kubernetes Dashboard、监控解决方案以及特定云提供商的插件,这些都不在它负责的范围。

相反,我们期望由一个基于 kubeadm 从更高层设计的更加合适的工具来做这些事情;并且,理想情况下,使用 kubeadm 作为所有部署的基础将会使得创建一个符合期望的集群变得容易。

与 minikube 的区别

minikube 基本上你可以认为是一个实验室工具,只能单机部署,里面整合了 k8s 最主要的组件,无法真正搭建集群,且由于程序做死无法安装各种扩展插件(比如网络插件、dns 插件、ingress 插件等等),主要作用是给你了解 k8s 用的。而 kudeadm 搭建出来是一个真正的 k8s 集群,可用于生产环境(HA 需要自己做),和二进制搭建出来的集群几乎没有区别。

部署准备

  • BIOS 中开启 VT-X (如果是虚拟机注意设置)
  • 科学上网 (由于 GFW)

配置 5 台 CentOS 虚拟机, 1 台 master, 4 台 node, 分别为:

  • 192.168.1.128 k8s-master1
  • 192.168.1.131 k8s-node1
  • 192.168.1.132 k8s-node2
  • 192.168.1.133 k8s-node3
  • 192.168.1.134 k8s-node4

如果 CentOS 是最小安装, 建议先安装一下软件:

yum install -y net-tools vim

将 IP 设置为静态 IP

每一台都配置, 修改以下文件:

vim /etc/sysconfig/network-scripts/ifcfg-ens33

依次修改几台虚拟机:

BOOTPROTO="static"
IPADDR=192.168.1.128 # 依次配置
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=114.114.114.114
DNS2=1.2.4.8
ZONE=public

GATEWAY 配置为自己的网关, DNS 可以使用运营商的 DNS, 也可使用公共 DNS

配置好之后, 重启网络

systemctl restart network

主机互信

所有节点配置 hosts, 使三台机子能够互通

$ cat <<EOF >> /etc/hosts
192.168.1.128 k8s-master1
192.168.1.131 k8s-node1
192.168.1.132 k8s-node2
192.168.1.133 k8s-node3
192.168.1.134 k8s-node4
EOF

SSH 证书分发

ssh-keygen -t rsa
for i in k8s-node1 k8s-node2 k8s-node3 k8s-node4 k8s-node5;do ssh-copy-id -i .ssh/id_rsa.pub $i;done

测试互通性:

ping k8s-master1
# 或
ssh k8s-master1

关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

禁用 SELinux

临时生效

setenforce 0

要使其永久生效, 编辑文件 /etc/selinux/config,将 SELINUX 修改为 disabled,如下:

$ vim /etc/selinux/config
SELINUX=disabled
$ sed -i 's/SELINUX=permissive/SELINUX=disabled/' /etc/sysconfig/selinux
#SELINUX=disabled

关闭系统 Swap

Kubernetes 1.8 开始要求关闭系统的 Swap,如果不关闭,默认配置下 kubelet 将无法启动。

  • 方法一,通过 kubelet 的启动参数 --fail-swap-on=false 更改这个限制。
  • 方法二,关闭系统的 Swap。

临时关闭:

swapoff -a

永久关闭, 修改 /etc/fstab 文件,注释掉 SWAP 的自动挂载,使用 free -m 确认 swap 已经关闭。

#注释掉swap分区
$ sed -i 's/.*swap.*/#&/' /etc/fstab
$ cat /etc/fstab
#/dev/mapper/centos-swap swap                    swap    defaults        0 0
$ free -m
              total        used        free      shared  buff/cache   available
Mem:            962         154         446           6         361         612
Swap:             0           0           0

检查 Docker 的安装情况

检查系统是否已经安装 Docker, 若已安装不符合规格的版本, 需要将其卸载:

$ rpm -qa | grep docker
docker-client-1.13.1-94.gitb2f74b2.el7.centos.x86_64
docker-common-1.13.1-94.gitb2f74b2.el7.centos.x86_64
docker-1.13.1-94.gitb2f74b2.el7.centos.x86_64
$ rpm -e docker-client-1.13.1-94.gitb2f74b2.el7.centos.x86_64 docker-common-1.13.1-94.gitb2f74b2.el7.centos.x86_64 docker-1.13.1-94.gitb2f74b2.el7.centos.x86_64

注: 本文撰写时使用的是 Docker version 18.06.1-ce

设置源

在开始之前, 我们先对系统进行一整套的换源操作, 以保证后续操作能正常进行

$ mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup # 备份
$ curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
$ curl -o /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
$ cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

执行下列命令刷新 yum 源缓存

yum clean all
yum makecache
yum repolist

封装脚本

执行那么多命令也很烦, 我的习惯是写一个 shell 脚本, 然后直接执行即可:

set-origin.sh

$ touch set-origin.sh && chmod 744 set-origin.sh && vim set-origin.sh
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
yum clean all
yum makecache
yum repolist

上面所有的步骤, 只需要执行 ./set-origin.sh 即可完成

MIT Licensed | Copyright © 2018-present 滇ICP备16006294号

Design by Quanzaiyu | Power by VuePress