kubernetets容器资源限制
Kubernetes采用request和limit两种限制类型来对资源进行分配
request(需求资源):即运行Pod的节点必须满足运行Pod的最基本需求才能运行Pod
limit(资源限额):即运行Pod期间,可能内存使用量会增加,可以在yaml文件中设定最多能使用多少内存配置资源限额
资源类型:
CPU的单位是核心数,内存的单位是字节;
一个容器申请0.5个CPU,就相当于申请1个CPU的一半,你也可以加个后缀m表示千分之一的概念;比如说100m的CPU,100豪的CPU和0.1个CPU是一样的
内存单位:
K、M、G、T、P、E #通常以1000为换算标准
Ki、Mi、Gi、Ti、Pi、Ei #通常以1024为换算标准
##内存限制示例
如果容器超过设定的内存限制,则会被终止;如果可重新启动,则与所有其他类型的运行时故障一样,kubelet将重新启动它;如果一个容器超过其内存请求,那么当节点内存不足时,它的Pod可能被逐出
##cpu限制示例
##调度失败是因为申请的CPU资源超出集群节点所能提供的资源;但CPU使用率过高,不会被杀死pod
##为namespace设置资源限制
##LimitRange在namespace中施加的最小和最大内存限制只有在创建和更新Pod时才会被应用,改变LimitRange不会对之前创建的Pod造成影响
##为namespace设置资源配额
##命名空间下的资源超出配额后将不能再运行pod
##以上创建的ResourceQuota对象将在default命名空间中添加以下限制:每个容器必须设置内存需求(memory request)、内存限额(memory limit)、cpu需求(cpu request)和cpu限额(cpu limit)
##为Namespace配置Pod配额
##设置Pod配额以限制可以在namespace中运行的Pod数量
kubernetes资源监控
Metrics-Server
Metrics-Server是集群核心监控数据的聚合器,用来替换之前的heapster
容器相关的Metrics主要来自于kubelet内置的cAdvisor服务,有了Metrics-Server之后,用户就可以通过标准的Kubernetes API来访问到这些监控数据
Metrics API只可以查询当前的度量数据,并不保存历史数据;Metrics API URI为/apis/metrics.k8s.io/,在k8s.io/metrics维护;必须部署metrics-server才能使用该API,metrics-server通过调用Kubelet Summary API获取数据
Metrics Server并不是kube-apiserver的一部分,而是通过Aggregator这种插件机制,在独立部署的情况下同kube-apiserver一起统一对外服务的
kube-aggregator其实就是一个根据URL选择具体的API后端的代理服务器
Metrics-server属于Core metrics(核心指标),提供API metrics.k8s.io,仅提供Node和Pod的CPU和内存使用情况,而其他Custom Metrics(自定义指标)由Prometheus等组件来完成
资源下载:https://github.com/kubernetes-incubator/metrics-server
Metrics-server部署:
##下载资源文件
##准备资源文件中所需镜像并上传至私有仓库
##更改资源文件中的镜像指向私有仓库后应用,此时出现以上错误
##由于Pod需要监听1000以下的端口时需要root权限,则修改资源文件中的容器使用端口号
##重新应用文件又有新的X509证书类错误
##启用集群全部节点的TLS Bootstrap证书签发,并重启kubelet服务
##签发所有节点的证书
##以上设置完成后,metrics-server的pod即可成功就绪并运行
Metric Server支持一个参数--kubelet-insecure-tls,可以跳过证书检查,然而官方也明确了这种方式不推荐生产使用
至此Metrics-server即部署完成,测试其监控效果
Dashboard
Dashboard可以给用户提供一个可视化的Web界面来查看当前集群的各种信息;用户可以用Kubernetes Dashboard部署容器化的应用、监控应用的状态、执行故障排查任务以及管理Kubernetes各种资源
网址:https://github.com/kubernetes/dashboard
下载部署文件:https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml
##准备镜像
##应用资源文件