上篇文章已经对k8s概念和命令进行了简单介绍,本文进行K8s集群搭建

搭建K8s集群

  1. 搭建K8S集群
    配置要求:
    1.至少2台 2核4G 的服务器 (一台master服务器,一台node服务器)
    2. Cent OS 7.8

  2. 检查centos / hostname/cpu
    此操作在 master 节点和 node 节点都要执行

(1) 检查centos :
执行命令: cat /etc/redhat-release
在这里插入图片描述
(2) 检查hostname
此处 hostname 的输出将会是该机器在 Kubernetes 集群中的节点名字,不能使用 localhost 作为节点的名字。 执行命令:hostname
在这里插入图片描述
如果hostname的名字为localhost,则需要修改hostname, 执行命令:hostnamectl set-hostname XXX,XXX是你修改后的hostname. 查看修改结果,执行命令:hostname
在这里插入图片描述
(3) 设置 hostname 解析
执行命令:echo “XXXX $(hostname)” >> /etc/hosts,XXXX为节点的IP, 或者直接编辑 /etc/hosts 文件,执行命令 vi /etc/hosts
在这里插入图片描述
需要将master节点的IP和node节点的IP都添加到此文件中,所有节点都要执行,因为k8s默认需要使用hostname,设置之后可以直接ping hostname.

(4) 查看cpu信息
执行命令:lscpu,核对 CPU 信息
在这里插入图片描述
3. 检查网络
kubelet使用的IP地址
(1) ip route show 命令中,可以知道机器的默认网卡,通常是 eth0,如 default via 172.21.0.23 dev eth0
(2) ip address 命令中,可显示默认网卡的 IP 地址,Kubernetes 将使用此 IP 地址与集群内的其他节点通信,如 172.17.216.80
(3) 所有节点上 Kubernetes 所使用的 IP 地址必须可以互通(无需 NAT 映射、无安全组或防火墙隔离)

  1. 安装docker和kubelet

a. 安装前,请认真核对如下选项
(1) 我的任意节点 centos 版本为7.8
(2) 我的任意节点 CPU 内核数量大于等于 2,且内存大于等于4G
(3) 我的任意节点 hostname 不是 localhost,且不包含下划线、小数点、大写字母
(4) 我的任意节点都有固定的内网 IP 地址
(5) 我的任意节点都只有一个网卡,如果有特殊目的,我可以在完成 K8S 安装后再增加新的网卡
(6) 我的任意节点上 Kubelet使用的 IP 地址 可互通(无需 NAT 映射即可相互访问),且没有防火墙、安全组隔离
(7) 我的任意节点不会直接使用 docker run 或 docker-compose 运行容器

b. 进行安装docker和kubelet

使用 root 身份在所有节点执行如下代码,以安装软件:docker ; nfs-utils ; kubectl / kubeadm / kubelet
(1) 执行脚本文件,执行命令:vi install.sh (脚本文件可以任意命名)
在这里插入图片描述

其中,install.sh配置文件的详细内容如下:

#在 master 节点和 node 节点都要执行
#最后一个参数 1.19.2 用于指定 kubenetes 版本,支持所有 1.19.x 版本的安装
#腾讯云 docker hub 镜像*
#export REGISTRY_MIRROR=“https://mirror.ccs.tencentyun.com”
#DaoCloud 镜像
#export REGISTRY_MIRROR=“http://f1361db2.m.daocloud.io”
#华为云镜像
#export REGISTRY_MIRROR=“https://05f073ad3c0010ea0f4bc00b7105ec20.mirror.swr.myhuaweicloud.com”
#阿里云 docker hub 镜像
export REGISTRY_MIRROR=https://registry.cn-hangzhou.aliyuncs.com
curl -sSL https://kuboard.cn/install-script/v1.19.x/install_kubelet.sh | sh -s 1.19.2

(2) 修改install.sh文件的权限及执行:
[root@localhost ~]# chmod a+x install.sh
[root@localhost ~]# ll
total 8
-rw-------. 1 root root 1572 Aug 12 06:31 anaconda-ks.cfg
-rwxr-xr-x. 1 root root 607 Sep 28 06:41 install.sh
[root@localhost ~]# ./install.sh

  1. 初始化master节点

(1) 初始化脚本内容

#只在 master 节点执行
#替换 x.x.x.x 为 master 节点实际 IP(请使用内网 IP)
#export 命令只在当前 shell 会话中有效,开启新的 shell 窗口后,如果要继续安装过程,请重新执行此处的 export 命令
export MASTER_IP=x.x.x.x
#替换 apiserver.demo 为 您想要的 dnsName
export APISERVER_NAME=apiserver.demo
#Kubernetes 容器组所在的网段,该网段安装完成后,由 kubernetes 创建,事先并不存在于您的物理网络中
export POD_SUBNET=10.100.0.1/16
echo “${MASTER_IP} ${APISERVER_NAME}” >> /etc/hosts
curl -sSL https://kuboard.cn/install-script/v1.19.x/init_master.sh | sh -s 1.19.2
在这里插入图片描述
注:执行脚本文件之前,请先设置hostname解析

(2) 检查 master 初始化结果

执行命令:kubectl get nodes -o wide
在这里插入图片描述
6. 初始化node节点
(1) 获得 join命令参数

在master节点执行命令:kubeadm token create --print-join-command

输出结果:
kubeadm join apiserver.demo:6443 --token btlf9u.q70mlphwplmcmpis --discovery-token-ca-cert-hash sha256:bf1d52ac3dd16f4eedcade4086218a463856d47922fedb6e2ba9095cbc44a671
在这里插入图片描述
注:该 token 的有效时间为 2 个小时,2小时内,您可以使用此 token 初始化任意数量的 node 节点
(2) 在node节点上执行初始化脚本

#只在 node 节点执行
#替换 x.x.x.x 为 master 节点的内网 IP
export MASTER_IP=x.x.x.x
#替换 apiserver.demo 为初始化 master 节点时所使用的 APISERVER_NAME
export APISERVER_NAME=apiserver.demo
echo “${MASTER_IP} ${APISERVER_NAME}” >> /etc/hosts
#替换为 master 节点上 kubeadm token create 命令的输出
kubeadm join apiserver.demo:6443 --token btlf9u.q70mlphwplmcmpis --discovery-token-ca-cert-hash sha256:bf1d52ac3dd16f4eedcade4086218a463856d47922fedb6e2ba9095cbc44a671

在这里插入图片描述
(3) 检查初始化结果

在master节点上执行命令:kubectl get nodes -o wide
在这里插入图片描述
至此,您已经完成了 Kubernetes 集群的安装。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐