深入剖析k8s-Pod篇

为什么需要Pod?

  1. 进程是以进程组的方式组织在一起。
  2. 受限制容器的“单进程模型”, 成组调用没有被妥善处理(资源调用有限),使用资源囤积则导致复杂度上升。

在k8s项目中,Pod的实现需要使用一个中间容器——Infra容器,该容器永远是第一个被创建的容器,用户定义的其他容器则通过Join Network Namespace的方式与Infra容器关联在一起。
在这里插入图片描述

initContainer

Init Container容器会按顺序逐一启动,而直到它们启动并且退出了,用户容器才会启动

nodeselector

nodeselector:disktype: ssd

意味着这个Pod只能在携带disktype:ssd标签的节点上运行,否则调度失败

NodeName

一旦Pod的这个字段被赋值,K8s则认为这个Pod已经被调度

HostAliases

定义了Pod的host文件(比如/etc/hosts)里的内容

shareProcessNamespace

这个Pod里的容器要共享PID Namespace,Pod就是要让其中的容器尽可能多地共享Linux Namespace

HostNetwork, hostIPC, hostPID

待补充

Lifecycle

  • postStart: 在容器启动后立即执行一个指定操作。虽然在Docker ENTRYPOINT执行之后,但并不严格保证顺序。
  • preStop:容器被结束之前(比如收到了SIGKILL信号)执行是同步的。

Pod的生命周期

  • Pending:Pod的YAML文件已经提交给了k8s,API对象已经创建并保存到etcd中。但是Pod里的容器因为某种原因不能被顺利创建(比如:调度不成功)。
  • Running:
  • Succeeded:一段时间就退出的Pod,反馈任务执行的结果(运行一次性任务时最为常见)。
  • Failed:Pod里至少有一个容器以不正常的状态(非0的返回码)退出。查看Events和日志。
  • Unknown:异常状态,很有可能是Master和kubelet间的通信出了问题。

特殊的Volume

Secret

Pod想要访问的加密数据存放到etcd中,可以通过Pod的容器里挂载Volume的方式去访问Secret里保存的信息。

k create secret generic user --from-file=./username.txtk create secret generic pass --from-file=./password.txt

在这里插入图片描述
也可以使用Secret.yaml来进行生成。

apiVersion: v1
kind: Secret
metadata:name: mysecret
type: Opaque
data:username: YWRtaW4=password: MTIzNDU2

但Secret对象要求这些数据需要经过Base64进行转码,同时创建出来的Secret对象只有一个,在data中以key-value的形式保存。
在这里插入图片描述

ConfigMap

使用properties文件生成ConfigMap,与Secret区别在ConfigMap保存的是无须加密、应用所需的配置信息。
在这里插入图片描述

Downward API

让Pod里的容器能够直接获取这个Pod API对象本身的信息。比如可以获取Pod的Labels字段的值

注意

通过环境变量获取这些信息的方式不具备自动更新的能力,建议使用volume文件的方式获取这些消息。

ServiceAccountToken

是一种特殊的Secret对象,每一个Pod都已经自动声明了一个类型是Secret、名为default-token-xxxx的Volume,然后自动挂载在每一个容器的一个固定目录上。
在这里插入图片描述
考虑到自动挂载默认ServiceAccountToken的潜在风险,K8s允许设置默认不为Pod里的容器自动挂载Volume

容器健康检查和恢复机制

容器健康检查-liveness

apiVersion: v1
kind: Pod
metadata:name: test-liveness-execlabels:test: liveness
spec:containers:- name: livenessimage: busyboxargs:- /bin/sh- -c- touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600livenessProbe:exec:command:- cat- /tmp/healthyinitialDelaySeconds: 5periodSeconds: 5

也可以定义为发起HTTP或者TCP请求的方式。所以Pod其实可以暴露一个健康检查URL(/healthz)

恢复机制 restartPolicy

默认值为Always,Pod的恢复过程永远发生在当前节点上,而不会跑到别的节点上。

  • Always
  • OnFailure
  • Never:如果关心这个容器退出后的上下文环境,比如容器退出后的日志、文件和目录,就需要将restartPolicy设置为Never

PodPreset

Pod的annotation会表示该Pod被PodPreset改动过,并且修改对象只能是Pod。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/504645.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GO—函数

Go 语言支持普通函数、匿名函数和闭包,从设计上对函数进行了优化和改进,让函数使用起来更加方便。 Go 语言的函数属于“一等公民”(first-class),也就是说: 函数本身可以作为值进行传递。支持匿名函数和闭…

css【详解】—— 圣杯布局 vs 双飞翼布局 (含手写清除浮动 clearfix)

两者功能效果相同&#xff0c;实现方式不同 效果预览 两侧宽度固定&#xff0c;中间宽度自适应&#xff08;三栏布局&#xff09;中间部分优先渲染允许三列中的任意一列成为最高列 圣杯布局 通过左右栏填充容器的左右 padding 实现&#xff0c;更多细节详见注释。 <!DOCTYP…

零拷贝技术深入分析

一、零拷贝 在前面的文章“深浅拷贝、COW及零拷贝”中对零拷贝进行过分析&#xff0c;但没有举例子&#xff0c;也没有深入进行展开分析。本文将结合实际的例程对零拷贝进行更深入的分析和说明。 在传统的IO操作中&#xff0c;以文件通过网络传输为例 &#xff0c;一般会经历以…

挑战英伟达,需要另辟蹊径

Groq是近期AI芯片界的一个明星。原因是其号称比英伟达的GPU更快。3月2日&#xff0c;据报道&#xff0c;Groq收购了一家人工智能解决方案公司Definitive Intelligence。这是 Groq 在 2022 年收购高性能计算和人工智能基础设施解决方案公司 Maxeler Technologies 后的第二次收购…

【Kubernetes】k8s中容器之间、pod之间如何进行网络通信?

目录 PodKubernetes 网络模型同一Pod上的容器之间进行通信同一Node上的不同Pod之间进行通信不同Node上的Pod之间进行通信Service参考 Pod 首先来回顾一下Pod&#xff1a; Pod 是用于构建应用程序的最小可部署对象。单个 Pod 代表集群中正在运行的工作负载&#xff0c;并封装一…

【SpringBoot】测试单元使用多线程

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;SpringBoot ⛺️稳重求进&#xff0c;晒太阳 问题产生 今天学习了乐观锁&#xff0c;但在测试单元执行多线程的时候出现了问题&#xff0c;多线程并没有直接结果 在控制台没有任何输出…

CSRF跨站请求伪造(一)

★★免责声明★★ 文章中涉及的程序(方法)可能带有攻击性&#xff0c;仅供安全研究与学习之用&#xff0c;读者将信息做其他用途&#xff0c;由Ta承担全部法律及连带责任&#xff0c;文章作者不承担任何法律及连带责任。 1、CSRF简介 CSRF&#xff0c;全称&#xff1a;Cross-S…

小程序配置服务器域名的操作步骤(入门级)

将详细列出小程序配置服务器域名的操作步骤&#xff1a; 服务器选购推荐&#xff1a;腾讯云轻量服务器 点击以下任一云产品链接&#xff0c;跳转后登录&#xff0c;自动享有所有云产品优惠权益&#xff1a; 经过笔者亲测&#xff0c;强烈推荐腾讯云轻量应用服务器作为游戏服…

计算机网络_2.1 物理层概述

2.1 物理层概述 一、物理层要实现的功能二、物理层接口特性 B站 深入浅出计算机网络 2.1物理层概述 一、物理层要实现的功能 物理层要实现的功能就是在各种传输媒体上传输比特0和1&#xff0c;进而给上面的数据链路层提供透明传输比特流的服务。 数据链路层“看不见”&#xff…

ssm172旅行社管理系统的设计与实现

** &#x1f345;点赞收藏关注 → 私信领取本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345;** 一 、设计说明 1.1 研究…

RDD算子介绍

1. RDD算子 RDD算子也叫RDD方法&#xff0c;主要分为两大类&#xff1a;转换和行动。转换&#xff0c;即一个RDD转换为另一个RDD&#xff0c;是功能的转换与补充&#xff0c;比如map&#xff0c;flatMap。行动&#xff0c;则是触发任务的执行&#xff0c;比如collect。所谓算子…

python自动化之项目架构搭建与思路讲解(第二天)

1.自动化测试的概念 自动化测试是指使用自动化工具和脚本来执行测试任务,以验证软件或系统的正确性和稳定性。它可以提高测试的效率和准确性,并节约时间和成本。 2.自动化脚本编写的思路 xmind文档如有需要,可在资源里自行下载 3.项目代码工程创建 lib :基本代码库包 …