zoukankan      html  css  js  c++  java
  • Kubelet资源预留

    Kubelet Node Allocatable

    • Kubelet Node Allocatable用来为Kube组件和System进程预留资源,从而保证当节点出现满负荷时也能保证Kube和System进程有足够的资源。

    • 目前支持cpu, memory, ephemeral-storage三种资源预留。

    • Node Capacity是Node的所有硬件资源,kube-reserved是给kube组件预留的资源,system-reserved是给System进程预留的资源, eviction-threshold是kubelet eviction的阈值设定,allocatable才是真正scheduler调度Pod时的参考值(保证Node上所有Pods的request resource不超过Allocatable)。

    • Node Allocatable Resource = Node Capacity - Kube-reserved - system-reserved - eviction-threshold

    Kubernetes资源预留

    配置参数

    • --enforce-node-allocatable,默认为pods,要为kube组件和System进程预留资源,则需要设置为pods,kube-reserved,system-reserve

    • --cgroups-per-qos,Enabling QoS and Pod level cgroups,默认开启。开启后,kubelet会将管理所有workload Pods的cgroups。

    • --cgroup-driver,默认为cgroupfs,另一可选项为systemd。取决于容器运行时使用的cgroup driver,kubelet与其保持一致。比如你配置docker使用systemd cgroup driver,那么kubelet也需要配置--cgroup-driver=systemd

    • --kube-reserved,用于配置为kube组件(kubelet,kube-proxy,dockerd等)预留的资源量,比如--kube-reserved=cpu=1000m,memory=8Gi,ephemeral-storage=16Gi

    • --kube-reserved-cgroup,如果你设置了--kube-reserved,那么一定要设置对应的cgroup,并且该cgroup目录要事先创建好,否则kubelet将不会自动创建导致kubelet启动失败。比如设置为kube-reserved-cgroup=/kubelet.service 。如果不设置此项,上面的--kube-reserved也不会生效。

    • --system-reserved,用于配置为System进程预留的资源量,比如--system-reserved=cpu=500m,memory=4Gi,ephemeral-storage=4Gi

    • --system-reserved-cgroup,如果你设置了--system-reserved,那么一定要设置对应的cgroup,并且该cgroup目录要事先创建好,否则kubelet将不会自动创建导致kubelet启动失败。比如设置为system-reserved-cgroup=/system.slice。如果不设置此项的话,上面的--system-reserved也不会生效。

    • --eviction-hard,用来配置kubelet的hard eviction条件,只支持memory和ephemeral-storage两种不可压缩资源。当出现MemoryPressure时,Scheduler不会调度新的Best-Effort QoS Pods到此节点。当出现DiskPressure时,Scheduler不会调度任何新Pods到此节点。

    配置示例

    [Unit]
    Description=Kubernetes Kubelet
    Documentation=https://github.com/GoogleCloudPlatform/kubernetes
    After=docker.service
    Requires=docker.service
    
    [Service]
    WorkingDirectory=/var/lib/kubelet
    ExecStartPre=-/bin/mkdir -p /sys/fs/cgroup/cpuset/system.slice/kubelet.service /sys/fs/cgroup/hugetlb/system.slice/kubelet.service
    ExecStart=/opt/kubernetes/bin/kubelet 
      --eviction-hard=memory.available<1024Mi,nodefs.available<10%,nodefs.inodesFree<5% 
      --system-reserved=cpu=0.5,memory=1G 
      --kube-reserved=cpu=0.5,memory=1G 
      --kube-reserved-cgroup=/system.slice/kubelet.service 
      --system-reserved-cgroup=/system.slice 
      --enforce-node-allocatable=pods,kube-reserved,system-reserved 
      --address=10.1.61.189 
      --hostname-override=10.1.61.189 
      --cgroup-driver=cgroupfs 
      --pod-infra-container-image=hub.dz11.com/kubernetes/pause-amd64:3.0 
      --experimental-bootstrap-kubeconfig=/opt/kubernetes/cfg/bootstrap.kubeconfig 
      --kubeconfig=/opt/kubernetes/cfg/kubelet.kubeconfig 
      --cert-dir=/opt/kubernetes/ssl 
      --cluster-dns=10.1.61.136 
      --cluster-domain=wh01. 
      --hairpin-mode=promiscuous-bridge 
      --allow-privileged=true 
      --fail-swap-on=false 
      --serialize-image-pulls=false 
      --max-pods=60 
      --logtostderr=true 
      --v=2 
    Restart=on-failure
    RestartSec=5
    
    [Install]
    WantedBy=multi-user.target
    
    
  • 相关阅读:
    Netty学习笔记四:NIO实现群聊
    Netty学习三:NIO
    Netty学习二:IO模型 BIO
    Netty学习一:netty是什么
    idea远程debug
    filter,interceptor,controllerAdvice,aspect,controller执行顺序
    springboot使用多个@RestControllerAdvice时的拦截顺序
    记一次RestControllerAdvice无法拦截Filter内抛出异常
    SpringBoot声明式事务的简单运用
    mybatis plus 和PageHelper依赖冲突
  • 原文地址:https://www.cnblogs.com/breezey/p/9100331.html
Copyright © 2011-2022 走看看