[长期更新]kubeadm常见问题以及配置记录

Posted by 梁远鹏 on 2023-04-23 | 阅读 |,阅读约 3 分钟

TOC

说明

本文主要收集常见场景下 kubeadm 配置以及遇到的一些常见问题,欢迎对本文进行投稿你认为好的场景配置或问题.

Kind 是一个基于 Docker 来实现在容器内跑 kubernetes 的方案,其原理是在容器内使用 kubeadm 部署 kubernetes,我发布了一个同样是长期更新的专门记录 Kind 内容的博客,因此在这里的一些配置问题很可能已经出现在了用kind搭建k8s集群环境这篇文章,如果在本文没有找到你想要的内容可以去那篇文章试试运气,对信息碎片化感到抱歉 (:

如果在使用 registry.lank8s.cn 时有疑问或问题,欢迎在lank8s.cn 服务github.com/liangyuanpeng/lank8s.cn 进行交流.

官方文档

https://kubernetes.io/docs/reference/config-api/kubeadm-config.v1beta3/

注意: 如果是其他版本则将 v1beta3 修改为你希望的版本就可以了.

单独设置容器镜像registry时coredns镜像报错

官方文档说已经有所提及: 为了保持向后兼容,默认的 registry.k8s.io 和自定义的容器镜像仓库行为可能会有所不同,例如当镜像有子路径时如: registry.k8s.io/coredns/coredns:v1.11.1 在自定义容器镜像仓库时则会变成 registry.lank8s.cn/coredns:v1.11.1, 因此这就导致了 coredns 镜像只修改全局的容器镜像仓库时会无法使用,但 kubeadm 为 coredns 提供了imageRepository参数,因此在 kubeadm 配置文件当中为 coredns 指定以下容器镜像的 namespace 就可以了:

dns:
  imageRepository: registry.lank8s.cn/coredns

2024-01-09更新: registry.lank8s.cn 做了适配处理,默认将大于v1.7.1版本的 coredns 容器镜像请求解析成 coredns/coredns, 因此可以直接用一条 kubeadm 命令来初始化 kubernetes 集群了!

kubeadm init 初始化时希望使用我自定义的 kube-scheduler 容器镜像

基本上实现一个 kube-scheduler 插件去做一些自定义的调度需求是一件很常见的事情,例如需要区分 gpu 和 cpu 的机器资源,目前需要实现一些自定义的调度需求基本上就是基于 scheduling Framework 来实现,也可以直接基于 scheduler-plugins 来添加自己定义的插件,但最终都需要打包成一个包含了 kube-scheduler 和自定义插件功能的新的容器镜像,然后将原有的 kube-scheduler 替换成自定义的容器镜像.

那么在 kubeadm init 场景下如何方便的完成这一步替换 kube-scheduler 容器镜像的操作呢? kubeadm 本身已经通过 patch 的方式提供了支持.

apiVersion: kubeadm.k8s.io/v1beta3
kind: InitConfiguration
patches:
  directory: /etc/kubernetes/patches/

只需要在InitConfiguration的配置中指定patches.directory为 patch 文件的目录即可.

例如我配置的这个目录下就放置了我对 kube-schedulder 的 patch 文件:

kube-scheduler0+strategic.yaml

spec:
  containers:
  - name: kube-scheduler
    image: ghcr.io/liangyuanpeng/kube-scheduler:dev

文件的命名是有格式要求的:target[suffix][+patchtype].extension.

target是组件名称,可选项是: kube-apiserver、kube-controller-manager、kube-scheduler 以及etcd.

patchtype 是 patch 的方式,可选项是: merge和strategic, 默认是 strategic. 必须是 kubectl 支持的 patch.

最后的 extension 则是文件的格式,json 或者 yaml.

可参考官方文档 https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/control-plane-flags/#patches

参考文献

[1] https://v1-28.docs.kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-init/#custom-images

微信公众号

扫描下面的二维码关注我们的微信公众号,第一时间查看最新内容。同时也可以关注我的Github,看看我都在了解什么技术,在页面底部可以找到我的Github。

wechat-qrcode