Kubernetes-in-action (十二)

这篇具有很好参考价值的文章主要介绍了Kubernetes-in-action (十二)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Kubernetes-in-action (十二)


资源列表

resource name usage note doc
Pod 实际应用run的地方,由至少一个容器组成 如果容器内进程启动失败,pod资源仍然存在 Kubernetes-in-action (一)
ReplicaSet 管理pod,弹性伸缩 只关心pod的数量,不关心pod的状态 Kubernetes-in-action (二)
Role/ClusterRole 创建角色并设置角色拥有的权限 Kubernetes-in-action (二)
Jobs 任务 :完成临时任务后销毁pod Kubernetes-in-action (二)
CronJobs 定时任务:完成后销毁 Kubernetes-in-action (二)
DaemonSet 守护进程集 :它不关心副本数量,只关心为每个符合的node都要建一个pod Kubernetes-in-action (二)
Service 将请求路由到一组pod中的随机(可设置规则)一个pod Kubernetes-in-action (三)
Endpoint service 通过 endpoint 资源和 pod 相连 Kubernetes-in-action (三)
Ingress 将内部服务对外开放 Kubernetes-in-action (三)
persistentVolume 数据卷资源 Kubernetes-in-action (四)
persistentVolumeClaim 数据卷声明资源,与PV/storeclass连用 Kubernetes-in-action (四)
storageClass 配置数据卷类型的资源 Kubernetes-in-action (四)
Secret 存储私密信息的资源 Kubernetes-in-action (五)
ConfigMap 存储一些pod会用的配置信息资源 Kubernetes-in-action (五)
Deployment 管理pod,会创建rs资源来管理pod Kubernetes-in-action (七)
StatefulSet 配置由状态的pod Kubernetes-in-action (七)
Node 集群节点资源
RoleBinding/ClusterRoleBinding 将角色绑定到某个serviceAmount Kubernetes-in-action (八)
ServiceAccount 配置集群中名称空间的用户 Kubernetes-in-action (八)
LimitRange 配置集群中资源定义的限制 Kubernetes-in-action (十)
ResourceQuota 限制命名空间中的可⽤资源总量 Kubernetes-in-action (十)
CustomResourceDefinitions 自定义资源类型 Kubernetes-in-action (十)
HorizontalpodAutoscaler pod⽔平扩容器 Kubernetes-in-action (十一)
CustomResourceDefinition 创建自定义的resource

场景应用

场景1:希望 Client Pod 在 Server Pod 后面启动

  • 做法1: 在client-pod中配置init container去调用 server pod, 直到 server pod启动。
# client yaml
apiVersion: v1
kind: Pod
metadata:
  name: fortune-client
spec:
  initContainers:
    - name: init
      image: busybox
      command:
    - sh
    - -c
    - 'while true; do echo "Waiting for fortune service to come up..."; wget http://fortune -q -T 1 -O /dev/null >/dev/null 2>/dev/null && break; sleep 1; done; echo "Service is up! Starting main container."'
  containers:
    - image: busybox
      name: main
      command:
    - sh
    - -c
    - 'echo "Main container started. Reading fortune very 10 seconds."; while true; do echo "-------------"; wget -q -O - http://fortune; sleep 10; done'
  • 做法2:使用钩子来检测 server pod是否启动,如果没有则等待。
    • 启动后(Post-start)钩⼦:在钩子运行完成前pod会一直处于 Pending,如果钩子失败会导致主容器运行失败
    • 停⽌前(Pre-stop)钩⼦:在应用停止前执行,不论是否成功都会关闭容器

钩子是针对容器而不是pod, 由于很难看见钩子的运行日志,所以可以将container的dir挂载到pod的dir,将日志输入其中。

apiVersion: v1
kind: Pod
metadata:
  name: pod-with-prestop-hook
spec:
  containers:
    - image: luksa/kubia
      name: kubia
      ports:
        - containerPort: 8080
          protocol: TCP
      lifecycle:
        postStart:
          exec:
            command:
              - sh
              - -c
              - "echo 'hook will fail with exit code 15'; sleep 5 ; exit 15"
        preStop:
          httpGet:
            port: 8080
            path: shutdown

pod关闭流程:执⾏停⽌前钩⼦ -> 向容器的主进程发送SIGTERM信号 -> 等待容器优雅地关闭或者等待终⽌宽限期超时 ->
如果容器主进程没有优雅地关闭,使⽤SIGKILL信号强制终⽌进.

终 ⽌ 宽 限 期 可 以 通 过 pod spec 中 的 spec.terminationGracePeriodPeriods字段来设置

场景2:如何正常处理pod关闭/启动是的流量

  • Pod 更新过程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oQ4Ejl5M-1678773521074)(null)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sLNHaoBn-1678773521084)(null)]文章来源地址https://www.toymoban.com/news/detail-413273.html

  • 做法:
    • 添加就绪探针,让容器在没有真的ready前不接收请求
    • 添加钩子让容器不会立即关闭,让容器有时间管理连接
    • 尽量在kube-proxy更新更新iptabls后关闭程序 [各种问题可能导致关闭程序在更新iptables之前,连接就会失败]

kube的管理

建议

  • 构建的容器镜像尽可能小,这样pull会快
  • 合理地给镜像打标签,正确地使⽤ImagePullPolicy: 如果pod意外重启了,并且使用了latest镜像,这可能不是你想要的
  • 使⽤多维度⽽不是单维度的标签 && 通过注解描述每个资源: 让使用人员对资源的归属和场景更清晰
  • 给进程终⽌提供更多的信息:以为终止并且没有错误信息是很痛苦的
  • 处理日志信息:将容器的日志信息存储node的某个path,这样会让你在找错误时更有帮助 | 使用ELK/EFK等监控工具亦可

到了这里,关于Kubernetes-in-action (十二)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Rx.NET in Action 第四章学习笔记

    《Rx.NET in Action》这一部共分八章,涵盖了Rx 关键模块——**Observable(可观察序列) 和 Observer(观察者)**的全部功能,以及如何创建它们、连接它们和控制它们之间的关系。 然后,您将学习如何使用强大的 Rx 处理器构建复杂的 Rx 管道。您将学习使用处理器查询 单个 Observable(可观

    2024年02月12日
    浏览(47)
  • Rx.NET in Action 第二章学习笔记

    本章节涵盖的内容: 不使用Rx的工作方式 向项目中添加Rx 创建你的第一个Rx应用程序 Rx 的目标是协调和统筹来自社交网络、传感器、用户界面事件等不同来源的基于事件的异步计算。例如,建筑物周围的监控摄像头和移动传感器会在有人靠近建筑物时触发,并从最近的摄像头

    2024年02月12日
    浏览(25)
  • Rx.NET in Action 第一章学习笔记

    什么是反应式程序?它们有什么用?使用反应式扩展(Rx)编程,会如何改变你编写代码的方式?在开始使用 Rx 之前应该做些什么?为什么 Rx 比传统的事件驱动编程更好? 这些都是我们将在前三章开始讨论的问题。 你将了解什么是反应式系统及反应式程序,以及为什么要关

    2024年02月13日
    浏览(32)
  • Rx.NET in Action 中文介绍 前言及序言

    目标 可选方式 Rx 处理器(Operator) 创建 Observable Creating Observables 直接创建 By explicit logic Create Defer 根据范围创建 By specification Range Repeat Generate Timer Interval Return 使用预设 Predefined primitives Throw Never Empty 从其他类型创建 From other types FromEventPattern FromEvent FromTask FromAsync 变换 Transform

    2024年02月13日
    浏览(38)
  • K8S in Action 读后感(概念简介)

    今天,大型单体应用正被逐渐拆分成小的、可独立运行的组件,我们称之为微服务。微服务彼此之间解耦,所以它们可以被独立开发、部署、升级、伸缩。这使得我们可以对每一个微服务实现快速迭代,并且迭代的速度可以和市场需求变化的速度保持一致。 但是,随着部署组

    2024年02月07日
    浏览(28)
  • Spring Security in Action 第三章 SpringSecurity管理用户

    本专栏将从基础开始,循序渐进,以实战为线索,逐步深入SpringSecurity相关知识相关知识,打造完整的SpringSecurity学习步骤,提升工程化编码能力和思维能力,写出高质量代码。希望大家都能够从中有所收获,也请大家多多支持。 专栏地址:SpringSecurity专栏 本文涉及的代码都已

    2024年02月07日
    浏览(31)
  • Rust in Action笔记 第四章生命周期、所有权、借用

    第四章用了一个行星通信的例子来阐述整个主题,主要角色有地面站(Ground station)、人造卫星(CubeSat),两者有不同的状态并且能互相发消息通信; Rust有类型安全(type safety)机制来检查函数的类型和返回值,如果一个自定义类型(用struct声明的)包含了非内置类型(如

    2024年02月09日
    浏览(29)
  • Machine Learning in Action: User Addition Prediction Challenge

    Contest type: Data mining, two classification. User addition prediction is a key step in analyzing user usage scenarios and predicting user growth, which is helpful for subsequent product and application iterative upgrades. The data set consists of about 620,000 training sets and 200,000 test sets, including 13 fields. In the preceding command, uuid is the u

    2024年02月13日
    浏览(27)
  • (二十二)Kubernetes系列之dashboard

    1.下载模板文件 wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml 修改service模板,新增type:NodePot和nodePort:30443 2.部署 kubectl apply -f recommended.yaml 3.查看pod和服务 kubectl get pods  -n kubernetes-dashboard 4.查看service kubectl get svc -n kubernetes-dashboard 5.访问路径查看是否

    2024年01月21日
    浏览(32)
  • A Closer Look at Invalid Action Masking in Policy Gradient Algorithms 论文阅读

    原文链接:http://arxiv.org/abs/2006.14171 这篇文章证明了无效动作掩蔽可以看作是在计算动作概率分布时应用状态相关的可微函数来产生行为策略。接下来,设计了实验来比较无效动作掩饰和无效动作惩罚的性能。 无效动作惩罚:这是一种常见的方法,对无效动作给予负奖励,以

    2024年03月14日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包