![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=1739295180-0iD5VhJzbg6hfVykcfsOzSODQISx8B1N-0-51c3069e45f277a5ea93fb1dc5997719)
续表
![img](https://epubservercos.yuewen.com/EB1063/26763832509462206/epubprivate/OEBPS/Images/txt002_15.jpg?sign=1739295180-ujALiFG2v3BbF3JrLkz7CBpP1nmSfi2i-0-32e82f775a7a423efeb7124525fe8960)
另外,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=1739295180-1RTu89OLGHCJdhBCcMtjXvnIKPN1ZTaV-0-2bb8d5c0f673f16abf37f083be01f82f)
准备工作就绪之后,就可以运行kubeadm init命令,使用之前创建的配置文件一键安装Master节点(控制平面)了:
![img](https://epubservercos.yuewen.com/EB1063/26763832509462206/epubprivate/OEBPS/Images/txt002_17.jpg?sign=1739295180-9tXH7nVc1m3ginxwqwOxelbMohMdMjTK-0-90e58b30a6e0172838a095269a5daeb9)
一切正常的话,控制台将输出如下内容:
![img](https://epubservercos.yuewen.com/EB1063/26763832509462206/epubprivate/OEBPS/Images/txt002_18.jpg?sign=1739295180-P4S6mYILFKG9LfO38vowAknoJSTqATzG-0-352f63a8d0e7fa7f81b00cb16b116415)
![img](https://epubservercos.yuewen.com/EB1063/26763832509462206/epubprivate/OEBPS/Images/txt002_19.jpg?sign=1739295180-lbPFNeQFmsoxbEOqd15ygX3XFtWpBcAi-0-ccd4f5f35151c8d4d8a08947c7d627dd)
![img](https://epubservercos.yuewen.com/EB1063/26763832509462206/epubprivate/OEBPS/Images/txt002_20.jpg?sign=1739295180-l56R47ildRbtI3LNYIJwlkSV4RyegA5t-0-7134b0dcd96f25686f1735de9cb75dd5)
看到“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=1739295180-3F3TMXencxy8DYBOedJ6Ra4XQOBTgHhV-0-dd36e6fcdc30f06496fe3ca2bb6a1143)
如果用户是root,则也可以通过设置环境变量KUBECONFIG完成kubectl的配置:
![img](https://epubservercos.yuewen.com/EB1063/26763832509462206/epubprivate/OEBPS/Images/txt002_22.jpg?sign=1739295180-KvXfzT8QzN3mC8P2qVGnxPPGmVsMqkwC-0-2ff684b2b019712c95ad960131d3ff42)
然后就可以使用kubectl命令行工具对Kubernetes集群进行访问和操作了。
例如查看命名空间kube-system中的ConfigMap列表:
![img](https://epubservercos.yuewen.com/EB1063/26763832509462206/epubprivate/OEBPS/Images/txt002_23.jpg?sign=1739295180-F02DbpQbGfmvm1UF1iNh2NyUPbFNoezS-0-69f1d52002af692c69d9c82317c2c31f)
到此,Kubernetes的Master节点已经可以工作了,但在集群内还是没有可用的Worker Node,并缺乏容器网络的配置。
接下来安装Worker Node,需要用到kubeadm init命令运行完成后的最后几行提示信息,其中包含将节点加入集群的命令(kubeadm join)和所需的Token。