发布网友 发布时间:2022-12-21 03:04
共1个回答
热心网友 时间:2023-10-02 12:12
kubeadm 已经GA , 作为官方的集群安装工具,准备写一个专题,大致分为5 部分,内容会比较多。
kubeadm 属于第二层,用于管理集群。
命令用法
参数说明
kubeadm init通过执行以下步骤来引导Kubernetes控制平面节点:
kubelet 使用4个文件的方式如下
如果未提供外部etcd,则会为etcd生成其他静态Pod清单。 Static Pod清单写入 /etc/kubernetes/manifests ; kubelet监视此目录以便Pods在启动时创建。
control plane 的pod 启动后,init 开始继续执行后面的流程。
通过 API server 安装 DNS 服务器 (CoreDNS) 和 kube-proxy 组件。在 Kubernetes 版本 1.11 和更高版本中,CoreDNS 是默认 DNS 服务器。要安装 kube-dns 而不是 CoreDNS,必须在 kubeadm 配置文件的ClusterConfiguration 字段中配置 DNS 附加组件(通过 kubeadm config 文件)。请注意,虽然已部署 DNS 服务器,但安装 CNI 前该POD 不会被调度到节点(可以理解为不回被实际部署,或不会生效)。
查看 kubeadm config print的帮助
打印默认的init 配置文件
打开 initconfig, 内容如下
上面的内容只包含额了最简话的InitConfiguration type 的内容,kubeadm 完整的内容包含5大部分,如下,每个type 之间,需要用yaml的 --- 文档隔离进行分离。
init-full-config.yaml 文件结构
想细的内容可以参阅 kubeadm api ,kube-proxy配置部分的内容细节在这里 KubeProxyConfiguration
比如我要修改kube-proxy的模式为IPVS 那么修改后的init-full-config.yaml 内容为如下
关于如何通过kubeadm 配置启用 IPVS 请 参阅
关于如何定制化 control plane 请 参阅
对于google 提供的镜像,在众所周知的原因下,无法访问。所以需要使用国内镜像或者自建的镜像仓库。 kubeadm 提供了参数,同事也支持修改 kubeadm config 文件来指定定制化的仓库
通过如下命令,可以查看和拉取 init 所需的镜像。
kubelet 默认使用 docker 作为runtime 并使用内建的 dockershim 进行交互。
其他的runtime包括:
安装文档 CRI installation instructions
根据安装文档安装好runtime后,需要对kubeadm 和kubelet 做如下配置
你也可以通过kubeadm init/reset 的 --cri-socket 参数来是先同样的事情。
与其像 kubeadm 基础教程 中那样,将从 kubeadm init 获得的令牌复制到每个节点,不如并行化令牌分发,以便更轻松地实现自动化。要实现此自动化,您必须知道控制平面节点在启动后将具有的 IP 地址。
步骤
集群启动之后,可以通过 /etc/kubernetes/admin.conf 中的凭证来和集群通信。
参考资料
Automated High Availability in kubeadm v1.15: Batteries Included But Swappable