深入Pod 创建Pod:配置文件详解
资源清单参考链接:https://juejin.cn/post/6844904078909128712
写个pod的yaml 文件
apiVersion: v1
kind: Pod
metadata:
name: my-pod
labels:
type: app
test: "1.0.0"
namespace: default
spec:
containers:
- name: nginx
image: nginx:1.7.9
imagePullPolicy: IfNotPresent
command:
- nginx
- -g
- 'daemon off;'
workingDir: /usr/share/nginx/html
ports:
- name: http
containerPort: 80
protocol: TCP
env:
- name: JVM_OPTS
value: '-Xms128m -Xmx128m'
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 200m
memory: 256Mi
restartPolicy: OnFailure
以下是对每个字段的解释:
apiVersion: 这个字段用来指定你要使用的 Kubernetes API 的版本。在这个例子中,你使用的是 v1 版本的 API。
kind: 这个字段用来指定你要创建的 Kubernetes 对象的类型。在这个例子中,你要创建的是一个 Pod。
metadata: 这个字段包含了一些元数据,比如 Pod 的名字、标签和命名空间。
spec: 这个字段定义了 Pod 的规格,比如包含的容器、重启策略等。
containers: 这个字段定义了 Pod 中包含的容器。每个容器都有一些字段,比如名字、镜像、命令等。
resources: 这个字段定义了每个容器的资源需求和限制。requests 定义了容器需要的最小资源,limits 定义了容器可以使用的最大资源。
restartPolicy: 这个字段定义了 Pod 中的容器在退出时应该如何重启。在这个例子中,如果容器失败,Kubernetes 将会尝试重新启动它。
深入Pod 探针:探针技术详解
重启,为啥能重启? 因为探针的存在
在 Kubernetes 中,Pod 的容器可以使用探针(Probes)来检查其运行状态。探针有三种类型:
Liveness Probe:用来检查容器是否还在运行。如果 Liveness Probe 失败,Kubernetes 会杀掉容器,然后根据其重启策略来处理。
Readiness Probe:用来检查容器是否已经准备好接受请求。如果 Readiness Probe 失败,Kubernetes 不会将流量转发到该Pod。
Startup Probe:用于检查容器应用程序是否已启动。如果设置了这个探针,其他探针将被禁用,直到这个探针成功为止。
每种探针的状态可以是成功(Success)、失败(Failure)或者未知(Unknown)。
Kubernetes 中的 Pod 容器可以使用三种类型的探针来检查其状态:Liveness Probe、Readiness Probe 和 Startup Probe。它们可以告诉 Kubernetes 容器是否还在运行,是否准备好接受请求,以及应用程序是否已启动。每种探针都有三种可能的状态:成功、失败和未知
Kubernetes 提供了三种方式来进行探测:HTTP GET、TCP Socket 和 Exec。HTTP GET 会向容器的指定路径发送 GET 请求,如果响应状态码在 200 到 399 之间,那就视为探测成功。TCP Socket 探测会试图在指定端口上打开一个 TCP 连接,如果连接成功,那就视为探测成功。Exec 探测则会在容器内执行一个指定的命令,如果命令的退出状态为 0,那就视为探测成功。
initialDelaySeconds: 容器启动后,等待多少秒开始进行健康检查。在这个例子中,容器启动后 60 秒开始健康检查。
timeoutSeconds: 健康检查请求的超时时间。在这个例子中,健康检查请求超过 2 秒没有响应,就被视为超时。
periodSeconds: 健康检查的频率。在这个例子中,每 5 秒进行一次健康检查。
successThreshold: 健康检查连续成功多少次后,容器被视为健康。在这个例子中,健康检查连续成功 1 次后,容器就被视为健康。
failureThreshold: 健康检查连续失败多少次后,容器被视为不健康。在这个例子中,健康检查连续失败 2 次后,容器就被视为不健康。