购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.3 kubeadm安装与系统配置

本节完成kubeadm的安装与系统配置,为下一节构建Kubernetes打下基础,具体步骤说明如下。

1.准备master节点

本节在2.2节所构建的centos8节点基础上,进一步配置成master节点,具体步骤如下。

(1)复制虚拟机

关闭虚拟机centos8,命令如下。

复制“E:\vm\02\centos8”到“E:\vm\02\master”,复制后的目录如图2-1所示。

图2-1 master虚拟机目录

(2)配置虚拟机

在“E:\vm\02\master”目录下打开虚拟机,将虚拟机名称命名为master,确认CPU个数为2(否则使用kubeadm初始化Kubernetes时,会报错“[ERROR NumCPU]: the number of available CPUs 1 is less than the required 2”),内存配置成4GB,如图2-2所示。

图2-2 master虚拟机硬件配置

(3)配置操作系统

启动虚拟机master,启动时会弹出下面的对话框,如图2-3所示,请一定要选择“我已复制该虚拟机”,这样VMware会为master的网卡生成新的MAC地址,否则master的MAC会和“D:\vm\02\centos8”的虚拟机MAC一样,从而造成冲突。

图2-3 虚拟机复制对话框

(4)修改主机名

虚拟机master启动后,进入操作系统,修改主机名为master,命令如下。

重启系统后,可以看到主机名已经修改成了master。具体命令如下所示。

2.准备yum安装源

采用kubeadm来构建Kubernetes集群时,需要先安装kubeadm。kubeadm可以通过yum来安装,因此,需要先配置yum,具体步骤如下。

(1)编辑yum安装源文件

使用vi打开yum文件CentOS-Kubernetes.repo,命令如下。

在CentOS-Kubernetes.repo中输入以下内容,用于增加Kubernetes安装源,保存退出。

(2)重建yum cache

重建yum cache的命令如下。

(3)检查kubeadm

运行下面的命令,如果能看到kubeadm.x86_64,则说明前面配置的安装源中包含kubeadm。

3.安装kubeadm

使用yum安装kubeadm的命令如下所示。

运行上述命令后,如果能看到下面的输出,则说明kubeadm安装成功。

可以看到,除了kubeadm外,它的依赖kubectl和kubelet(也是Kubernetes组件)被一同安装了。其中kubeadm、kubectl和kubelet的版本号都为1.20.1。

Kubernetes对其组件kubectl、apiserver和kubelet等都有统一的版本编号,编号形式为x.y.z,其中x是主版本,y是次要版本,z是补丁版本。

4.Kubernetes集群的准备工作

(1)添加Kubernetes的主机名映射

使用vi打开hosts文件,命令如下。

添加的映射信息如下所示。

如果不添加上述映射信息的话,后续启动kubeadm时会有如下的警告。

(2)关闭防火墙firewalld

因为Kubernetes运行时,需要防火墙开放6443和10250端口,否则后续启动kubeadm时,会有如下的警告。

为了简单起见,在此直接关闭防火墙,并且禁止防火墙自启动,命令如下。

参考艾叔编著的《Linux快速入门与实战——基础知识、容器与容器编排、大数据系统运维》中5.3.6节的firewall-cmd来开放必要的端口,而不是整体关闭防火墙,这样安全性会更好。

(3)设置iptables转发规则

Kubernetes运行时,需要配置iptables的转发(FORWARD)规则为ACCEPT,否则,跨节点访问Kubernetes的Pod或服务时就不会成功。通常情况下,使用命令设置iptables转发规则的操作不会持久存储,一旦节点重启,就需要重新运行命令来设置。因此需要把这个设置命令,写入自启动服务中,具体步骤如下。

1)首先编辑自启动服务文件k8s-init.service,命令如下。

2)然后输入以下内容,其中第5行为k8s-init.service服务启动时所执行的脚本,名字为k8s-init.sh。

3)编辑k8s-init.sh,命令如下。

输入以下内容,其中第3行为iptables转发规则的设置命令。

4)给k8s-init.sh加上可执行权限,命令如下。

5)将k8s-init.service设置为自启动,命令如下。

6)启动k8s-init.service,命令如下。

7)查看k8s-init.service的状态,命令如下。

系统显示以下信息,则说明k8s-init.service成功执行。

8)重启master,命令如下。

9)查看iptables的转发规则,命令如下,若显示(policy ACCEPT),则说明iptables的转发规则设置成功。

(4)安装tc

接下来还需要安装tc,否则后续启动kubeadm时会有如下的警告。

挂载光驱,然后安装tc,命令如下所示。

(5)设置Docker的cgroups使用systemd

Docker默认采用cgroupfs作为cgroup驱动,但是,Kubernetes建议使用systemd作为cgroup驱动,否则后续启动kubeadm时会有如下的警告。

在此将Docker的cgroup驱动修改成systemd。

1)编辑/etc/docker/daemon.json,输入以下内容。

2)重新启动Docker服务,查看Docker信息,命令如下,如果能看到Cgroup Driver已经修改成了systemd,则说明修改成功。

有关Docker的设置,还可以参考以下链接“https://kubernetes.io/docs/setup/production-environment/container-runtimes/#docker”。

(6)设置Docker加速

设置Docker加速,防止Kubernetes拉取镜像时无法获取国外Registry上的镜像而报错。

在daemon.json的第10行的“]”后面增加逗号“,”,并增加第11行的内容,即阿里云的镜像Registry,具体如下。

重启Docker服务,命令如下。Docker服务重启后,将重新加载daemon.json中的配置。

(7)禁止master上的swap分区

需要禁止master上的swap分区,否则,后续启动kubeadm时会有如下报错。

1)禁止swap分区的命令如下。

2)查看swap分区的命令如下,如果没有看到任何显示,则说明swap分区禁止成功。

3)由于上述命令并不会永久禁止swap分区,master重启后,swap分区又会开启,因此需要编辑/etc/fstab文件,来永久禁止swap分区。

4)在/etc/fstab中使用#号,将下面的内容变为注释,禁止系统启动时自动加载swap分区。

(8)设置kubelet自启动

设置kubelet自启动,否则后续启动kubeadm时会有如下的警告。

设置kubelet自启动的命令如下。 2bNdCg4iI+RYStr8ioW2q5rro3p3wGz0f3sq9ldDTMHXRj+WV42kxyx18Ue1s7Tx

点击中间区域
呼出菜单
上一章
目录
下一章
×