1.5 集群初始化

使用Kubeadm安装集群时,需要一个Master节点初始化集群,然后加入其他节点即可。初始化集群时,可以直接使用Kubeadm命令进行初始化,也可以使用一个配置文件进行初始化,由于使用命令行的形式可能需要配置的字段比较多,因此本示例采用配置文件进行初始化。

注意

首先创建的是kubeadm配置文件,宿主机网段、podSubnet网段、serviceSubnet网段不能重复;其次,kubernetesVersion的值改为和读者环境Kubeadm版本一致,可以通过kubeadm version命令查询;最后,如果不是高可用集群,controlPlaneEndpoint需要改为Master节点的IP和6443端口,certSANs也需要改为Master节点的IP。

注意criSocket更改为自己的Runtime。

Master01节点创建kubeadm-config.yaml配置文件如下(也可以使用如下命令自动生成kubeadm config print init-defaults > kubeadm-config.yaml):

由于读者的版本和此示例可能不太一致,因此需要更新一下kubeadm配置文件(Master01节点操作):

     # kubeadm config migrate --old-config kubeadm-config.yaml --new-config new.yaml

将new.yaml文件复制到其他Master节点:

     # for i in k8s-master02 k8s-master03; do scp new.yaml $i:/root/; done

之后所有Master节点提前下载镜像,可以节省初始化时间(其他节点不需要更改任何配置,包括IP地址也不需要更改):

     # kubeadm config images pull --config /root/new.yaml

初始化Master01节点,初始化以后会在/etc/kubernetes目录下生成对应的证书和配置文件,之后其他Master节点加入Master01即可:

     # kubeadm init --config /root/new.yaml  --upload-certs

初始化成功以后,会产生Token值,用于其他节点加入时使用,因此要记录一下初始化成功生成的token值(令牌值):

如果初始化失败,需要检查各项配置是否正确,之后再次初始化,清理命令如下:

     kubeadm reset -f ; ipvsadm --clear  ; rm -rf ~/.kube

初始化成功后,Master01节点配置KUBECONFIG环境变量,之后Kubectl即可访问Kubernetes集群:

     # cat <<EOF >> /root/.bashrc
     export KUBECONFIG=/etc/kubernetes/admin.conf
     EOF
     # source /root/.bashrc

查看节点状态,如图1.3所示。

图1.3 查看节点信息

采用初始化安装方式,所有的系统组件均以容器的方式运行并且在kube-system命名空间内,此时可以查看Pod状态,如图1.4所示。

图1.4 查看Pod信息