AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1089688
Accepted
rvs
rvs
Asked: 2022-01-12 08:35:08 +0800 CST2022-01-12 08:35:08 +0800 CST 2022-01-12 08:35:08 +0800 CST

在 kube-apiserver 上设置资源限制

  • 772

Pod和容器的资源管理描述了如何在 Kubernetes 中为“常规”Pod 设置资源请求和限制。是否有支持/推荐的方法来为 kube-apiserver 等控制平面组件设置这些限制?

我考虑的事情:

  • 修改静态清单,例如在/etc/kubernetes/manifests/kube-apiserver.yaml. 这可以工作,但它将kubeadm在下次升级期间被覆盖。
  • 设置kube-reserved或system-reserved标志。然而,这也可以再次起作用 - 它们仅在一个 ConfigMap 中定义(例如),并且在节点升级期间kubelet-config-1.21将被覆盖。kubeadm相同的限制将适用于控制平面节点和工作节点,我不希望这样。

我可以用 ansible 之类的东西来克服这个问题,但是 ansible 将与 kubeadm 一起“解决”,我想避免这种情况。

我想解决什么问题?

我有一个小型的 homelab kubernetes 安装。我希望允许在控制平面节点上运行常规 pod,但我希望能够为控制平面组件保留一些资源(主要是内存)。即,我希望能够设置requestskube-apiserver 之类的东西,以便调度程序知道不要将任何其他 pod(它们也将有适当requests的 )放在它的位置。

kubernetes
  • 1 1 个回答
  • 198 Views

1 个回答

  • Voted
  1. Best Answer
    Mikołaj Głodziak
    2022-01-14T00:30:58+08:002022-01-14T00:30:58+08:00

    是否有支持/推荐的方法来为 kube-apiserver 等控制平面组件设置这些限制?

    是的,您可以使用kubeadm init命令patches行标志。看看这个 github 页面。这个东西的文档也可能感兴趣。另请参阅官方文档:使用补丁自定义控制平面:

    Kubeadm 允许您将带有补丁文件的目录传递到 InitConfiguration 各个 JoinConfiguration 节点上。这些补丁可用作控制平面组件清单写入磁盘之前的最后一个自定义步骤。

    您可以将此文件传递给 kubeadm init with --config <YOUR CONFIG YAML>:

    apiVersion: kubeadm.k8s.io/v1beta3
    kind: InitConfiguration
    patches:
      directory: /home/user/somedir
    

    下面是如何在 kube-apiserver 上设置资源的示例:

    kube-apiserver.yaml在某个目录(例如)中创建/home/user/patches具有以下内容的文件:

    spec:
      containers:
        - name: kube-apiserver
          resources:
            requests:
              memory: 512Mi
            limits:
              memory: 1024Mi
    

    然后在节点升级期间每次使用 --patches 标志:使用kubeadm upgrade node --patches /home/user/patches/或kubeadm upgrade apply v1.22.4 --patches /home/user/patches/


    另一个选项是为控制平面组件提供额外的标志。为此,请查看本指南:使用 ClusterConfiguration 中的标志自定义控制平面:

    kubeadm ClusterConfiguration 对象为用户提供了一种方法来覆盖传递给控制平面组件(如 APIServer、ControllerManager、Scheduler 和 Etcd)的默认标志。组件使用以下结构定义:

    • apiServer
    • controllerManager
    • scheduler
    • etcd
    • 1

相关问题

  • Nvidia Config 后 Containerd 无法启动

  • 在使用 kubeadm 引导集群之前,如何修改 CoreDNS 配置映射?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve