Kubernetes自测题(二)-资源对象部分

简介: Deployment简述 Kubernetes Deployment 升级过程?初始创建Deployment时,系统创建了一个ReplicaSet,并按用户的需求创建了对应数量的Pod副本。

Deployment

简述 Kubernetes Deployment 升级过程?

初始创建Deployment时,系统创建了一个ReplicaSet,并按用户的需求创建了对应数量的Pod副本。

当更新Deployment时,系统创建了一个新的ReplicaSet,并将其副本数量扩展到1,然后将旧ReplicaSet缩减1。

之后,系统继续按照相同的更新策略对新旧两个ReplicaSet进行逐个调整。

最后,新的ReplicaSet运行了对应个新版本Pod副本,旧的ReplicaSet副本数量则缩减为0。


简述 Kubernetes Deployment 升级策略?

在Deployment的定义中,可以通过spec.strategy指定Pod更新的策略,目前支持两种策略:Recreate(重建)和 RollingUpdate(滚动更新),默认值为RollingUpdate

  • Recreate:设置spec.strategy.type=Recreate,表示Deployment在更新Pod时,会先杀掉所有正在运行的Pod,然后创建新的Pod。
  • RollingUpdate:设置spec.strategy.type=RollingUpdate,表示Deployment会以滚动更新的方式来逐个更新Pod。

同时,可以通过设置spec.strategy.rollingUpdate下的两个参数(maxUnavailablemaxSurge)来控制滚动更新的过程。


升级策略为滚动更新,如何控制滚动更新过程?

可以通过下面的命令查看到更新时可以控制的参数:

kubectl explain deploy.spec.strategy.rollingUpdate

  • maxSurge: 此参数控制滚动更新过程,副本总数超过预期pod数量的上限。可以是百分比,也可以是具体的值,默认为1。(上述参数的作用就是在更新过程中,值若为3,那么不管三七二一,先运行三个pod,用于替换旧的pod,以此类推)
  • maxUnavailable: 此参数为控制滚动更新过程中,不可用的Pod的数量。(这个值和上面的值没有任何关系,举个例子:我有十个pod,但是在更新的过程中,我允许这十个pod中最多有三个不可用,那么就将这个参数的值设置为3,在更新的过程中,只要不可用的pod数量小于或等于3,那么更新过程就不会停止)。


DaemonSet

DaemonSet资源对象的特性?

DaemonSet这种资源对象会在每个k8s集群中的节点上运行,并且每个节点只能运行一个pod,这是它和deployment资源对象的最大也是唯一的区别。

所以,在其yaml文件中,不支持定义replicas,除此之外,与Deployment、RS等资源对象的写法相同。

它的一般使用场景如下:

  • 做每个节点的日志收集工作;
  • 监控每个节点的的运行状态;


Secret

简述 Kubernetes Secret 的作用 ?

Secret 对象:主要作用是保管私密数据,比如:密码、OAuth TokensSSH Keys等信息。

将这些私密信息放在 Secret 对象中比直接放在 Pod 或 Docker 镜像中更安全,也更便于使用和分发。

 

简述 Kubernetes Secret 有哪些使用方式?

创建完secret之后,可通过如下三种方式使用:

  • 在创建Pod时,通过为Pod指定Service Account来自动使用该Secret。
  • 通过挂载该Secret到Pod来使用它。
  • 在Docker镜像下载时使用,通过指定Pod的spc.ImagePullSecrets来引用它


Pod


简述Kubernetes Pod 如何实现对节点的资源控制?

Kubernetes集群里的节点提供的资源主要是计算资源,计算资源是可计量的能被申请、分配和使用的基础资源。

当前Kubernetes集群中的计算资源主要包括CPU、GPU及Memory。

CPU与Memory是被Pod使用的,因此在配置Pod时可以通过参数 CPU Request 及 Memory Request 为其中的每个容器指定所需使用的CPU与Memory量,Kubernetes 会根据 Request 的值去查找有足够资源的 Node 来调度此 Pod。

通常,一个程序所使用的CPU与Memory是一个动态的量,确切地说,是一个范围,跟它的负载密切相关:负载增加时,CPU和Memory的使用量也会增加。

简述Kubernetes Requests和Limits如何影响Pod的调度?

当一个Pod创建成功时,Kubernetes调度器(Scheduler)会为该Pod选择一个节点来执行。

对于每种计算资源(CPU和Memory)而言,每个节点都有一个能用于运行Pod的最大容量值。

调度器在调度时,首先要确保调度后该节点上所有Pod的CPU和内存的Requests总和,不超过该节点能提供给Pod使用的CPU和Memory的最大容量值

Kubernetes 集群外流量怎么访问Pod?

可以通过Service的NodePort方式访问,会在所有节点监听同一个端口,比如:30000,访问节点的流量会被重定向到对应的Service上面。

简述 Kubernetes 初始化容器(init container)?

init container的运行方式与应用容器不同,它们必须先于应用容器执行完成,当设置了多个init container时,将按顺序逐个运行,并且只有前一个init container运行成功后才能运行后一个init container

当所有init container都成功运行后,Kubernetes才会初始化Pod的各种信息,并开始创建和运行应用容器。


其他


简述Kubernetes Metric Service?

在Kubernetes从1.10版本后采用Metrics Server作为默认的性能数据采集和监控,主要用于提供核心指标(Core Metrics),包括Node、Pod的CPU和内存使用指标

对其他自定义指标(Custom Metrics)的监控则由Prometheus等组件来完成。

Ingress

浅述 Ingress

Ingress 实际上就是 Kubernetes 对“反向代理”的抽象。

目前,Ingress 只能工作在七层,而 Service 只能工作在四层。四层代理有个缺陷就是他只是工作在tcp/ip协议栈。如果外部请求是HTTPS的请求,Service是无法调度的。因此,当你想要在 Kubernetes 里为应用进行 TLS 配置等 HTTP 相关的操作时,都必须通过 Ingress 来进行。

当然,正如同很多负载均衡项目可以同时提供七层和四层代理一样,将来 Ingress 的进化中,也会加入四层代理的能力。这样,一个比较完善的“反向代理”机制就比较成熟了。而 Kubernetes 提出 Ingress 概念的原因其实也非常容易理解,有了 Ingress 这个抽象,用户就可以根据自己的需求来自由选择 Ingress Controller

比如,如果你的应用对代理服务的中断非常敏感,那么你就应该考虑选择类似于 Traefik 这样支持“热加载”的 Ingress Controller 实现。

Ingress Controller不是Controller Manager中的一部分,他只是一个或一组独立的Pod资源,他通常就是一个运行着有七层代理能力或调度能力的应用,比如:NGINX、HAproxy、Traefik、Envoy等


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
3月前
|
JSON 运维 Kubernetes
|
5月前
|
存储 Kubernetes 数据中心
在K8S中,同⼀个Pod内不同容器哪些资源是共用的,哪些资源是隔离的?
在K8S中,同⼀个Pod内不同容器哪些资源是共用的,哪些资源是隔离的?
|
5月前
|
边缘计算 人工智能 Kubernetes
边缘计算问题之理解 Kubernetes 节点资源的四层分配结构如何解决
边缘计算问题之理解 Kubernetes 节点资源的四层分配结构如何解决
42 1
|
5月前
|
Kubernetes Linux 调度
在k8S中,Pod如何实现对节点的资源控制?
在k8S中,Pod如何实现对节点的资源控制?
|
5月前
|
存储 Kubernetes API
|
5月前
|
Kubernetes 监控 API
在K8S中,RS资源如何实现升级和回滚?
在K8S中,RS资源如何实现升级和回滚?
|
5月前
|
Kubernetes 网络协议 应用服务中间件
在K8S中,SVC资源是否支持在K8S集群外部访问?
在K8S中,SVC资源是否支持在K8S集群外部访问?
|
5月前
|
Kubernetes Cloud Native 应用服务中间件
Kubernetes 自动伸缩策略:优化资源利用率
【8月更文第29天】在现代云原生环境中,应用的流量往往具有不可预测性。为了应对这种变化,Kubernetes 提供了多种自动伸缩机制来动态调整应用实例的数量和每个实例分配的资源。本文将深入探讨两种主要的自动伸缩工具:水平 Pod 自动伸缩器 (HPA) 和垂直 Pod 伸缩器 (VPA),并提供实际的应用示例。
143 0
|
5月前
|
Prometheus Kubernetes 监控
在K8S中,DaemonSet类型的资源特性有哪些?
在K8S中,DaemonSet类型的资源特性有哪些?
|
5月前
|
Kubernetes 调度 数据中心
在K8S中,Pod中关于资源有request和limit两个字段?这么设计的原因是什么?
在K8S中,Pod中关于资源有request和limit两个字段?这么设计的原因是什么?

热门文章

最新文章