虽然有Rancher OS和CoreOS这类的发行版,但Kubernetes集群的安装也不是太麻烦,所以,仍是先从最基本的实验下。如下是本人CentOS7.6上安装Kubernetes集群的笔记,而且分章节记录,持续更新...。linux
Kubernete集群的主机生产环境也有多种选择,以下:git
但我如今手上只有一台7代i7的笔记本,虽有16G内存,但这双核四线程真不够看啊,单机和minikube安装先不考虑,等小型实验集群实验好后再逐个实现。个人笔记本是安装的fedora,使用kvm虚拟机虚拟了三个主机每一个主机也就1vcpu+1G内存,分别安装一个master节点和两个计算节点。
各个节点须要安装的kubernetes组件以下:github
如chrony,配置文件/etc/chrony.conf(内网须要配置时间服务器),服务启动使用systemctl命令。建议不管内网和能链接Internet的环境都为集群配置时间同步服务器。vim
在/etc/hosts文件中配置集群的IP和主机名解析(同时能够减小DNS的解析时延)api
CentOS7上关闭防火墙bash
# systemctl stop firewalld.service # systemctl disable firewalld.service
# setenforce 0
同时配置时/etc/selinux/config文件服务器
# vim /etc/selinux/config ... SELINUX=disable
或者网络
# sed -i 's@^\(SELINUX=\).*@\1disabled@' /etc/sysconfig/selinux
Kubernetes 1.8 开始须要关闭系统 Swap 交换分区,若是不关闭,则没法启动。
查看app
# free -m
临时关闭ide
# swapoff -a # echo "vm.swappiness = 0" >> /etc/sysctl.conf
或者
# swapoff -a && sysctl -w vm.swappiness=0
同时编辑配置文件/etc/fstab进行永久关闭,即注释挂载swap设备的行。
注:本次实验因为资源有限没有关闭,但后续有解决方法(仅限于实验环境)
kube-proxy 支持 iptables 和 ipvs,若是条件知足,默认使用 ipvs,不然使用 iptables。
cat <<EOF > /etc/sysctl.d/kubernetes.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 EOF modprobe br_netfilter sysctl -p /etc/sysctl.d/kubernetes.conf 或者 sysctl --system
因为 ipvs 已经加入到了内核的主干,因此为 kube-proxy 开启 ipvs 的前提须要加载如下的内核模块:
执行如下脚本加载内核
cat > /etc/sysconfig/modules/ipvs.modules <<EOF #!/bin/bash modprobe -- ip_vs modprobe -- ip_vs_rr modprobe -- ip_vs_wrr modprobe -- ip_vs_sh modprobe -- nf_conntrack_ipv4 EOF chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
参考:https://github.com/kubernetes/kubernetes/blob/master/pkg/proxy/ipvs/README.md
上面脚本建立了的/etc/sysconfig/modules/ipvs.modules文件,保证在节点重启后能自动加载所需模块。 使用lsmod | grep -e ip_vs -e nf_conntrack_ipv4命令查看是否已经正确加载所需的内核模块。
接下来还须要确保各个节点上已经安装了 ipset 软件包。 为了便于查看 ipvs 的代理规则,最好安装一下管理工具 ipvsadm。
yum install ipset ipvsadm
可使用ipvsadm检查是否开启ipvs,示例以下:
# ipvsadm -ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 10.0.0.1:443 rr persistent 10800 -> 192.168.0.1:6443 Masq 1 1 0
若是以上前提条件若是不知足,则即便 kube-proxy 的配置开启了 ipvs 模式,也会退回到 iptables 模式。