Pod

本文深入探讨了Kubernetes中的Pod,包括创建容器的详细过程、镜像分层、Pod创建流程和节点加入集群的步骤。此外,还讲解了Pod的探针类型、镜像拉取策略、重启策略、资源限制以及服务质量。文中还涉及了调度策略,如nodeSelector、nodeAffinity,以及Taints和tolerations的概念。另外,静态Pod、init容器的特性和用途也被提及。
摘要由CSDN通过智能技术生成

1、创建容器过程:

  • 获取镜像
  • 使用镜像创建容器
  • 分配文件系统,挂载一个读写层,在读写层加载镜像
  • 分配网络接口,让容器和宿主机通信
  • 容器获取ip地址
  • 执行容器命令
  • 反馈容器启动结果

2、镜像分层:

  • 加载宿主机内核
  • 获取发行版
  • 安装依赖
  • 容器层

3、创建pod流程:

  • 通过kubectl发起请求,
  • apiserver通过对应的kubeconfig进行认证,通过之后将yaml中的pod信息存入etcd,
  • Controller-manager通过apiserver的watch接口发现pod信息更新,执行该资源所依赖的拓扑结构整合,整合后将对应信息交给apiserver,再写入etcd中,此时pod可以被调度了,
  • schedule也通过apiserver的watch接口更新到pod可以被调度,分配给相应的节点,并将pod和对应节点绑定的信息交给apiserver,apiserver写到etcd中,然后将pod交给kubelet。
  • kubelet收到pod之后,调用cni接口给pod创建网络,调用cri去启动容器,调用csi进行存储卷挂载,
  • 网络、容器、存储创建完成后,pod创建完成,等业务进程启动时,pod创建成功。

4、工作节点加入集群的过程:

  • 在node上安装cni、kubelet、kube-proxy
  • 配置kubelet和kube-proxy启动参数,将master url指定为当前k8s集群master的地址,最后启动服务
  • 通过kubelet默认自动注册机制,新的master将会自动加入现有的k8s集群中
  • K8s master在接受新的worker的注册之后,会自动将其纳入当前集群的调度范围

 5、三种探针:

  • startupProbe:判断容器内进程是否已经启动,会先禁用其他探测,直到成功为止,将不在检测
  • livenessProbe: 探测容器是否存活(running状态),若探测失败,kubelet杀掉该容器,kubelet对应重启策略相应处理
  • readinessProbe:探测容器是否启动完成(ready状态),若探测失败,pod状态被修改,endpoint controller 将从service的endpoint中删除包含该容器的pod的endpoint(pod从endpoint中剔除)

 6、探测方式:

  • exec:相当于echo $? ,再容器内执行命令返回值为0,则容器健康
  • TCPSocket:相当于Telnet ip port ,tcp连接检查端口是否通
  • HTTPSocket:相当于curl ,通过应用程序暴露api接口地址检查程序是否正常,返回状态码(200-400)之间,容器健康

 7、镜像拉取策略 (imagePullPolicy):

  • ifnotpresent:默认值,镜像在宿主机上不存在时才拉取
  • Always:每次创建pod都会重新拉取一次镜像,标签为latest
  • never:pod永远不会主动拉取这个镜像
  • 注意:latest 标签的镜像默认为 Always ,生产环境中应该尽量避免使用 :latest 标签,而开发环境中可以借助 :latest 标签自动拉取最新的镜像。

 8、重启策略 (restartPolicy):

  • Always:终止退出,总是重启容器(RC和ds)
  • onFailure:容器异常退出(退出状态码非0)时,才重启容器(job)
  • never:容器终止退出,从不重启容器(job)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值