Kubeadm方式搭建集群优缺点:
优点:
简单优雅,支持高可用,升级方便
缺点:
不易维护,文档不够细致
将master1作为deploy节点,未指定节点时默认在master1上进行操作。
建议deploy节点与其它节点配置ssh免密登录,配置过程参考:批量实现SSH免密登录 。
环境准备
环境准备工作请在所有节点进行。
- 主机说明:
系统 | ip | 角色 | cpu | 内存 | hostname |
---|---|---|---|---|---|
CentOS 7.7 | 192.168.1.51 | master、deploy | >=2 | >=2G | master1 |
CentOS 7.7 | 192.168.1.52 | master | >=2 | >=2G | master2 |
CentOS 7.7 | 192.168.1.53 | master | >=2 | >=2G | master3 |
CentOS 7.7 | 192.168.1.54 | node | >=2 | >=2G | node1 |
CentOS 7.7 | 192.168.1.55 | node | >=2 | >=2G | node2 |
CentOS 7.7 | 192.168.1.56 | node | >=2 | >=2G | node3 |
- 设置主机名:
每个节点的主机名必须不一样,且保证节点之间可以通过hostname互相访问。
以master1为例,
# hostnamectl set-hostname master1
# vim /etc/hosts
192.168.1.51 master1
192.168.1.52 master2
192.168.1.53 master3
192.168.1.54 node1
192.168.1.55 node2
192.168.1.56 node3
- 安装依赖包:
# yum update -y
# yum install -y curl git iptables conntrack ipvsadm ipset jq sysstat libseccomp
- 关闭防火墙、selinux和swap,重置iptables:
# systemctl stop firewalld && systemctl disable firewalld
# sed -i 's/=enforcing/=disabled/g' /etc/selinux/config && setenforce 0
# iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat && iptables -P FORWARD ACCEPT
# swapoff -a
# sed -i '/swap/s/^\(.*\)$/#\1/g' /etc/fstab
# systemctl stop dnsmasq && systemctl disable dnsmasq #否则可能导致docker容器无法解析域名
- 系统参数设置:
# 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
- 安装docker:
# curl http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker.repo
# yum makecache fast
# yum install -y docker-ce
# systemctl start docker && systemctl enable docker
# cat <<EOF > /etc/docker/daemon.json
{
"exec-opts":["native.cgroupdriver=systemd"]
}
EOF
# systemctl restart docker
- 安装必要工具:
kubeadm 用于部署集群
bukelet 集群中各节点需要运行的组件,负责管理pod、容器的生命周期
kubectl 集群管理工具(master节点安装即可)
# cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
# yum install -y kubeadm-1.14.0-0 kubelet-1.14.0-0 kubectl-1.14.0-0 --disableexcludes=kubernetes
# systemctl start kubelet && systemctl enable kubelet
- 配置文件(部署节点):
# mkdir /software && cd /software
# git clone https://git.imooc.com/LZXLINUX/kubernetes-ha-kubeadm.git
# cd kubernetes-ha-kubeadm/ && ls
addons configs global-config.properties init.sh LICENSE README.md scripts
文件说明:
addons kubernetes的插件,比如calico和dashboard
configs 包含了部署集群过程中用到的各种配置文件
scripts 包含部署集群过程中用到的脚本,如keepalived检查脚本
global-configs.