kubeadm初始化集群的工作流程

kubeadm init的工作流程

1. 检查环境

当你执行 kubeadm init 指令后,kubeadm 首先要做的,是一系列的检查工作,以确定这台机器可以用来部署 Kubernetes。
检查的内容大致有如下:
Linux 内核的版本必须是否是 3.10 以上?
Linux Cgroups 模块是否可用?
机器的 hostname 是否标准?在 Kubernetes 项目里,机器的名字以及一切存储在 Etcd
中的 API 对象,都必须使用标准的 DNS 命名(RFC 1123)。
用户安装的 kubeadm 和 kubelet 的版本是否匹配?
机器上是不是已经安装了 Kubernetes 的二进制文件?
Kubernetes 的工作端口 10250/10251/10252 端口是不是已经被占用?
ip、mount 等 Linux 指令是否存在?
Docker 是否已经安装

2. 生成证书

Kubernetes 对外提供服务时,除非专门开启“不安全模式”,否则都要通过 HTTPS 才能
访问 kube-apiserver。这就需要为 Kubernetes 集群配置好证书文件。
kubeadm 为 Kubernetes 项目生成的证书文件都放在 Master 节点的
/etc/kubernetes/pki 目录下。在这个目录下,最主要的证书文件是 ca.crt 和对应的私钥
ca.key。
此外,用户使用 kubectl 获取容器日志等 streaming 操作时,需要通过 kube-apiserver
向 kubelet 发起请求,这个连接也必须是安全的。kubeadm 为这一步生成的是
apiserver-kubelet-client.crt 文件,对应的私钥是 apiserver-kubelet-client.key。
除此之外,Kubernetes 集群中还有 Aggregate APIServer 等特性,也需要用到专门的证
书,这里我就不再一一列举了。需要指出的是,你可以选择不让 kubeadm 为你生成这些
证书,而是拷贝现有的证书到如下证书的目录里:
 复制代码
1 /etc/kubernetes/pki/ca.{crt,key}
这时,kubeadm 就会跳过证书生成的步骤,把它完全交给用户处理。

3. 生成配置文件

证书生成后,kubeadm 接下来会为其他组件生成访问 kube-apiserver 所需的配置文
件。这些文件的路径是:/etc/kubernetes/xxx.conf:

1 ls /etc/kubernetes/
2 admin.conf controller-manager.conf kubelet.conf scheduler.conf

这些文件里面记录的是,当前这个 Master 节点的服务器地址、监听端口、证书目录等信
息。这样,对应的客户端(比如 scheduler,kubelet 等),可以直接加载相应的文件,使
用里面的信息与 kube-apiserver 建立安全连接。
接下来,kubeadm 会为 Master 组件生成 Pod 配置文件。我已经在上一篇文章中和你介
绍过 Kubernetes 有三个 Master 组件 kube-apiserver、kube-controller-manager、
kube-scheduler,而它们都会被使用 Pod 的方式部署起来。
你可能会有些疑问:这时,Kubernetes 集群尚不存在,难道 kubeadm 会直接执行
docker run 来启动这些容器吗?
当然不是。
在 Kubernetes 中,有一种特殊的容器启动方法叫做“Static Pod”。它允许你把要部署的
Pod 的 YAML 文件放在一个指定的目录里。这样,当这台机器上的 kubelet 启动时,它会
自动检查这个目录,加载所有的 Pod YAML 文件,然后在这台机器上启动它们。
从这一点也可以看出,kubelet 在 Kubernetes 项目中的地位非常高,在设计上它就是一个
完全独立的

### 配置 kubeadm 使用阿里云容器镜像服务 为了使 kubeadm 能够从阿里云容器镜像服务拉取 Kubernetes 初始化所需镜像,需设置 `kubeadm` 的配置文件来指定使用阿里云的镜像库地址。具体操作如下: #### 修改 kubeadm 配置文件 创建或编辑 `kubeadm-config.yaml` 文件,添加或更新 imageRepository 字段指向阿里云官方提供的镜像仓库。 ```yaml apiVersion: kubeadm.k8s.io/v1beta3 kind: ClusterConfiguration imageRepository: registry.aliyuncs.com/google_containers controlPlaneEndpoint: "LOAD_BALANCER_DNS:LOAD_BALANCER_PORT" networking: podSubnet: "192.168.0.0/16" ``` 上述配置中的 `registry.aliyuncs.com/google_containers` 即为阿里云提供的 Kubernetes 官方镜像路径[^4]。 #### 执行 Master 初始化命令 完成配置文件修改后,执行初始化命令时带上自定义配置文件参数以及忽略预检错误选项: ```bash sudo kubeadm init --config=kubeadm-config.yaml --ignore-preflight-errors=all ``` 这一步骤确保即使遇到一些非致命性的环境差异也能顺利完成安装过程[^2]。 #### 设置集群访问凭证 初始化成功之后,按照提示将管理员账户加入集群上下文中以便后续管理操作: ```bash mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config ``` 至此,已完成基于阿里云镜像源的 kubernetes 主节点搭建工作。对于 Worker 节点,则继续遵循标准流程将其加入现有集群中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kjkdd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值