2.Pod

Pod介绍

Pod是Kubernetes创建或部署的最小/最简单的基本单位,一个Pod代表集群上正在运行的一个进程。

一个Pod封装一个应用容器(也可以有多个容器),存储资源、一个独立的网络IP以及管理控制容器运行方式的策略选项。Pod代表部署的一个单位:Kubernetes中单个应用的实例,它可能由单个容器或多个容器共享组成的资源。

Docker是Kubernetes Pod中最常见的runtime ,Pods也支持其他容器runtimes。

Runtime(容器运行时)发展迅速,种类也日渐丰富:Docker、rkt、containerd、cri-o、Kata、gVisor。

官网地址

https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#pod-v1-core

[root@master pod]# kubectl create -f pod.yaml

pod/pod-example created

[root@master pod]# kubectl describe pod pod-example

[root@master pod]# kubectl logs -f pod-example

Hello World

[root@master pod]# kubectl get pod

NAME          READY  STATUS            RESTARTS  AGE

pod-example  0/1    CrashLoopBackOff  5          6m13s

[root@master pod]# kubectl delete -f pod.yaml

pod "pod-example" deleted

Pod Hook

Kubernetes 为我们的容器提供了生命周期钩子的,就是我们说的Pod Hook,Pod Hook 是由 kubelet 发起的,当容器中的进程启动前或者容器中的进程终止之前运行,这是包含在容器的生命周期之中。我们可以同时为 Pod 中的所有容器都配置 hook。

Kubernetes 为我们提供了两种钩子函数:

PostStart:这个钩子在容器创建后立即执行。但是,并不能保证钩子将在容器ENTRYPOINT之前运行,因为没有参数传递给处理程序。主要用于资源部署、环境准备等。不过需要注意的是如果钩子花费太长时间以至于不能运行或者挂起, 容器将不能达到running状态。

apiVersion: v1

kind: Pod

metadata:

  name: hook-demo1

spec:

  containers:

  - name: hook-demo1

    image: nginx

    lifecycle:

      postStart:

        exec:

          command: ["/bin/sh", "-c", "echo Hello from the postStart handler > /usr/share/message"]

PreStop:这个钩子在容器终止之前立即被调用。它是阻塞的,意味着它是同步的, 所以它必须在删除容器的调用发出之前完成。主要用于优雅关闭应用程序、通知其他系统等。如果钩子在执行期间挂起, Pod阶段将停留在running状态并且永不会达到failed状态。

eureka下线案例参考下面

https://i4t.com/4424.html

nginx优雅退出

apiVersion: v1

kind: Pod

metadata:

  name: hook-demo2

spec:

  containers:

  - name: hook-demo2

    image: nginx

    lifecycle:

      preStop:

        exec:

          command: ["/usr/sbin/nginx","-s","quit"]

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容