![Kubernetes权威指南:从Docker到Kubernetes实践全接触(第5版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/305/47379305/b_47379305.jpg)
2.2.4 运行kubeadm init命令安装Master节点
至此,准备工作已经就绪,运行kubeadm init命令即可一键安装Kubernetes的Master节点,也称之为Kubernetes控制平面(Control Plane)。
在开始之前需要注意:kubeadm的安装过程不涉及网络插件(CNI)的初始化,因此kubeadm初步安装完成的集群不具备网络功能,任何Pod(包括自带的CoreDNS)都无法正常工作。而网络插件的安装往往对kubeadm init命令的参数有一定要求。例如,安装Calico插件时需要指定--pod-network-cidr=192.168.0.0/16。关于安装CNI网络插件的更多内容,可参考官方文档的说明。
kubeadm init命令在执行具体的安装操作之前,会执行一系列被称为pre-flight checks的系统预检查,以确保主机环境符合安装要求,如果检查失败就直接终止,不再进行init操作。用户可以通过kubeadm init phase preflight命令执行预检查操作,确保系统就绪后再执行init操作。如果不希望执行预检查,则也可以为kubeadm init命令添加--ignore-preflight-errors参数进行关闭。如表2.3所示是kubeadm检查的系统配置,对不符合要求的检查项以warning或error级别的信息给出提示。
表2.3 kubeadm检查的系统配置
![img](https://epubservercos.yuewen.com/EB1063/26763832509462206/epubprivate/OEBPS/Images/txt002_14.jpg?sign=1739233394-gNyfhi0SOVDFwRiHEQzebFFZ4wxFtGcY-0-e92ef69016407ffcd28bd24568834459)
续表
![img](https://epubservercos.yuewen.com/EB1063/26763832509462206/epubprivate/OEBPS/Images/txt002_15.jpg?sign=1739233394-K97vica95tSWr8pRJwmI2HQGQzE11uwB-0-7c2ab38c0010cb864c6155826f93db66)
另外,Kubernetes默认设置cgroup驱动(cgroupdriver)为“systemd”,而Docker服务的cgroup驱动默认值为“cgroupfs”,建议将其修改为“systemd”,与Kubernetes保持一致。这可以通过修改Docker服务的配置文件(默认为/etc/docker/daemon.json)进行设置:
![img](https://epubservercos.yuewen.com/EB1063/26763832509462206/epubprivate/OEBPS/Images/txt002_16.jpg?sign=1739233394-PSYGxzyeZY6zgXp4Qcb5HzsFotyJCxlr-0-5f52faa38b960731d9245dc93b3e5c67)
准备工作就绪之后,就可以运行kubeadm init命令,使用之前创建的配置文件一键安装Master节点(控制平面)了:
![img](https://epubservercos.yuewen.com/EB1063/26763832509462206/epubprivate/OEBPS/Images/txt002_17.jpg?sign=1739233394-PLhvvThb3mLwJSb9pJbOz38dK0dOiNxd-0-6e4555fd1e23d8fb66ede3edfccf2d92)
一切正常的话,控制台将输出如下内容:
![img](https://epubservercos.yuewen.com/EB1063/26763832509462206/epubprivate/OEBPS/Images/txt002_18.jpg?sign=1739233394-tAN5bpN3PDDpfk7Z7GgW0Sq7QnLYQPby-0-9b670e1b6d67ed402c1ca7aca5d3f09c)
![img](https://epubservercos.yuewen.com/EB1063/26763832509462206/epubprivate/OEBPS/Images/txt002_19.jpg?sign=1739233394-0mEk3vY6v23Irk0Jknh0oXElTAgjlbru-0-3c6ddc888bfbe1cbee801e3e06a68e19)
![img](https://epubservercos.yuewen.com/EB1063/26763832509462206/epubprivate/OEBPS/Images/txt002_20.jpg?sign=1739233394-u3KrLoONIlFnmgtAtUwSRInxI7vrFIZ5-0-144944f0f2b9452c424240be63224374)
看到“Your Kubernetes control-plane has initialized successfully!”的提示,就说明Master节点(控制平面)已经安装成功了。
接下来就可以通过kubectl命令行工具访问集群进行操作了。由于kubeadm默认使用CA证书,所以需要为kubectl配置证书才能访问Master。
按照安装成功的提示,非root用户可以将admin.conf配置文件复制到HOME目录的.kube子目录下,命令如下:
![img](https://epubservercos.yuewen.com/EB1063/26763832509462206/epubprivate/OEBPS/Images/txt002_21.jpg?sign=1739233394-gXbJ2JZ6TYRCxaY1JOzYf4bBRC04Imz4-0-b8ac857b04a2ca635db0a08d6d9e14de)
如果用户是root,则也可以通过设置环境变量KUBECONFIG完成kubectl的配置:
![img](https://epubservercos.yuewen.com/EB1063/26763832509462206/epubprivate/OEBPS/Images/txt002_22.jpg?sign=1739233394-vcK7AKhv7QhAh5JlezNhtwJQXQ5HfY51-0-7773644115638b389b1430a3146c3c64)
然后就可以使用kubectl命令行工具对Kubernetes集群进行访问和操作了。
例如查看命名空间kube-system中的ConfigMap列表:
![img](https://epubservercos.yuewen.com/EB1063/26763832509462206/epubprivate/OEBPS/Images/txt002_23.jpg?sign=1739233394-jLixlvgJvl3zH9WJ5YhFqTYaehEmTjS3-0-1de253d375df4993b0f9fa6bab8d50b5)
到此,Kubernetes的Master节点已经可以工作了,但在集群内还是没有可用的Worker Node,并缺乏容器网络的配置。
接下来安装Worker Node,需要用到kubeadm init命令运行完成后的最后几行提示信息,其中包含将节点加入集群的命令(kubeadm join)和所需的Token。