环境准备
安装版本
CentOS Linux release 7.6.1810 (Core)
Docker 18.09.7
kubeadm 1.16.1
准备工作
这里我使用了5台centos7的虚拟机,3台master,2台worker节点,相关配置如下:
主机名 | IP地址 | 角色 | cpu | Memory |
---|---|---|---|---|
k8s-master-01 | 128.0.1.190 | master | 4 | 8G |
k8s-master-02 | 128.0.1.191 | master | 4 | 8G |
k8s-master-03 | 128.0.1.192 | master | 4 | 8G |
k8s-worker-01 | 128.0.1.193 | worker | 4 | 8G |
k8s-worker-02 | 128.0.1.194 | worker | 4 | 8G |
系统配置(所有节点)
配置主机名,注意每个节点的主机名必须唯一,并配置好hostname互相访问
~]# vi /etc/hosts
# Kubernetes master hosts
128.0.1.190 k8s-master-01
128.0.1.191 k8s-master-02
128.0.1.192 k8s-master-03
# Kubernetes worker hosts
128.0.1.193 k8s-worker-01
128.0.1.194 k8s-worker-02
然后安装相关的依赖包
yum update
yum install -y conntrack ipvsadm ipset jq sysstat curl iptables libseccomp
关闭防火墙、swap、重置iptables
# 关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
# 重置iptables
iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat && iptables -P FORWARD ACCEPT
# 关闭swap
swapoff -a
sed -i '/swap/s/^\(.*\)$/#\1/g' /etc/fstab
# 关闭selinux
setenforce 0
# 关闭dnsmasq(否则可能导致docker容器无法解析域名)
service dnsmasq stop && systemctl disable dnsmasq
配置系统参数
cat > /etc/sysctl.d/kubernetes.conf <<EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
vm.swappiness=0
vm.overcommit_memory=1
vm.panic_on_oom=0
fs.inotify.max_user_watches=89100
EOF
sysctl -p /etc/sysctl.d/kubernetes.conf
生效文件时(sysctl -p)报错
sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-iptables: No such file or directory
sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-ip6tables: No such file or directory
如果出现以上报错,解决方法:
modprobe br_netfilter
ls /proc/sys/net/bridge
安装Docker(所有节点)
查阅GitHub,目前k8s支持的版本有1.13.1, 17.03, 17.06, 17.09, 18.06, 18.09.我们安装最新docker版本18.09
mkdir -p /data/kubernetes/docker && cd