前言
部署Kubernetes除了手动方式外,还有诸如Kubeadm、Kubespray、Breeze、Rancher、kargo等多种自动化方式。工具没有好坏之分,能干事、效率高就行。这里,笔者仍使用Kubespray部署当前K8s最新版本(用着真的很贴身),可自动化部署HA集群、可灵活定制开发、高稳定性等。
本篇将介绍如何在不用科学上网的背景下,快速自动化部署K8s集群。那么,开始吧!
初始化环境
环境说明
环境实在有限,只有一台机器,想玩HA集群也没环境啊
主机名IP地址角色K8s172.16.0.180Master+node
环境为Centos 7系统,各节点配置hosts和hostname,如
cat /etc/hosts172.16.0.180 K8s
关闭防火墙等
sed -i 's/SELINUX=*/SELINUX=disabled/' /etc/selinux/config systemctl disable firewalld && systemctl stop firewalld
Kubernetes 1.8开始要求关闭系统的Swap交换分区,方法如下
swapoff -a && echo "vm.swappiness=0" >> /etc/sysctl.conf && sysctl -p && free –h
Docker从1.13版本开始调整了默认的防火墙规则,禁用了iptables filter表中FOWARD链,这样会引起Kubernetes集群中跨Node的Pod无法通信,在各个Docker节点执行下面的命令:
iptables -P FORWARD ACCEPT
配置ssh key 认证。确保本机也可以 ssh 连接,否则下面部署失败
ssh-keygen -t rsa -N ""cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
更新系统内核为 4.4.x , CentOS 默认为3.10.x
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.orgrpm -Uvh yum --enablerepo=elrepo-kernel install -y kernel-lt kernel-lt-devel grub2-set-default 0
重启系统
reboot
增加内核配置
vim /etc/sysctl.conf# dockernet.bridge.bridge-nf-call-iptables = 1net.bridge.bridge-nf-call-ip6tables = 1
使其内核配置生效
sysctl -p
安装kubespray
安装 centos的epel源
yum -y install epel-release
make缓存
yum clean all && yum makecache
安装软件,ansible 必须 >= 2.7
yum install -y python-pip python34 python-netaddr python34-pip ansible git
下载源码,当前kubespray项目的master分支默认安装k8s 1.13.1版本
git clone https://github.com/kubernetes-sigs/kubespray
安装 kubespray 依赖,若无特殊说明,后续操作均在~/kubespray目录下执行
cd kubespray pip install -r requirements.txt