Kubeadm是管理集群生命周期的重要工具,从创建到配置再到升级,Kubeadm处理现有硬件上的生产集群的引导,并以最佳实践方式配置核心Kubernetes组件,以便为新节点提供安全而简单的连接流程并支持轻松升级。随着Kubernetes 1.13 的发布,现在Kubeadm正式成为GA。
准备
首先准备2台虚拟机(CPU最少2核),我是使用Hyper-V创建的2台Ubuntu18.04虚拟机,IP和机器名如下:
172.17.20.210 master
172.17.20.211 node1
禁用Swap
Kubernetes 1.8开始要求必须禁用Swap,如果不关闭,默认配置下kubelet将无法启动。
编辑/etc/fstab文件:
sudo vim /etc/fstab UUID=8be04efd-f7c5-11e8-be8b-00155d000500 / ext4 defaults 0 0 UUID=C0E3-6A72 /boot/efi vfat defaults 0 0 #/swap.img none swap sw 0 0如上,将/swap.img所在的行注释掉,然后运行:
sudo swapoff -a(可选)DNS配置
在Ubuntu18.04+版本中,DNS由systemd全面接管,接口监听在127.0.0.53:53,配置文件在/etc/systemd/resolved.conf中。
有时候会导致无法解析域名的问题,可使用如下2种方式来解决:
1.最简单的就是关闭systemd-resolvd服务
sudo systemctl stop systemd-resolved sudo systemctl disable systemd-resolved然后手动修改/etc/resolv.conf文件就可以了。
2.更加推荐的做法是修改systemd-resolv的设置:
sudo vim /etc/systemd/resolved.conf # 修改为如下 [Resolve] DNS=1.1.1.1 1.0.0.1 #FallbackDNS= #Domains= LLMNR=no #MulticastDNS=no #DNSSEC=no #Cache=yes #DNSStubListener=yesDNS=设置的是域名解析服务器的IP地址,这里分别设为1.1.1.1和1.0.0.1
LLMNR=设置的是禁止运行LLMNR(Link-Local Multicast Name Resolution),否则systemd-resolve会监听5535端口。
安装Docker
Kubernetes从1.6开始使用CRI(Container Runtime Interface)容器运行时接口。默认的容器运行时仍然是Docker,是使用kubelet中内置dockershim CRI来实现的。
Docker的安装可以参考之前的博客:Docker初体验。
需要注意的是,Kubernetes 1.13已经针对Docker的1.11.1, 1.12.1, 1.13.1, 17.03, 17.06, 17.09, 18.06等版本做了验证,最低支持的Docker版本是1.11.1,最高支持是18.06,而Docker最新版本已经是
18.09了,故我们安装时需要指定版本为18.06.1-ce:sudo apt install docker-ce=18.06.1~ce~3-0~ubuntu
安装kubeadm, kubelet 和 kubectl
