一,平台规划
1.单master集群
2.多master集群
二,配置要求
三,集群部署
1.集群部署的两种方式
(1)kubeadm
kubeadm是一个K8s部署工具,提供kubeadm init 和 kubeadm join,用于快速部署k8s集群
官方地址:https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubwadm/
(2)二进制包
从github下载发行版的二进制包,手动部署每个组件,组成k8s集群。
四,使用kubeadm的方式搭建集群
1.安装三台虚拟机,安装操作系统cenos7.x
2.对三个安装完系统后的虚拟机进行初始化操作
#关闭防火墙
systemctl stop firewalld #临时
systemctl disable firewalld #永久
#关闭selinux
sed -i 's/enforing/disabled/' /etc/selinux/config #永久
setenforce 0 #临时
#关闭swap
swapoff -a #临时
sed -ri 's/.*swap.*/#&/' /etc/fstab #永久
#根据规划设置主机名
hostnamectl set-hostname <hostname>
(三台都需要设置主机名,例:hostnamectl set-hostname k8smaster,设置完执行hostname验证)
#在master添加hosts(设置成自己的ip及对应的主机名)
cat >> /etc/hosts << EOF
192.168.44.141 master
192.168.44.142 node1
192.168.44.143 node2
EOF
#将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system #生效
#时间同步
yum install ntpdate -y
ntpdate time.windows.com
3.所有节点安装Docker/kubeadm/kubelet
3.1 安装Docker(k8s默认CRI(容器运行时)为Docker,因此先安装Docker)
$ wget https://mirrors.aliyun.com/docker-ce/liunx/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo
$ yum -y install docker-ce-18.06.1.ce-3.el7
$ systemctl enable docker && systemctl start docker
$ docker --version 【
$ cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors":["https://b9pmyelo.mirror.aliyuncs.com"] }
EOF
$ systemctl restart docker
3.2 添加阿里云YUM软件源
$ cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
EOF
3.3 安装kubeadm,kubelet和kubectl
$ yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
$ systemctl enable kubelet
4.部署kubernetes Master
(只在Master节点上执行)
$ kubeadm init \
--apiserver-advertise-address=192.168.44.146 \ #当前Master节点ip
--image-repository registry.aliyuncs.com/google_containers \ --kubernetes-version v1.18.0 \ #版本
--service-cidr=10.96.0.0/12 \ #其他网络的网段
--pod-network-cl=idr=10.244.0.0/16 #其他网络的网段
由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址。
使用kubectl工具(上述命令执行成功后会弹出下列命令):
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -g) $HOME/.kube/config
$ kubectl- get nodes
5.加入Kubernetes Node
(在node节点执行)
向集群添加新节点,执行在kubeadm init输出的kubeadm join命令:
(复制红框内命令在Node节点执行)
Node节点执行成功后在Master节点执行 kubectl get nodes 查看node节点是否添加到集群中
5.1 默认token有效期为24小时,当过期之后,该token就不可用了,这时就需要重新创建token,操作如下:
kubeadm token create --print-join-command
6.部署CNI网络插件
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yum 默认镜像地址无法访问,sed命令修改为docker hub镜像仓库。
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yum (因为是国外的地址,若失败可以多执行几次也可以使用国内地址)
测试:kubectl get pods -n kube-system
(需多等待一段时间后查看)
7.最终测试集群