Containers --- Environment Variables

版权声明:转载请注明出处 https://blog.csdn.net/Lee_Suoer/article/details/85309219

Kubernetes Container环境为容器提供了几个重要资源:

  • 文件系统,融合了image和一个或多个vulume。
  • 有关Container本身的信息。
  • 有关群集中其他对象的信息

Container 的主机名是运行Container的Pod的名称。它可以通过 libc中的hostname命令或 gethostname函数调用获得

Pod名称和命名空间可通过downloadAPI作为环境变量使用 

Pod定义中的用户定义环境变量也可用于Container,Docker镜像中静态指定的任何环境变量也是如此。

创建Container时运行的所有服务的列表可作为环境变量用于该Container。

RuntimeClass是一个alpha特点,用于选择容器运行的配置来运行pod容器。

必须采取一些额外的设置步骤才能使用RuntimeClass功能:

  1. 启用RuntimeClass功能(在apiservers和kubelets上,需要1.12+版本)
  2. 安装RuntimeClass CRD
  3. 在节点上配置CRI实现(运行时依赖)
  4. 创建相应的RuntimeClass资源

使用RuntimeClass选择的配置依赖于CRI实现。

kubernates在容器的生命周期中也提供了钩子(回调方法),在container的生命周期中基于事件响应来触发钩子,触发的时候就运行钩子里的代码。

容器暴露两种钩子

PostStart:容器创建完之后运行。不保证在容器ENTRYPOINT之前执行。不会传递参数

prepost:容器终止之前执行。调用容器删除之前必须完成,它是阻塞的。

钩子的实现:容器要访问一个钩子就要对他进行实现并且注册一个handler。hook handler有两种实现。

exec:执行命令

http:执行http请求

hook handler的执行:在生命周期中钩子要是被触发了,那么就执行里面的 hook handler

hook handler被同步调用执行。对于PostStart这个钩子来说,如果执行的时间太长那么容器就不会是running的状态了。对于prepost来说,要是执行的时间太长,超时了之后就会被强制关闭。PostStart 或者 prepost如果有一个失败了,那么就直接停止容器。

应尽量保持hook handlers是轻量级的

会多次调用hook知道他执行完成。但是大多数情况下都会调用一次,很少会多次调用。比如在发送钩子的时候kubelet重启了,那么重启之后可能会再发一次

猜你喜欢

转载自blog.csdn.net/Lee_Suoer/article/details/85309219