=>返回首页<=
一、实践环境准备
1. 服务器说明
我们这里使用的是五台centos-7.6的虚拟机,具体信息如下表:
系统类型 | IP地址 | 节点角色 | CPU | Memory | Hostname |
---|---|---|---|---|---|
centos-7.6 | 172.19.3.171 | master | >=2 | >=2G | master1 |
centos-7.6 | 172.19.3.172 | master | >=2 | >=2G | master2 |
centos-7.6 | 172.19.3.173 | master | >=2 | >=2G | master3 |
centos-7.6 | 172.19.3.174 | worker | >=2 | >=2G | worker1 |
centos-7.6 | 172.19.3.175 | worker | >=2 | >=2G | worker2 |
2. 系统设置(所有节点)
2.1 主机名
主机名必须每个节点都不一样,并且保证所有点之间可以通过hostname互相访问。
# 查看主机名
$ hostname
# 修改主机名
$ hostnamectl set-hostname <your_hostname>
# 配置host,使所有节点之间可以通过hostname互相访问
$ vi /etc/hosts
# <node-ip> <node-hostname>
2.2 安装依赖包(所有节点)
# 更新yum
$ yum update
# 安装依赖包
$ yum install -y conntrack ipvsadm ipset jq sysstat curl iptables libseccomp
2.3 关闭防火墙、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
2.4 系统参数设置(所有节点)
# 制作配置文件
$ 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 cannot stat /proc/sys/net/bridge/bridge-nf-cal1-iptables: No such file or directory
#sysctl cannot stat /proc/sys/net/bridge/bridge-nf-cal1-ip6tables: No such file or directory
#可以编辑该文件,去掉报错的两行配置 vi /etc/sysctl.d/kubernetes.conf
#当做到‘搭建高可用集群’,初始化kubeadm时,会报错失败,这时再返回这里加上去掉的配置即可
3. 安装docker(所有节点)
# 如果之前有安装docker,可以先卸载
$ sudo yum -y remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
# yum 地址配置阿里云
$ sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 查看docker-ce版本
$ yum list docker-ce --showduplicates | sort -r
# 安装docker 18.09.9版本
$ yum -y install docker-ce-18.09.9 docker-ce-cli-18.09.9
# 配置开机自启动,并立即启动
$ systemctl enable docker && systemctl restart docker
4. 安装必要工具(所有节点)
4.1 工具说明
- kubeadm: 部署集群用的命令
- kubelet: 在集群中每台机器上都要运行的组件,负责管理pod、容器的生命周期
- kubectl: 集群管理工具
4.2 安装方法
# 配置yum源(条件充足的同学可以把"mirrors.aliyun.com"替换为"packages.cloud.google.com")
$ 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 list kubeadm --showduplicates | sort -r
# 安装指定版本(这里用的是1.14.0)
$ yum install -y kubeadm-1.14.0-0 kubelet-1.14.0-0 kubectl-1.14.0-0 --disableexcludes=kubernetes
# >>>>>可选 start<<<<<
# 设置kubelet的cgroupdriver(kubelet的cgroupdriver默认为systemd,如果上面没有设置docker的exec-opts为systemd,这里就需要将kubelet的设置为cgroupfs)
# 由于各自的系统配置不同,配置位置和内容都不相同
# 1. /etc/systemd/system/kubelet.service.d/10-kubeadm.conf(如果此配置存在的情况执行下面命令:)
$ sed -i "s/cgroup-driver=systemd/cgroup-driver=cgroupfs/g" /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
# >>>>>可选 end<<<<<
# 2. 如果1中的配置不存在,则此配置应该存在(不需要做任何操):/usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf
# kubelet 设为开机自启动,并立即启动
$ systemctl enable kubelet && systemctl start kubelet
5. 准备配置文件(master1)
# 创建存放配置文件的目录
$ mkdir -p /etc/kubeadm/kubeadm-config.yaml
# 编辑该配置文件,写入以下内容(ip记得变更为自己的配置)
# 记住这两项配置,后面会用到
apiVersion: kubeadm.k8s.io/v1beta1
kind: ClusterConfiguration
kubernetesVersion: v1.14.0
# 配置master1的ip地址即可
controlPlaneEndpoint: "172.19.3.171:6443"
networking:
# pod 的ip地址范围
podSubnet: "172.19.3.0/24"
imageRepository: registry.cn-hangzhou.aliyuncs.com/imooc