在Master节点上执行以下命令以初始化Kubernetes管理节点:
该命令中各参数含义如下。
--apiserver-advertise-address:指定API Server监听的IP地址。如果没有设置,则将使用默认的网络接口。
--image-repository:指定镜像仓库地址。默认值为“registry.k8s.io”,但该仓库在中国无法访问,因此这里指定阿里云仓库。
--kubernetes-version:指定Kubernetes版本。
--pod-network-cidr:指定Pod网络的CIDR地址范围。
--service-cidr:指定Service网络的CIDR地址范围。
--cri-socket:指定kubelet连接容器运行时的UNIX套接字文件。
执行命令后,kubeadm会执行一系列任务,具体如下:
[preflight]:该阶段执行一系列检查,验证当前系统环境是否满足Kubernetes的安装要求,包括:
· CPU和内存是否满足最低要求。
· 网络是否正常。
· 操作系统版本是否满足要求。
· 容器运行时是否可以连接。
· 内核参数是否正确配置。
· 下载所需的容器镜像。
[certs]:生成Kubernetes组件所需的HTTPS证书和密钥,并将其存储到“/etc/kubernetes/pki”目录中。
[kubeconfig]:生成kubeconfig文件,其中包含API Server地址、客户端证书等信息,并将其存储在“/etc/kubernetes”目录中。
[kubelet-start]:生成kubelet配置文件“/var/lib/kubelet/config.yaml”并启动kubelet服务。
[control-plane]:为kube-apiserver、kube-controller-manager和kube-scheduler创建静态Pod资源文件,并将其存储到“/etc/kubernetes/manifests”目录中。
[etcd]:为etcd创建静态Pod资源文件,并将其存储在“/etc/kubernetes/manifests”目录中。
[wait-control-plane]:等待kubelet从目录“/etc/kubernetes/manifest”中以静态Pod的形式启动Master组件。
[apiclient]:检查Master组件是否健康。
[upload-config]:将kubeadm配置存储在ConfigMap对象中。
[kubelet]:将kubelet配置存储在ConfigMap对象中。
[upload-certs]:提示用户跳过证书上传。
[mark-control-plane]:给Master节点添加标签和污点。
[bootstrap-token]:生成引导令牌,供Node节点在加入集群时使用。
[kubelet-finalize]:更新kubelet配置文件(/etc/kubernetes/kubelet.conf)。
[addons]:安装CoreDNS和kube-proxy插件。
紧接着,输出初始化成功的信息:
根据上述提示,执行以下命令开始使用集群:
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
这些命令是将文件“/etc/kubernetes/admin.conf”复制到“$HOME/.kube/config”中,以便kubectl根据该配置文件连接和管理Kubernetes集群。