k8s实用知识点总结

1. 资源配额

1. 预留和限制的概念

  • 预留:即至少需要的资源,对应于requestsCpurequestsMemory
  • 资源限制:最大资源限制,对应于limitsCpulimitsMemory

注:这里提一下个人理解,对于上述2个参数刚接触的时候感觉理解了又不理解,不知道新人是不是也是这种感觉,后来接触多了,感觉这样理解会好一点:requestsXxx表示必须的资源,在K8S对Pod进行调度时,只有节点上的资源至少满足requestsXxx的值,那么这个Pod才有可能调度到这些满足需求的节点上,所以很多相关译文上将requestsXxx翻译为“预留XXX”很到位;而当Pod已经运行在某个节点上时,就没requestsXxx参数什么事了,最终该Pod可以获得宿主机多少资源取决自身,但不会超过limitsXxx限制的值。所以可以粗略地理解为requestsXxx是为了Pod调度,而limitsXxx是为了遏制Pod对宿主机资源的索取最大限度。K8S对于CPU资源管理的策略分为none(默认,通过CFS配额 cgroups-control groups)和static(为节点上具有某些特征的 pod 赋予增强的 CPU 亲和性和独占性,针对配置资源为整数型的POD)

2. 单位的含义

  • 内存:常用的单位为MiBGi,和常规单位的关系如下为:
1 MiB = 2^20 bytes = 1024 kibibytes = 1048576 bytes(以2为底数)
1 MB = 1000KB(以10为底数)
  • CPU:常用单位为毫核(mmilli),或者直接是核(没有单位,如1核直接表示为1),换算关系为:1个核=1000m,当然也可以使用占比来表示,如:1/4个核=0.25,半个核=0.5,1个整核=1。

注:在rancher中部署应用时,经常遇到deployment does not have minimum availability异常,此时适当调大资源限额可以解决大部分的问题,下面是Chart模板中常用的配置:

resources:
  limits:
    memory: {
   {
    .Values.resources.limits.memory }}
    cpu: {
   {
    .Values.resources.limits.cpu }}
  requests:
    memory: {
   {
    .Values.resources.requests.memory }}
    cpu: {
   {
    .Values.resources.requests.cpu }}

2. 关于探针

 K8S中的探针应该是必不可少的一部分,参照文档,理了理,探针主要分为2类:

  • liveness probe:存活探针,它可以决定何时重启容器,比如存活探针在应用运行过程中遇到死锁(应用确实是正在运行的,但无法获取结果),这种情况往往是由于代码中存在bug,尽管如此,但存活探针的存在可以让应用更加具有可用性;
  • readiness probe:就绪探针,它可以决定一个容器何时就绪,准备接受外部的流量。如果说某个Pod已经就绪表示该Pod中的所有容器都已经就绪,当一个Pod处于未就绪的状态,他将会从负载均衡中移除;

实际观测,只有当2类探针同时检测通过,Pod才算启动成功,下面是探针的配置方式:

  readinessProbe:
    enabled: true
    httpGet:
      path: "/healthcheck"
      port: 8080
    periodSeconds: 20
    initialDelaySeconds: 60
    failureThreshold: 3
  
  livenessProbe:
    enabled: true
    httpGet:
      path: "/healthcheck"
      port: 8080
    initialDelaySeconds: 180
    periodSeconds: 30
    failureThreshold: 3

实际开发中,发现后端的Server启动用这套探针没啥问题,但前端的Server(使用node)启动的过程非常不稳定,build和拉取依赖的过程耗时特别长,基本都会重启好几遍容器才能成功,我曾经试图去调节存活探针的initialDelaySeconds参数,但如果这个过程快的话我岂不是要浪费一些时间,最终发现调节失败的阈值failureThreshold会更加方便。

 具体探针的行为可以有如下的一些:

1.HTTP
java中探针往往都是通过调用类似于go的HTTP接口,示例:

    livenessProbe:
      httpGet:
        path: /healthz
        port: 8080
        httpHeaders:
        - name: Custom-Header
          value: Awesome
      initialDelaySeconds: 3
      periodSeconds: 3

2.具体指令
探针检测的具体行为可以自己定义,比如:

    livenessProbe:
      exec:
        command:
        - cat
        
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
k8s(Kubernetes)基础知识点通俗易懂的解释如下: Kubernetes是一种容器编排平台,用于管理和部署容器化应用程序。它提供了一种简单而强大的方式来自动化应用的调度、扩展和管理,使开发人员和运维人员能够以更高效的方式管理容器化应用。 在学习k8s基础知识之前,建议您具备一定的Linux基础和网络基础知识,并了解一些Docker和k8s相关的概念。例如,您可以先掌握一些关于容器的基本概念,比如什么是容器、容器镜像、容器编排等。此外,您还需要了解一些关于k8s的核心概念,比如Pod、Service、Deployment等。 Kubernetes中的Pod是最小的部署单元,它包含一个或多个容器,并共享存储、网络等资源。Pod可以被创建、启动、停止或调度,以确保容器应用程序的高可用性和弹性。 Service是一种抽象,用于将一组Pod暴露给其他应用程序或用户。它为Pod提供了一个稳定的网络地址,并负责负载均衡请求。 Deployment是一种资源对象,它定义了如何部署应用程序。通过Deployment,您可以指定要运行的Pod数量、容器的镜像、升级策略等。 除此之外,还有许多其他的k8s核心概念和功能,如Namespace、ReplicaSet、StatefulSet等,它们可以帮助您更好地管理和扩展容器化应用程序。 总之,k8s基础知识点涉及到了容器编排、Pod、Service、Deployment等核心概念。通过学习这些知识,您将能够更好地理解和使用Kubernetes平台来管理和部署容器化应用程序。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Prometheus+Grafana(Kubernetes)企业级监控](https://download.csdn.net/download/weixin_26833205/19732967)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [云计算虚拟化:k8s进阶-CRD开发基础](https://blog.csdn.net/dustzhu/article/details/112029190)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [视频教程-通俗易懂的消息中间件ActiveMQ教程(含配套资料)-Docker/K8S](https://blog.csdn.net/weixin_33500227/article/details/106513277)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值