万事开头确实难,开过去就好了。
由于最近刚接触学习云原生相关知识,来到K8S集群环节,在安装环境时就卡住了,安装过程中屡屡报错,因为使用的系统为Linux CentOS7.5版的,网上的教程总有一些小问题,不能一次解决。好在功夫不负有心人,经过一阵东查西找,东拼西凑,参考众多博主的经验分享,终于摸索着把实验环境给搭起来了,下面是我的详细步骤分享。
一、节点准备(所有命令均在'root'用户下执行) 1、在虚拟机中安装2个CentOS系统,并分别命名为k8smaster、k8snode1,并安装好docker(没有安装,可参考最下面的安装步骤) 分别在k8smaster和k8snode1中执行: hostnamectl set-hostname k8smaster hostnamectl set-hostname k8snode1 2、查询记录2个节点的IP地址备用,我的为:k8smaster:192.168.189.132 k8snode1:192.168.189.133 ifconfig 3、关闭防火墙 systemctl stop firewalld systemctl disable firewalld 4、关闭 selinux setenforce 0 sed -i 's/enforcing/disabled/' /etc/selinux/config 5、关闭swap swapoff -a sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab 6、重启系统后查看swap是否为0 systemctl reboot free -m 7、清空防火墙规则 sudo iptables -F && sudo iptables -X && sudo iptables -F -t nat && sudo iptables -X -t nat sudo iptables -P FORWARD ACCEPT 8、设置时间同步(如果同步不成功,可多执行几次) yum install ntpdate -y ntpdate time.windows.com 9、给机器添加hosts,执行如下命令,ip修改成自己的,参考第2步 cat > /etc/hosts <<EOF 192.168.56.132 k8smaster 192.168.56.133 k8snode1 EOF 10、添加网桥过滤和地址转发功能,将桥接的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 11、添加k8s yum源 cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF 12、列出版本清单 yum list kubelet --showduplicates | sort -r (如果无法获取清单,则依次执行yum clean all 和 yum makecache 两条命令,重新建立yum缓存,然后再执行上面的命令) 13、安装指定版本,这里安装1.20.0 yum install -y kubelet-1.20.0 kubeadm-1.20.0 kubectl-1.20.0 14、查看kubelet、kubeadm、kubectl版本号是否一致为1.20.0,如果一致,进行下一步,不一致,则删除重新安装。 '注意:以下命令在版本号不一致的情况下执行,一致则跳过,直接进行第15步: yum remove -y kubelet kubeadm kubectl yum list kubelet --showduplicates | sort -r yum install -y kubelet-1.20.0 kubeadm-1.20.0 kubectl-1.20.0 #k8s版本号一致核实
15、设置开机启动kubelet systemctl enable kubelet && systemctl start kubelet 二、仅在k8smaster的操作('注意:该部分操作与第三部分,按照小序号顺序执行) 1、在k8smaster机器执行初始化,获取部署命令('第一个ip是k8smaster的ip,改成自己机器的,后两个ip网段不动')。 kubeadm init --kubernetes-version=1.20.0 \ --apiserver-advertise-address=192.168.189.132 \ --image-repository registry.aliyuncs.com/google_containers \ --service-cidr=10.10.0.0/16 --pod-network-cidr=10.122.0.0/16 '注:===这里会获得如下token和hash,不需要在k8smaster中执行,存档备用,在k8snode1中执行。如果新增node节点,需执行该相同命令===' kubeadm join 192.168.189.132:6443 --token 26mrvu.er4snn5696egyhl9 \ --discovery-token-ca-cert-hash sha256:7c08300abe69648d219fb943e1fdee130f3f8f0a3f2a8960fdd56fc28573507d #在k8smaster机器上执行初始化操作,获取token、hash值等部署命令
2、配置使用kubectl命令工具,在第1步获取 mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config 4、安装 Pod 网络插件Calico kubectl apply -f https://docs.projectcalico.org/v3.18/manifests/calico.yaml 5、将k8smaster节点的admin.conf发送到k8snode1节点(如有多个node节点,只需修改节点名称) scp /etc/kubernetes/admin.conf root@k8snode1:/etc/kubernetes/admin.conf 根据提示,输入yes确认后,输入k8snode1的密码确认。 三、仅在k8snode1节点的操作('注意:该部分操作与第二部分,按照小序号顺序执行) 3、以下指令是在上面第二部分第1步获取,执行后将k8snode1节点加入进k8smaster节点的集群里 kubeadm join 192.168.189.132:6443 --token 26mrvu.er4snn5696egyhl9 \ --discovery-token-ca-cert-hash sha256:7c08300abe69648d219fb943e1fdee130f3f8f0a3f2a8960fdd56fc28573507d 四、验证安装结果,在k8smaster中执行 1、查看各节点状态,'Ready'为正常: kubectl get nodes 2、查看集群运行状态,'Running'为正常: kubectl -n kube-system get pod
至此,K8S环境搭建完成,希望对同样在学习的你能有所帮助。
===以下为docker引擎安装===
'※国内环境需修改CentOS默认下载源 1、备份原地址 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 2、下载阿里云的源 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo '※安装和卸载docker '安装docker,顺序执行以下命令: yum -y update yum install -y yum-utils yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum makecache fast yum list docker-ce --showduplicates | sort -r yum install -y docker-ce-3:19.03.9-3.el7.x86_64 systemctl start docker && systemctl enable docker docker version #确认doker是否安装成功出现Client和Server两个引擎即可 cd /etc/docker vim daemon.json #新建daemon.json,添加阿里云镜像加速器。 { "registry-mirrors": ["https://tow5pelk.mirror.aliyuncs.com"] } #上面的镜像加速器地址需自行申请, #申请地址:阿里云(https://cr.console.aliyun.com/#/accelerator) #申请后,将自己的加速器添加到daemon.json中。 #保存daemon.json后,重载docker: systemctl daemon-reload systemctl restart docker